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?