Class: Mediator::Renderer

Inherits:
Processor show all
Defined in:
lib/mediator/renderer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Processor

#empty?

Constructor Details

#initialize(mediator, data = nil) ⇒ Renderer

Returns a new instance of Renderer.



8
9
10
11
# File 'lib/mediator/renderer.rb', line 8

def initialize mediator, data = nil
  @data     = data || {}
  @mediator = mediator
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



5
6
7
# File 'lib/mediator/renderer.rb', line 5

def data
  @data
end

#mediatorObject (readonly)

Returns the value of attribute mediator.



6
7
8
# File 'lib/mediator/renderer.rb', line 6

def mediator
  @mediator
end

Instance Method Details

#get(name, options = {}) ⇒ Object



13
14
15
16
17
# File 'lib/mediator/renderer.rb', line 13

def get name, options = {}
  options = {construct: false}.merge options
  selector = options[:from] || name
  options[:value] || mediator.get(selector, options)
end

#has?(name, options = {}) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
22
# File 'lib/mediator/renderer.rb', line 19

def has? name, options = {}
  selector = options[:from] || name
  options.has_key?(:value)  || mediator.subject_has?(selector)
end

#id(name, options = {}, &block) ⇒ Object



24
25
26
# File 'lib/mediator/renderer.rb', line 24

def id name, options = {}, &block
  key name, options.merge(from: "#{name}_id"), &block
end

#ids(name, options = {}, &block) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/mediator/renderer.rb', line 28

def ids name, options = {}, &block
  unless options[:from]
    if name[-1] == "s"
      options = options.merge(from: "#{name[0..-2]}_ids")
    else
      options = options.merge(from: "#{name}_ids")
    end
  end

  key name, options, &block
end

#key(name, options = {}, &block) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/mediator/renderer.rb', line 40

def key name, options = {}, &block
  if name[-1] == "?"
    options[:from] = name
    name = name[0..-2].intern
  end

  value = get name, options
  return if empty? value, options

  value = block ? block[value] : value

  data[name] = value unless empty? value, options
end

#many(name, options = {}, &block) ⇒ Object



54
55
56
57
58
# File 'lib/mediator/renderer.rb', line 54

def many name, options = {}, &block
  value = get name, options
  data[name] = value.map { |v| sub v, options, &block }.
    reject { |v| empty? v, options }
end

#one(name, options = {}, &block) ⇒ Object



60
61
62
63
64
65
66
67
68
# File 'lib/mediator/renderer.rb', line 60

def one name, options = {}, &block
  value = get name, options
  return if empty? value, options
 
  value = sub value, options, &block 
  return if empty? value, options

  options[:merge] ? data.merge!(value) : data[name] = value
end

#union(name, options = {}, &block) ⇒ Object



70
71
72
73
# File 'lib/mediator/renderer.rb', line 70

def union name, options = {}, &block
  options.merge! merge: true
  one name, options, &block
end