[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: local "module" pattern without module [was Re: [ANN] SLAXML - pure Lua, robust-ish, SAX-like streaming XML processor]
- From: steve donovan <steve.j.donovan@...>
- Date: Tue, 19 Feb 2013 10:27:16 +0200
On Tue, Feb 19, 2013 at 8:12 AM, Gavin Kistner <phrogz@me.com> wrote:
> Understood. I have benchmarking in place that shows no measurable performance degradation for my usage, though I do cache certain library functions in locals anyhow already.
Excellent! No need to be paranoid unless necessary...
> However, unless I'm missing something, this only works with strict (inverted) hierarchies of dependencies. It falls down if you two files that both extend the same base file and the user should be able to get code from both.
OK, let's look at a slight modification of your scenario:
# lxsc.lua
local LXSC = require 'lib.module'
require 'lib.state'
require 'lib.scxml'
require 'lib.event'
...etc.
return LXSC
# lib/module.lua
return { VERSION="0.3.1" }
# lib/event.lua
local LXSC = require 'lib.module'
local Event = { ... }
LXSC.Event = Event
return Event
# lib/scxml.lua
local LXSC = require 'lib.module'
local SCXML = {...}
LXSC.SCXML = SCXML
return SCXML
# lib/state.lua
local LXSC = require 'lib.module'
local State = {...}
LXSC.State = State
return State
And no globals were harmed in the process, at the slight cost of an
extra module which just has the job of initializing the main table.
Thereafter require() ensures that it is unique. All modules return an
appropriate table, which is strongly recommended.
steve d.
- References:
- Re: local "module" pattern without module [was Re: [ANN] SLAXML - pure Lua, robust-ish, SAX-like streaming XML processor], Gavin Kistner
- Re: local "module" pattern without module [was Re: [ANN] SLAXML - pure Lua, robust-ish, SAX-like streaming XML processor], Petite Abeille
- Re: local "module" pattern without module [was Re: [ANN] SLAXML - pure Lua, robust-ish, SAX-like streaming XML processor], Gavin Kistner
- Re: local "module" pattern without module [was Re: [ANN] SLAXML - pure Lua, robust-ish, SAX-like streaming XML processor], steve donovan
- Re: local "module" pattern without module [was Re: [ANN] SLAXML - pure Lua, robust-ish, SAX-like streaming XML processor], Gavin Kistner