webmcp
annotate libraries/nihil/nihil.lua @ 2:72860d232f32
Version 1.0.2
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
author | jbe/bsw |
---|---|
date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) |
parents | 9fdfb27f8e67 |
children | 3d43a5cf17c1 |
rev | line source |
---|---|
jbe/bsw@0 | 1 #!/usr/bin/env lua |
jbe/bsw@0 | 2 |
jbe/bsw@0 | 3 local error = error |
jbe/bsw@0 | 4 local getmetatable = getmetatable |
jbe/bsw@0 | 5 local module = module |
jbe/bsw@0 | 6 local rawset = rawset |
jbe/bsw@0 | 7 local setmetatable = setmetatable |
jbe/bsw@0 | 8 |
jbe/bsw@0 | 9 module(...) |
jbe/bsw@0 | 10 |
jbe/bsw@0 | 11 metatable = { |
jbe/bsw@0 | 12 __tostring = function(self) |
jbe/bsw@0 | 13 return "nil" .. self[1] |
jbe/bsw@0 | 14 end, |
jbe/bsw@0 | 15 __newindex = function() |
jbe/bsw@0 | 16 error("Objects representing nil are immutable.") |
jbe/bsw@0 | 17 end |
jbe/bsw@0 | 18 } |
jbe/bsw@0 | 19 |
jbe/bsw@0 | 20 nils = setmetatable({}, { |
jbe/bsw@0 | 21 __mode = "v", |
jbe/bsw@0 | 22 __index = function(self, level) |
jbe/bsw@0 | 23 if level > 0 then |
jbe/bsw@0 | 24 local result = setmetatable({ level }, metatable) |
jbe/bsw@0 | 25 rawset(self, level, result) |
jbe/bsw@0 | 26 return result |
jbe/bsw@0 | 27 end |
jbe/bsw@0 | 28 end, |
jbe/bsw@0 | 29 __newindex = function() |
jbe/bsw@0 | 30 error("Table is immutable.") |
jbe/bsw@0 | 31 end |
jbe/bsw@0 | 32 }) |
jbe/bsw@0 | 33 |
jbe/bsw@0 | 34 function lift(value) |
jbe/bsw@0 | 35 if value == nil then |
jbe/bsw@0 | 36 return nils[1] |
jbe/bsw@0 | 37 elseif getmetatable(value) == metatable then |
jbe/bsw@0 | 38 return nils[value[1]+1] |
jbe/bsw@0 | 39 else |
jbe/bsw@0 | 40 return value |
jbe/bsw@0 | 41 end |
jbe/bsw@0 | 42 end |
jbe/bsw@0 | 43 |
jbe/bsw@0 | 44 function lower(value) |
jbe/bsw@0 | 45 if value == nil then |
jbe/bsw@0 | 46 error("Cannot lower nil.") |
jbe/bsw@0 | 47 elseif getmetatable(value) == metatable then |
jbe/bsw@0 | 48 return nils[value[1]-1] |
jbe/bsw@0 | 49 else |
jbe/bsw@0 | 50 return value |
jbe/bsw@0 | 51 end |
jbe/bsw@0 | 52 end |