webmcp
annotate framework/env/convert/to_human.lua @ 0:9fdfb27f8e67
Version 1.0.0
author | jbe/bsw |
---|---|
date | Sun Oct 25 12:00:00 2009 +0100 (2009-10-25) |
parents | |
children |
rev | line source |
---|---|
jbe/bsw@0 | 1 function convert.to_human(value, typ) |
jbe/bsw@0 | 2 if value == nil then return "" end -- TODO: is this correct? |
jbe/bsw@0 | 3 if typ and not atom.has_type(value, typ) then |
jbe/bsw@0 | 4 error("The value passed to convert.to_human(...) has not the specified type.") |
jbe/bsw@0 | 5 end |
jbe/bsw@0 | 6 local type_symbol |
jbe/bsw@0 | 7 local value_type = type(value) |
jbe/bsw@0 | 8 if value_type ~= "table" and value_type ~= "userdata" then |
jbe/bsw@0 | 9 type_symbol = value_type |
jbe/bsw@0 | 10 else |
jbe/bsw@0 | 11 type_symbol = convert._type_symbol_mappings[getmetatable(value)] |
jbe/bsw@0 | 12 end |
jbe/bsw@0 | 13 if not type_symbol then |
jbe/bsw@0 | 14 error("Unrecognized type reference occurred in convert.to_human(...).") |
jbe/bsw@0 | 15 end |
jbe/bsw@0 | 16 local converter = convert["_from_" .. type_symbol .. "_to_human"] |
jbe/bsw@0 | 17 if not converter then |
jbe/bsw@0 | 18 error("Type reference in convert.from_human(...) could be recognized, but the converter function is not existent.") |
jbe/bsw@0 | 19 end |
jbe/bsw@0 | 20 return converter(value) |
jbe/bsw@0 | 21 end |