From: Steven Barth Date: Sun, 16 Mar 2008 18:11:22 +0000 (+0000) Subject: * Rewrote OOP class constructor X-Git-Tag: 0.8.0~1215 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=03ad2398aae1f745266118a9e94ed4636a3872eb;p=oweals%2Fluci.git * Rewrote OOP class constructor * Added stub for cbi (configuration bind interface) --- diff --git a/src/ffluci/cbi.lua b/src/ffluci/cbi.lua new file mode 100644 index 000000000..b0e6df8cc --- /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 + +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 3004f552e..6e0d8675a 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