* 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)
-- 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 create = function(class, ...)
local inst = {}
setmetatable(inst, metatable)
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