l-boolean.lua /size: 1850 b    last modification: 2020-07-01 14:35
1
if
not
modules
then
modules
=
{
}
end
modules
[
'
l-boolean
'
]
=
{
2
version
=
1
.
001
,
3
comment
=
"
companion to luat-lib.mkiv
"
,
4
author
=
"
Hans Hagen, PRAGMA-ADE, Hasselt NL
"
,
5
copyright
=
"
PRAGMA ADE / ConTeXt Development Team
"
,
6
license
=
"
see context related readme files
"
7
}
8 9
local
type
,
tonumber
=
type
,
tonumber
10 11
boolean
=
boolean
or
{
}
12
local
boolean
=
boolean
13 14
function
boolean
.
tonumber
(
b
)
15
if
b
then
return
1
else
return
0
end
-- test and return or return
16
end
17 18
function
toboolean
(
str
,
tolerant
)
-- global
19
if
str
=
=
nil
then
20
return
false
21
elseif
str
=
=
false
then
22
return
false
23
elseif
str
=
=
true
then
24
return
true
25
elseif
str
=
=
"
true
"
then
26
return
true
27
elseif
str
=
=
"
false
"
then
28
return
false
29
elseif
not
tolerant
then
30
return
false
31
elseif
str
=
=
0
then
32
return
false
33
elseif
(
tonumber
(
str
)
or
0
)
>
0
then
34
return
true
35
else
36
return
str
=
=
"
yes
"
or
str
=
=
"
on
"
or
str
=
=
"
t
"
37
end
38
end
39 40
string
.
toboolean
=
toboolean
41 42
function
string
.
booleanstring
(
str
)
43
if
str
=
=
"
0
"
then
44
return
false
45
elseif
str
=
=
"
1
"
then
46
return
true
47
elseif
str
=
=
"
"
then
48
return
false
49
elseif
str
=
=
"
false
"
then
50
return
false
51
elseif
str
=
=
"
true
"
then
52
return
true
53
elseif
(
tonumber
(
str
)
or
0
)
>
0
then
54
return
true
55
else
56
return
str
=
=
"
yes
"
or
str
=
=
"
on
"
or
str
=
=
"
t
"
57
end
58
end
59 60
function
string
.
is_boolean
(
str
,
default
,
strict
)
61
if
type
(
str
)
=
=
"
string
"
then
62
if
str
=
=
"
true
"
or
str
=
=
"
yes
"
or
str
=
=
"
on
"
or
str
=
=
"
t
"
or
(
not
strict
and
str
=
=
"
1
"
)
then
63
return
true
64
elseif
str
=
=
"
false
"
or
str
=
=
"
no
"
or
str
=
=
"
off
"
or
str
=
=
"
f
"
or
(
not
strict
and
str
=
=
"
0
"
)
then
65
return
false
66
end
67
end
68
return
default
69
end
70