diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/zorglub/defs.rb | 48 | ||||
-rw-r--r-- | lib/zorglub/node.rb | 24 |
2 files changed, 23 insertions, 49 deletions
diff --git a/lib/zorglub/defs.rb b/lib/zorglub/defs.rb deleted file mode 100644 index accbc4d..0000000 --- a/lib/zorglub/defs.rb +++ /dev/null @@ -1,48 +0,0 @@ -# -*- coding: UTF-8 -*- -# -module Zorglub - # - class Node - # - @defs_h = { - } - # - class << self - # - attr_reader :defs_h - # - # TODO override is maybe not the better way - def inherited sub - sub.layout layout - sub.engine engine - sub.instance_variable_set :@defs_h, {} - @defs_h.each do |d,v| - sub.defs d, *v - end - end - # - def defs sym, *args - unless args.empty? - @defs_h[sym] ||=[] - @defs_h[sym].concat args - @defs_h[sym].uniq! - end - @defs_h[sym] - end - # - end - # - def defs sym, *args - d = self.class.defs_h[sym].clone - unless args.empty? - d ||=[] - d.concat args - d.uniq! - end - d - end - end - # -end -# -# EOF diff --git a/lib/zorglub/node.rb b/lib/zorglub/node.rb index 669f2c4..78f46af 100644 --- a/lib/zorglub/node.rb +++ b/lib/zorglub/node.rb @@ -9,13 +9,17 @@ module Zorglub :after_all => [], } # + @inherited_vars = { } + # class << self # - attr_reader :hooks + attr_reader :hooks, :inherited_vars # def inherited sub sub.layout layout sub.engine engine + sub.instance_variable_set :@inherited_vars, {} + @inherited_vars.each do |s,v| sub.inherited_var s, *v end end # def engine engine=nil @@ -28,6 +32,15 @@ module Zorglub @layout ||= Config.layout end # + def inherited_var sym, *args + var = @inherited_vars[sym] ||=[] + unless args.empty? + var.concat args + var.uniq! + end + var + end + # attr_writer :app def map app, location @app = app @@ -146,6 +159,15 @@ module Zorglub File.join(Config.view_base_path, @action[:view])+Config.engine_ext(@action[:engine]) end # + def inherited_var sym, *args + d = self.class.inherited_vars[sym].clone || [] + unless args.empty? + d.concat args + d.uniq! + end + d + end + # def args @action[:args] end |