Module: ActiveTriples::Properties::ClassMethods

Defined in:
lib/active_triples/properties.rb

Instance Method Summary collapse

Instance Method Details

#config_for_term_or_uri(term) ⇒ ActiveTriples::NodeConfig

Given a property name or a predicate, return the configuration for the matching property.

Parameters:

  • term (#to_sym, RDF::Resource)

    a property name to predicate

Returns:



62
63
64
65
# File 'lib/active_triples/properties.rb', line 62

def config_for_term_or_uri(term)
  return properties[term.to_s] unless term.kind_of? RDF::Resource
  properties.each_value { |v| return v if v.predicate == term.to_uri }
end

#fieldsArray<Symbol>

List the property names registered to the class.

Returns:

  • (Array<Symbol>)

    list of the symbolized names of registered properties



72
73
74
# File 'lib/active_triples/properties.rb', line 72

def fields
  properties.keys.map(&:to_sym)
end

#generated_property_methodsObject



30
31
32
33
34
35
36
# File 'lib/active_triples/properties.rb', line 30

def generated_property_methods
  @generated_property_methods ||= begin
    mod = const_set(:GeneratedPropertyMethods, Module.new)
    include mod
    mod
  end
end

#inherited(child_class) ⇒ Object

:nodoc:



21
22
23
24
# File 'lib/active_triples/properties.rb', line 21

def inherited(child_class) #:nodoc:
  child_class.initialize_generated_modules
  super
end

#initialize_generated_modulesObject

:nodoc:



26
27
28
# File 'lib/active_triples/properties.rb', line 26

def initialize_generated_modules # :nodoc:
  generated_property_methods
end

#property(name, opts = {}) {|index| ... } ⇒ Object

Registers properties for Resource-like classes

Parameters:

  • name (Symbol)

    of the property (and its accessor methods)

  • opts (Hash) (defaults to: {})

    for this property, must include a :predicate

Yields:

  • (index)

    index sets solr behaviors for the property

Raises:

  • (ArgumentError)


43
44
45
46
47
# File 'lib/active_triples/properties.rb', line 43

def property(name, opts={}, &block)
  raise ArgumentError, "#{name} is a keyword and not an acceptable property name." if protected_property_name? name
  reflection = PropertyBuilder.build(self, name, opts, &block)
  Reflection.add_reflection self, name, reflection
end

#protected_property_name?(name) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
52
53
# File 'lib/active_triples/properties.rb', line 49

def protected_property_name?(name)
  reject = self.instance_methods.map! { |s| s.to_s.gsub(/=$/, '').to_sym }
  reject -= properties.keys.map { |k| k.to_sym }
  reject.include? name
end