Class: Representable::Definition

Inherits:
Declarative::Definitions::Definition
  • Object
show all
Defined in:
lib/representable/definition.rb

Overview

Created at class compile time. Keeps configuration options for one property.

Instance Method Summary collapse

Constructor Details

#initialize(sym, options = {}, &block) ⇒ Definition

Returns a new instance of Definition.



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/representable/definition.rb', line 8

def initialize(sym, options={}, &block)
  options[:extend] = options[:nested] if options[:nested]

  super

  # defaults:
  options[:parse_filter]  = Pipeline[*options[:parse_filter]]
  options[:render_filter] = Pipeline[*options[:render_filter]]

  setup!(options, &block)
end

Instance Method Details

#[](name) ⇒ Object



41
42
43
44
45
# File 'lib/representable/definition.rb', line 41

def [](name)
  # return nil if name==:extend && self[:nested].nil?
  # return Uber::Options::Value.new(self[:nested]) if name==:extend
  @runtime_options[name]
end

#array?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/representable/definition.rb', line 60

def array?
  self[:collection]
end

#create_binding(*args) ⇒ Object



76
77
78
# File 'lib/representable/definition.rb', line 76

def create_binding(*args)
  self[:binding].call(self, *args)
end

#delete!(name) ⇒ Object



35
36
37
38
39
# File 'lib/representable/definition.rb', line 35

def delete!(name)
  @runtime_options.delete(name)
  @options.delete(name)
  self
end

#has_default?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/representable/definition.rb', line 68

def has_default?
  @options.has_key?(:default)
end

#hash?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/representable/definition.rb', line 64

def hash?
  self[:hash]
end

#inspectObject



80
81
82
83
# File 'lib/representable/definition.rb', line 80

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



25
26
27
28
29
30
31
32
33
# File 'lib/representable/definition.rb', line 25

def merge!(options, &block)
  options = options.clone

  options[:parse_filter]  = @options[:parse_filter].push(*options[:parse_filter])
  options[:render_filter] = @options[:render_filter].push(*options[:render_filter])

  setup!(options, &block) # FIXME: this doesn't yield :as etc.
  self
end

#nameObject Also known as: getter



20
21
22
# File 'lib/representable/definition.rb', line 20

def name
  self[:name]
end

#representable?Boolean

Returns:

  • (Boolean)


55
56
57
58
# File 'lib/representable/definition.rb', line 55

def representable?
  return if self[:representable] == false
  self[:representable] or typed?
end

#representer_moduleObject



72
73
74
# File 'lib/representable/definition.rb', line 72

def representer_module
  @options[:extend]
end

#setterObject



47
48
49
# File 'lib/representable/definition.rb', line 47

def setter
  :"#{name}="
end

#typed?Boolean

TODO: remove.

Returns:

  • (Boolean)


51
52
53
# File 'lib/representable/definition.rb', line 51

def typed? # TODO: remove.
  self[:class] or self[:extend] or self[:instance]
end