summaryrefslogtreecommitdiff
path: root/tex/context/base/l-boolean.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2012-10-02 18:00:18 +0300
committerMarius <mariausol@gmail.com>2012-10-02 18:00:18 +0300
commitb26e16e698890ebcca73267f61b7d935ee804747 (patch)
tree2b943c92c751f686f9906e6900f115cd52df7c80 /tex/context/base/l-boolean.lua
parent8ae17f2c95dc1d7a5595f9f2d8ec91e61cd37e28 (diff)
downloadcontext-b26e16e698890ebcca73267f61b7d935ee804747.tar.gz
beta 2012.10.02 15:13
Diffstat (limited to 'tex/context/base/l-boolean.lua')
-rw-r--r--tex/context/base/l-boolean.lua47
1 files changed, 33 insertions, 14 deletions
diff --git a/tex/context/base/l-boolean.lua b/tex/context/base/l-boolean.lua
index 4294cf8f0..2b94de76b 100644
--- a/tex/context/base/l-boolean.lua
+++ b/tex/context/base/l-boolean.lua
@@ -16,30 +16,49 @@ function boolean.tonumber(b)
end
function toboolean(str,tolerant)
- if str == true or str == false then
- return str
- elseif tolerant then
- local tstr = type(str)
- if tstr == "string" then
- return str == "true" or str == "yes" or str == "on" or str == "1" or str == "t"
- elseif tstr == "number" then
- return tonumber(str) ~= 0
- elseif tstr == "nil" then
- return false
- else
- return str
- end
+ 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
+ return str == "yes" or str == "on" or str == "t"
end
end
string.toboolean = toboolean
+function string.booleanstring(str)
+ 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 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
+
function string.is_boolean(str,default)
if type(str) == "string" then
if str == "true" or str == "yes" or str == "on" or str == "t" then