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