This repository has been archived by the owner on Aug 17, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 11
/
lualibs-boolean.lua
69 lines (62 loc) · 1.81 KB
/
lualibs-boolean.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
if not modules then modules = { } end modules ['l-boolean'] = {
version = 1.001,
comment = "companion to luat-lib.mkiv",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "see context related readme files"
}
local type, tonumber = type, tonumber
boolean = boolean or { }
local boolean = boolean
function boolean.tonumber(b)
if b then return 1 else return 0 end -- test and return or return
end
function toboolean(str,tolerant) -- global
if str == nil then
return false
elseif str == false then
return false
elseif str == true then
return true
elseif str == "true" then
return true
elseif str == "false" then
return false
elseif not tolerant then
return false
elseif str == 0 then
return false
elseif (tonumber(str) or 0) > 0 then
return true
else
return str == "yes" or str == "on" or str == "t"
end
end
string.toboolean = toboolean
function string.booleanstring(str)
if str == "0" then
return false
elseif str == "1" then
return true
elseif str == "" then
return false
elseif str == "false" then
return false
elseif str == "true" then
return true
elseif (tonumber(str) or 0) > 0 then
return true
else
return str == "yes" or str == "on" or str == "t"
end
end
function string.is_boolean(str,default,strict)
if type(str) == "string" then
if str == "true" or str == "yes" or str == "on" or str == "t" or (not strict and str == "1") then
return true
elseif str == "false" or str == "no" or str == "off" or str == "f" or (not strict and str == "0") then
return false
end
end
return default
end