Module: Zena::Use

Defined in:
lib/zena/use.rb,
lib/zena/use/ajax.rb,
lib/zena/use/i18n.rb,
lib/zena/use/urls.rb,
lib/zena/use/dates.rb,
lib/zena/use/forms.rb,
lib/zena/use/kpath.rb,
lib/zena/use/zazen.rb,
lib/zena/use/action.rb,
lib/zena/use/search.rb,
lib/zena/use/upload.rb,
lib/zena/use/context.rb,
lib/zena/use/display.rb,
lib/zena/use/ancestry.rb,
lib/zena/use/calendar.rb,
lib/zena/use/fixtures.rb,
lib/zena/use/fulltext.rb,
lib/zena/use/ml_index.rb,
lib/zena/use/refactor.rb,
lib/zena/use/workflow.rb,
lib/zena/use/authlogic.rb,
lib/zena/use/html_tags.rb,
lib/zena/use/prop_eval.rb,
lib/zena/use/recursion.rb,
lib/zena/use/relations.rb,
lib/zena/use/rendering.rb,
lib/zena/use/zafu_eval.rb,
lib/zena/use/query_link.rb,
lib/zena/use/query_node.rb,
lib/zena/use/field_index.rb,
lib/zena/use/scope_index.rb,
lib/zena/use/test_helper.rb,
lib/zena/use/node_context.rb,
lib/zena/use/version_hash.rb,
lib/zena/use/image_builder.rb,
lib/zena/use/query_builder.rb,
lib/zena/use/query_comment.rb,
lib/zena/use/dyn_attributes.rb,
lib/zena/use/zafu_templates.rb,
lib/zena/use/error_rendering.rb,
lib/zena/use/zafu_attributes.rb,
lib/zena/use/zafu_safe_definitions.rb,
lib/zena/use/nested_attributes_alias.rb

Overview

This module is used to declare and manage the list of features used by Zena.

Defined Under Namespace

Modules: Action, Ajax, Ancestry, Authlogic, Calendar, Conditional, Context, Dates, Display, DynAttributes, ErrorRendering, FieldIndex, Fixtures, Forms, Fulltext, HtmlTags, I18n, Kpath, MLIndex, NestedAttributesAlias, PropEval, QueryBuilder, QueryNode, Recursion, Refactor, Relations, Rendering, ScopeIndex, Search, TestHelper, Upload, Urls, VersionHash, Workflow, ZafuAttributes, ZafuEval, ZafuSafeDefinitions, ZafuTemplates, Zazen Classes: ImageBuilder, NodeContext, QueryComment, QueryLink

Constant Summary collapse

SUFFIX_NAME =
'Methods'
MODULE_NAMES =
%w{Controller View Zafu User Site Skin Routes}
MODULE_NAME =

“Controller” => “ControllerMethods”

Hash[*MODULE_NAMES.map {|n| [n, "#{n}#{SUFFIX_NAME}"]

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.extra_routesObject

Returns the value of attribute extra_routes.



10
11
12
# File 'lib/zena/use.rb', line 10

def extra_routes
  @extra_routes
end

.modulesObject

Returns the value of attribute modules.



10
11
12
# File 'lib/zena/use.rb', line 10

def modules
  @modules
end

.upgraded_classesObject

Returns the value of attribute upgraded_classes.



10
11
12
# File 'lib/zena/use.rb', line 10

def upgraded_classes
  @upgraded_classes
end

Class Method Details

.each_module_for(name) ⇒ Object



29
30
31
32
33
# File 'lib/zena/use.rb', line 29

def each_module_for(name)
  modules_for(name).each do |mod|
    yield(mod)
  end
end

.module(*modules) ⇒ Object

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.



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/zena/use.rb', line 15

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

.modules_for(name) ⇒ Object



35
36
37
38
# File 'lib/zena/use.rb', line 35

def modules_for(name)
  create_module_hash
  self.modules[name] || []
end

.routes(rez) ⇒ Object



53
54
55
56
57
58
59
60
61
62
# File 'lib/zena/use.rb', line 53

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

.upgrade_class(class_name) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/zena/use.rb', line 40

def upgrade_class(class_name)
  self.upgraded_classes ||= {}
  if !self.upgraded_classes[class_name]
    self.upgraded_classes[class_name] = true
    klass = eval "::#{class_name}"
    klass.class_eval do
      Zena::Use.each_module_for(class_name) do |mod|
        include mod
      end
    end
  end
end