* Rewrote OOP class constructor

* Added stub for cbi (configuration bind interface)
This commit is contained in:
Steven Barth 2008-03-16 18:11:22 +00:00
parent df0656fdf7
commit 03ad2398aa
2 changed files with 58 additions and 12 deletions

39
src/ffluci/cbi.lua Normal file
View file

@ -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)

View file

@ -27,22 +27,29 @@ limitations under the License.
module("ffluci.util", package.seeall) module("ffluci.util", package.seeall)
-- Lua OO class support emulation -- Lua simplified Python-style OO class support emulation
function class(base) function class(base)
local clsobj = {} local class = {}
local metatable = {__index = clsobj}
function clsobj.new() local create = function(class, ...)
local inst = {} local inst = {}
setmetatable(inst, metatable) setmetatable(inst, {__index = class})
if inst.__init__ then
inst:__init__(...)
end
return inst return inst
end end
local classmeta = {__call = create}
if base then if base then
setmetatable(clsobj, {__index = base}) classmeta.__index = base
end end
return clsobj setmetatable(class, classmeta)
return class
end end