lib/brief/model/definition.rb in brief-1.3.0 vs lib/brief/model/definition.rb in brief-1.3.1
- old
+ new
@@ -4,10 +4,11 @@
:name,
:metadata_schema,
:content_schema,
:options,
:defined_helpers,
+ :defined_actions,
:section_mappings,
:template_body,
:example_body
def initialize(name, options = {})
@@ -23,24 +24,11 @@
def valid?
name.to_s.length > 0 && type_alias.to_s.length > 0
end
def validate!
- definition = self
-
if valid?
- create_model_class.tap do |k|
- k.send(:include, Brief::Model)
-
- k.definition ||= definition
-
- k.name ||= name
- k.type_alias ||= type_alias
-
- Brief::Model.classes << k
- end
-
apply_config
end
end
def apply_config
@@ -54,20 +42,17 @@
raise "Error in metadata schema definition.\n #{ settings.inspect } \n\n #{e.message}"
end
end
# defined helpers adds an anonymous module include
- Array(defined_helpers).each { |mod| model_class.send(:include, mod) }
+ Array(self.defined_helpers).each { |mod| model_class.send(:include, mod) }
- model_class.defined_actions += Array(defined_actions)
true
end
- def create_model_class
- unless (model_namespace.const_get(type_alias.camelize) rescue nil)
- model_namespace.const_set(type_alias.camelize, Class.new)
- end
+ def defined_helper_methods
+ defined_helpers.map(&:instance_methods).flatten
end
def model_class
@model_class || model_namespace.const_get(type_alias.camelize) rescue Brief.default_model_class
end
@@ -101,26 +86,29 @@
self.template_body = body
end
end
def has_actions?
- !@defined_actions.empty?
+ self.defined_actions.empty?
end
def actions(&block)
- helpers(&block)
+ self.defined_actions ||= []
+ helpers(true, &block)
end
- def defined_actions
- Array(defined_helpers).map(&:instance_methods).flatten
- end
-
- def helpers(&block)
+ def helpers(include_in_command_list=false, &block)
self.defined_helpers ||= []
if block
mod = Module.new
mod.module_eval(&block)
+
+ if include_in_command_list
+ self.defined_actions ||= []
+ self.defined_actions += mod.instance_methods
+ self.defined_actions.uniq!
+ end
self.defined_helpers << mod
end
end