webmcp
view framework/env/parse/boolean.lua @ 569:5b19007574de
New argument active_link_attr for env.ui.paginate{...}
| author | jbe | 
|---|---|
| date | Wed Oct 13 17:21:44 2021 +0200 (2021-10-13) | 
| parents | 9fdfb27f8e67 | 
| children | 
 line source
     1 function parse.boolean(str, dest_type, options)
     2   if dest_type ~= atom.boolean then
     3     error("parse.boolean(...) can only return booleans, but a different destination type than atom.boolean was given.")
     4   end
     5   local options = options or {}
     6   local trimmed_str = string.match(str or "", "^%s*(.-)%s*$")
     7   if options.true_as or options.false_as or options.nil_as then
     8     if trimmed_str == options.true_as then
     9       return true
    10     elseif trimmed_str == options.false_as then
    11       return false
    12     elseif trimmed_str == options.nil_as or trimmed_str == "" then
    13       return nil
    14     else
    15       error("Boolean value not recognized.")
    16     end
    17   else
    18     local char = string.upper(string.sub(trimmed_str, 1, 1))
    19     if char == "1" or char == "T" or char == "Y" then
    20       return true
    21     elseif char == "0" or char == "F" or char == "N" then
    22       return false
    23     elseif char == "" then
    24       return nil
    25     else
    26       error("Boolean value not recognized.")
    27     end
    28   end
    29 end
