Sha256: 24776cedff5117376a687e1e31d4c9f5c6e5e269f1bb838351fb7ed0867e7f86
Contents?: true
Size: 1.72 KB
Versions: 2
Compression:
Stored size: 1.72 KB
Contents
module Zena # This module is used to declare and manage the list of features used by Zena. module Use SUFFIX_NAME = 'Methods' MODULE_NAMES = %w{Controller View Zafu User Site Skin Routes} # "Controller" => "ControllerMethods" MODULE_NAME = Hash[*MODULE_NAMES.map {|n| [n, "#{n}#{SUFFIX_NAME}"]}.flatten] class << self attr_accessor :modules, :extra_routes # Declare a module (or list of modules) that should be used in Zena. The module should implement # sub-modules named ControllerMethods, ViewMethods or ZafuMethods in order to add features to # the controller, view or zafu compiler respectively. def module(*modules) create_module_hash modules.flatten.each do |mod| MODULE_NAME.each do |key, sub_module_name| begin self.modules[key] << mod.const_get(sub_module_name) rescue NameError # ignore end end end end def each_module_for(name) create_module_hash modules_for(name).each do |mod| yield(mod) end end def modules_for(name) create_module_hash self.modules[name] || [] end def routes(rez) if self.extra_routes.nil? hash = {} each_module_for('Routes') do |mod| hash.merge!(mod) end self.extra_routes = hash end (self.extra_routes[rez] || {})[rez] || {} end private def create_module_hash if self.modules.nil? modules = (self.modules = {}) MODULE_NAME.each do |key, value| modules[key] = [] end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
zena-1.2.1 | lib/zena/use.rb |
zena-1.2.0 | lib/zena/use.rb |