-- #hide
module Data.Time.Calendar.Private where import Data.Fixed
type NumericPadOption = Maybe Char
pad1
::
NumericPadOption
->
String
->
String
pad1
(
Just
c
)
s
=
c
:
s
pad1
_
s
=
s
padN
::
Int
->
Char
->
String
->
String
padN
i
_
s
|
i
<=
0
=
s
padN
i
c
s
= (
replicate
i
c
)
++
s
show2Fixed
::
NumericPadOption
->
Pico
->
String
show2Fixed
opt
x
|
x
<
10
=
pad1
opt
(
showFixed
True
x
)
show2Fixed
_
x
=
showFixed
True
x
showPaddedMin
::
(Num t,Ord t,Show t) =>
Int
->
NumericPadOption
->
t
->
String
showPaddedMin
_
Nothing
i
=
show
i
showPaddedMin
pl
opt
i
|
i
<
0
=
'-'
:
(
showPaddedMin
pl
opt
(
negate
i
))
showPaddedMin
pl
(
Just
c
)
i
= let
s
=
show
i
in
padN
(
pl
-
(
length
s
))
c
s
show2
::
(Num t,Ord t,Show t) =>
NumericPadOption
->
t
->
String
show2
=
showPaddedMin
2
show3
::
(Num t,Ord t,Show t) =>
NumericPadOption
->
t
->
String
show3
=
showPaddedMin
3
show4
::
(Num t,Ord t,Show t) =>
NumericPadOption
->
t
->
String
show4
=
showPaddedMin
4
mod100
::
(Integral i) =>
i
->
i
mod100
x
=
mod
x
100
div100
::
(Integral i) =>
i
->
i
div100
x
=
div
x
100
clip
::
(Ord t) =>
t
->
t
->
t
->
t
clip
a
_
x
|
x
<
a
=
a
clip
_
b
x
|
x
>
b
=
b
clip
_ _
x
=
x
clipValid
::
(Ord t) =>
t
->
t
->
t
->
Maybe
t
clipValid
a
_
x
|
x
<
a
=
Nothing
clipValid
_
b
x
|
x
>
b
=
Nothing
clipValid
_ _
x
=
Just
x