class Cartograph::Property
Attributes
map[RW]
name[R]
options[R]
Public Class Methods
new(name, options = {}, &block)
click to toggle source
# File lib/cartograph/property.rb, line 6 def initialize(name, options = {}, &block) @name = name @options = options if mapped_class = options[:include] # Perform a safe duplication into our properties map # This allows the user to define more attributes on the map should they need to @map = mapped_class.cartograph.dup end if block_given? @map ||= Map.new block.arity > 0 ? block.call(map) : map.instance_eval(&block) end end
Public Instance Methods
==(other)
click to toggle source
# File lib/cartograph/property.rb, line 52 def ==(other) %i(name options map).inject(true) do |equals, method| break unless equals send(method) == other.send(method) end end
dup()
click to toggle source
# File lib/cartograph/property.rb, line 46 def dup Property.new(name, options.dup).tap do |property| property.map = map.dup if self.map end end
key()
click to toggle source
# File lib/cartograph/property.rb, line 22 def key (options[:key] || name).to_s end
plural?()
click to toggle source
# File lib/cartograph/property.rb, line 42 def plural? !!options[:plural] end
scopes()
click to toggle source
# File lib/cartograph/property.rb, line 38 def scopes Array(options[:scopes] || []) end
value_for(object, scope = nil)
click to toggle source
# File lib/cartograph/property.rb, line 26 def value_for(object, scope = nil) value = object.send(name) return if value.nil? map ? artist_value(value, scope) : value end
value_from(object, scope = nil)
click to toggle source
# File lib/cartograph/property.rb, line 32 def value_from(object, scope = nil) return if object.nil? value = object.has_key?(key) ? object[key] : object[key.to_sym] map ? sculpt_value(value, scope) : value end
Private Instance Methods
artist_value(value, scope)
click to toggle source
# File lib/cartograph/property.rb, line 65 def artist_value(value, scope) plural? ? Array(value).map {|v| Artist.new(v, map).draw(scope) } : Artist.new(value, map).draw(scope) end
sculpt_value(value, scope)
click to toggle source
# File lib/cartograph/property.rb, line 61 def sculpt_value(value, scope) plural? ? Array(value).map {|v| Sculptor.new(v, map).sculpt(scope) } : Sculptor.new(value, map).sculpt(scope) end