lib/active_triples/property_builder.rb in active-triples-0.8.1 vs lib/active_triples/property_builder.rb in active-triples-0.8.2
- old
+ new
@@ -1,24 +1,53 @@
+# frozen_string_literal: true
module ActiveTriples
+ ##
+ # A builder for property `NodeConfig`s
+ #
+ # @example
+ # PropertyBuilder.build(:creator, predicate: RDF::Vocab::DC.creator)
+ #
+ # @see NodeConfig
class PropertyBuilder
+ # @!attribute [r] name
+ # @return
+ # @!attribute [r] options
+ # @return
attr_reader :name, :options
+ ##
+ # @param name []
+ # @param options []
def initialize(name, options, &block)
@name = name
@options = options
end
+ ##
+ # @param name [Symbol]
+ # @param options [Hash<Symbol>]
+ # @option options [RDF::URI] :predicate
+ # @option options [String, Class] :class_name
+ # @option options [Boolean] :cast
+ #
+ # @yield yields to block configuring index behaviors
+ # @yieldparam index_object [NodeConfig::IndexObject]
+ #
+ # @return [PropertyBuilder]
+ # @raise [ArgumentError] if name is not a symbol and/or :predicate can't be
+ # coerced into a URI
+ #
+ # @see #build
def self.create_builder(name, options, &block)
raise ArgumentError, "property names must be a Symbol" unless
name.kind_of?(Symbol)
- options[:predicate] = RDF::Resource.new(options[:predicate])
- raise ArgumentError, "must provide an RDF::Resource to :predicate" unless
+ options[:predicate] = RDF::URI.new(options[:predicate])
+ raise ArgumentError, "must provide an RDF::URI to :predicate" unless
options[:predicate].valid?
-
new(name, options, &block)
end
def self.build(model, name, options, &block)
builder = create_builder name, options, &block
@@ -56,10 +85,15 @@
def #{name}=(value)
set_value(:#{name}, value)
end
CODE
end
-
+
+ ##
+ # @yield yields to block configuring index behaviors
+ # @yieldparam index_object [NodeConfig::IndexObject]
+ #
+ # @return [NodeConfig] a new property node config
def build(&block)
NodeConfig.new(name,
options[:predicate],
options.except(:predicate)) do |config|
config.with_index(&block) if block_given?