webmcp
annotate framework/env/parse/boolean.lua @ 364:71e2963d9c2c
Added tag v2.0.2 for changeset 1d850c6688b6
author | jbe |
---|---|
date | Sun Mar 29 15:22:00 2015 +0200 (2015-03-29) |
parents | 9fdfb27f8e67 |
children |
rev | line source |
---|---|
jbe/bsw@0 | 1 function parse.boolean(str, dest_type, options) |
jbe/bsw@0 | 2 if dest_type ~= atom.boolean then |
jbe/bsw@0 | 3 error("parse.boolean(...) can only return booleans, but a different destination type than atom.boolean was given.") |
jbe/bsw@0 | 4 end |
jbe/bsw@0 | 5 local options = options or {} |
jbe/bsw@0 | 6 local trimmed_str = string.match(str or "", "^%s*(.-)%s*$") |
jbe/bsw@0 | 7 if options.true_as or options.false_as or options.nil_as then |
jbe/bsw@0 | 8 if trimmed_str == options.true_as then |
jbe/bsw@0 | 9 return true |
jbe/bsw@0 | 10 elseif trimmed_str == options.false_as then |
jbe/bsw@0 | 11 return false |
jbe/bsw@0 | 12 elseif trimmed_str == options.nil_as or trimmed_str == "" then |
jbe/bsw@0 | 13 return nil |
jbe/bsw@0 | 14 else |
jbe/bsw@0 | 15 error("Boolean value not recognized.") |
jbe/bsw@0 | 16 end |
jbe/bsw@0 | 17 else |
jbe/bsw@0 | 18 local char = string.upper(string.sub(trimmed_str, 1, 1)) |
jbe/bsw@0 | 19 if char == "1" or char == "T" or char == "Y" then |
jbe/bsw@0 | 20 return true |
jbe/bsw@0 | 21 elseif char == "0" or char == "F" or char == "N" then |
jbe/bsw@0 | 22 return false |
jbe/bsw@0 | 23 elseif char == "" then |
jbe/bsw@0 | 24 return nil |
jbe/bsw@0 | 25 else |
jbe/bsw@0 | 26 error("Boolean value not recognized.") |
jbe/bsw@0 | 27 end |
jbe/bsw@0 | 28 end |
jbe/bsw@0 | 29 end |