Class: ActiveTriples::PropertyBuilder
- Inherits:
-
Object
- Object
- ActiveTriples::PropertyBuilder
- Defined in:
- lib/active_triples/property_builder.rb
Overview
A builder for property ‘NodeConfig`s
Instance Attribute Summary collapse
- #name ⇒ Object readonly
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Class Method Summary collapse
- .build(model, name, options, &block) ⇒ Object
- .create_builder(name, options) {|index_object| ... } ⇒ PropertyBuilder
- .define_accessors(model, reflection, options = {}) ⇒ Object
- .define_id_reader(mixin, name) ⇒ Object
- .define_readers(mixin, name) ⇒ Object
- .define_writers(mixin, name) ⇒ Object
Instance Method Summary collapse
-
#build {|index_object| ... } ⇒ NodeConfig
A new property node config.
-
#initialize(name, options, &block) ⇒ PropertyBuilder
constructor
A new instance of PropertyBuilder.
Constructor Details
#initialize(name, options, &block) ⇒ PropertyBuilder
Returns a new instance of PropertyBuilder.
21 22 23 24 |
# File 'lib/active_triples/property_builder.rb', line 21 def initialize(name, , &block) @name = name @options = end |
Instance Attribute Details
#name ⇒ Object (readonly)
16 17 18 |
# File 'lib/active_triples/property_builder.rb', line 16 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
16 |
# File 'lib/active_triples/property_builder.rb', line 16 attr_reader :name, :options |
Class Method Details
.build(model, name, options, &block) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/active_triples/property_builder.rb', line 52 def self.build(model, name, , &block) builder = create_builder name, , &block reflection = builder.build(&block) define_accessors model, reflection, reflection end |
.create_builder(name, options) {|index_object| ... } ⇒ PropertyBuilder
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/active_triples/property_builder.rb', line 41 def self.create_builder(name, , &block) raise ArgumentError, "property names must be a Symbol" unless name.kind_of?(Symbol) [:predicate] = RDF::URI.intern([:predicate]) raise ArgumentError, "must provide an RDF::URI to :predicate" unless [:predicate].valid? new(name, , &block) end |
.define_accessors(model, reflection, options = {}) ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/active_triples/property_builder.rb', line 59 def self.define_accessors(model, reflection, ={}) mixin = model.generated_property_methods name = reflection.term define_readers(mixin, name) define_id_reader(model, name) unless [:cast] == false define_writers(mixin, name) end |
.define_id_reader(mixin, name) ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/active_triples/property_builder.rb', line 75 def self.define_id_reader(mixin, name) mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1 def #{name}_ids(*) get_values(:#{name}, cast: false) end CODE end |
.define_readers(mixin, name) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/active_triples/property_builder.rb', line 67 def self.define_readers(mixin, name) mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1 def #{name}(*args) get_values(:#{name}, *args) end CODE end |
.define_writers(mixin, name) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/active_triples/property_builder.rb', line 83 def self.define_writers(mixin, name) mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1 def #{name}=(value) set_value(:#{name}, value) end CODE end |
Instance Method Details
#build {|index_object| ... } ⇒ NodeConfig
Returns a new property node config.
96 97 98 99 100 101 102 |
# File 'lib/active_triples/property_builder.rb', line 96 def build(&block) NodeConfig.new(name, [:predicate], .except(:predicate)) do |config| config.with_index(&block) if block_given? end end |