{-# OPTIONS --without-K --safe #-}
module Prelude.Char where

open import Agda.Builtin.Char as C public
  using (Char)

open import Agda.Builtin.Nat
open import Prelude.Maybe
open import Prelude.Bool
open import Prelude.Nat
open import Prelude.List

toUpper toLower : Char → Char
toUpper = C.primToUpper
toLower = C.primToLower

toNat : Char → Maybe Nat
toNat c = let n = C.primCharToNat c
           in if (47 <ᵇ n) ∧ (n <ᵇ 58) then
                just (n ∸ 48)
              else
                nothing

fromNat : Nat → Maybe Char
fromNat n = if (0 ≤? n) ∧ (n <ᵇ 10) then
              just (C.primNatToChar (n + 48))
            else
              nothing

lenLeadingNat : List Char → Nat
lenLeadingNat [] = 0
lenLeadingNat (x ∷ xs) = if C.primIsDigit x then
                           suc (lenLeadingNat xs)
                         else 0