* Rewrote OOP class constructor
authorSteven Barth <steven@midlink.org>
Sun, 16 Mar 2008 18:11:22 +0000 (18:11 +0000)
committerSteven Barth <steven@midlink.org>
Sun, 16 Mar 2008 18:11:22 +0000 (18:11 +0000)
* Added stub for cbi (configuration bind interface)

src/ffluci/cbi.lua [new file with mode: 0644]
src/ffluci/util.lua

diff --git a/src/ffluci/cbi.lua b/src/ffluci/cbi.lua
new file mode 100644 (file)
index 0000000..b0e6df8
--- /dev/null
@@ -0,0 +1,39 @@
+--[[
+FFLuCI - Configuration Bind Interface
+
+Description:
+Offers an interface for binding confiugration values to certain
+data types. Supports value and range validation and basic dependencies.
+
+FileId:
+$Id$
+
+License:
+Copyright 2008 Steven Barth <steven@midlink.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at 
+
+       http://www.apache.org/licenses/LICENSE-2.0 
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+]]--
+module("ffluci.cbi", package.seeall)
+require("ffluci.util")
+
+
+-- Node pseudo abstract class
+Node = ffluci.util.class()
+function Node.render(self)
+end
+function Node.append(self, obj)
+end
+
+
+Map = ffluci.util.class(Node)
index 3004f55..6e0d867 100644 (file)
@@ -27,22 +27,29 @@ limitations under the License.
 module("ffluci.util", package.seeall)
 
 
--- Lua OO class support emulation
+-- Lua simplified Python-style OO class support emulation
 function class(base)
-       local clsobj = {}
-       local metatable = {__index = clsobj}
+       local class = {}
        
-    function clsobj.new()
-        local inst = {}
-        setmetatable(inst, metatable)
-        return inst
-    end        
+       local create = function(class, ...)
+               local inst = {}
+               setmetatable(inst, {__index = class})
+               
+               if inst.__init__ then
+                       inst:__init__(...)
+               end
+               
+               return inst
+       end
+       
+       local classmeta = {__call = create}
        
        if base then
-               setmetatable(clsobj, {__index = base})
+               classmeta.__index = base
        end
        
-       return clsobj
+       setmetatable(class, classmeta)
+       return class
 end