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 = nil) ⇒ Object



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

def get name, options = nil
  selector = (options && options[:from]) || name
  (options && options[:value]) || mediator.get(selector)
end

#has?(name, options = nil) ⇒ Boolean

Returns:

  • (Boolean)


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

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

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



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

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

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



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

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 = nil, &block) ⇒ Object



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

def key name, options = nil, &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 = nil, &block) ⇒ Object



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

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

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



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

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

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

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



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

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