Class: Representable::Definition
- Inherits:
-
Object
- Object
- Representable::Definition
- Includes:
- Cloneable
- Defined in:
- lib/representable/definition.rb
Overview
Created at class compile time. Keeps configuration options for one property.
Instance Attribute Summary collapse
-
#name ⇒ Object
(also: #getter)
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #[](name) ⇒ Object
- #array? ⇒ Boolean
- #clone ⇒ Object
- #create_binding(*args) ⇒ Object
- #delete!(name) ⇒ Object
- #has_default? ⇒ Boolean
- #hash? ⇒ Boolean
-
#initialize(sym, options = {}, &block) ⇒ Definition
constructor
A new instance of Definition.
- #inspect ⇒ Object
- #merge!(options, &block) ⇒ Object
- #representable? ⇒ Boolean
- #representer_module ⇒ Object
- #setter ⇒ Object
- #typed? ⇒ Boolean
Constructor Details
#initialize(sym, options = {}, &block) ⇒ Definition
Returns a new instance of Definition.
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/representable/definition.rb', line 12 def initialize(sym, ={}, &block) @options = {} @options = Cloneable::Hash.new # allows deep cloning. we then had to set Pipeline cloneable. @name = sym.to_s = .clone # defaults: [:parse_filter] = Pipeline[*[:parse_filter]] [:render_filter] = Pipeline[*[:render_filter]] [:as] ||= @name setup!(, &block) end |
Instance Attribute Details
#name ⇒ Object (readonly) Also known as: getter
Returns the value of attribute name.
9 10 11 |
# File 'lib/representable/definition.rb', line 9 def name @name end |
Instance Method Details
#[](name) ⇒ Object
42 43 44 |
# File 'lib/representable/definition.rb', line 42 def [](name) @runtime_options[name] end |
#array? ⇒ Boolean
63 64 65 |
# File 'lib/representable/definition.rb', line 63 def array? self[:collection] end |
#clone ⇒ Object
46 47 48 |
# File 'lib/representable/definition.rb', line 46 def clone self.class.new(name, @options.clone) end |
#create_binding(*args) ⇒ Object
79 80 81 |
# File 'lib/representable/definition.rb', line 79 def create_binding(*args) self[:binding].call(self, *args) end |
#delete!(name) ⇒ Object
36 37 38 39 40 |
# File 'lib/representable/definition.rb', line 36 def delete!(name) @runtime_options.delete(name) @options.delete(name) self end |
#has_default? ⇒ Boolean
71 72 73 |
# File 'lib/representable/definition.rb', line 71 def has_default? @options.has_key?(:default) end |
#hash? ⇒ Boolean
67 68 69 |
# File 'lib/representable/definition.rb', line 67 def hash? self[:hash] end |
#inspect ⇒ Object
83 84 85 86 |
# File 'lib/representable/definition.rb', line 83 def inspect state = (instance_variables-[:@runtime_options, :@name]).collect { |ivar| "#{ivar}=#{instance_variable_get(ivar)}" } "#<Representable::Definition ==>#{name} #{state.join(" ")}>" end |
#merge!(options, &block) ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/representable/definition.rb', line 26 def merge!(, &block) = .clone [:parse_filter] = @options[:parse_filter].push(*[:parse_filter]) [:render_filter] = @options[:render_filter].push(*[:render_filter]) setup!(, &block) # FIXME: this doesn't yield :as etc. self end |
#representable? ⇒ Boolean
58 59 60 61 |
# File 'lib/representable/definition.rb', line 58 def representable? return if self[:representable] == false self[:representable] or typed? end |
#representer_module ⇒ Object
75 76 77 |
# File 'lib/representable/definition.rb', line 75 def representer_module @options[:extend] end |
#setter ⇒ Object
50 51 52 |
# File 'lib/representable/definition.rb', line 50 def setter :"#{name}=" end |
#typed? ⇒ Boolean
54 55 56 |
# File 'lib/representable/definition.rb', line 54 def typed? self[:class] or self[:extend] or self[:instance] end |