Method: Brief::Model::Definition#method_missing

Defined in:
lib/brief/model/definition.rb

#method_missing(meth, *args, &block) ⇒ Object



147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/brief/model/definition.rb', line 147

def method_missing(meth, *args, &block)
  args = args.dup

  if inside_content?
    if meth.to_sym == :define_section
      opts = args.extract_options!
      identifier = args.first
      section_mappings[identifier] ||= Brief::Document::Section::Mapping.new(identifier, opts)
      section_mapping(identifier).instance_eval(&block) if block
    else
      content_schema.attributes[meth] = { args: args, block: block }
    end
  elsif inside_meta?
    if args.first.is_a?(Hash)
      args.unshift(String)
    end
    args.unshift(meth)
    [meth] = { args: args, block: block }
  else
    super
  end
end