diff options
Diffstat (limited to 'src/ffluci')
-rw-r--r-- | src/ffluci/cbi.lua | 39 | ||||
-rw-r--r-- | src/ffluci/util.lua | 27 |
2 files changed, 56 insertions, 10 deletions
diff --git a/src/ffluci/cbi.lua b/src/ffluci/cbi.lua new file mode 100644 index 0000000000..b0e6df8ccf --- /dev/null +++ b/src/ffluci/cbi.lua @@ -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) diff --git a/src/ffluci/util.lua b/src/ffluci/util.lua index 3004f552e6..6e0d8675a3 100644 --- a/src/ffluci/util.lua +++ b/src/ffluci/util.lua @@ -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 |