Sha256: 5cffba09a8f87e96b6a14e530332105bcd987dade883fc03ae3b51f66f268c27
Contents?: true
Size: 1.17 KB
Versions: 19
Compression:
Stored size: 1.17 KB
Contents
require 'krikri/mapping_dsl/property_declaration' require 'krikri/mapping_dsl/child_declaration' require 'krikri/mapping_dsl/parser_methods' require 'krikri/mapping_dsl/rdf_subjects' module Krikri ## # Mixin implementing DSL methods for metadata mapping. The main MappingDSL # module implements the core property definition methods, while nested modules # add various extensions. module MappingDSL extend ActiveSupport::Concern include ParserMethods include RdfSubjects def properties @properties ||= [] end def respond_to_missing?(*) true end def method_missing(name, *args, &block) return add_child(name, *args, &block) if block && block.arity == 0 add_property(name, *args, &block) end private def add_child(name, opts = {}, &block) delete_property(name) properties << ChildDeclaration.new(name, opts.delete(:class), opts, &block) end def add_property(name, value = nil, &block) delete_property(name) properties << PropertyDeclaration.new(name, value, &block) end def delete_property(name) properties.delete_if { |prop| prop.name == name } end end end
Version data entries
19 entries across 19 versions & 1 rubygems