Class: Mediator::Parser
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#mediator ⇒ Object
readonly
Returns the value of attribute mediator.
Instance Method Summary collapse
- #get(name, options = nil) ⇒ Object
- #has?(name, options = nil) ⇒ Boolean
- #id(name, options = {}) ⇒ Object
- #ids(name, options = {}) ⇒ Object
-
#initialize(mediator, data = {}) ⇒ Parser
constructor
A new instance of Parser.
- #key(name, options = nil, &block) ⇒ Object
- #many(name, options = nil, &block) ⇒ Object
- #one(name, options = nil, &block) ⇒ Object
- #union(name, options = nil, &block) ⇒ Object
Methods inherited from Processor
Constructor Details
#initialize(mediator, data = {}) ⇒ Parser
Returns a new instance of Parser.
8 9 10 11 |
# File 'lib/mediator/parser.rb', line 8 def initialize mediator, data = {} @data = data @mediator = mediator end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
5 6 7 |
# File 'lib/mediator/parser.rb', line 5 def data @data end |
#mediator ⇒ Object (readonly)
Returns the value of attribute mediator.
6 7 8 |
# File 'lib/mediator/parser.rb', line 6 def mediator @mediator end |
Instance Method Details
#get(name, options = nil) ⇒ Object
13 14 15 16 |
# File 'lib/mediator/parser.rb', line 13 def get name, = nil selector = ( && [:from]) || name ( && [:value]) || data[selector] || data[selector.to_s] end |
#has?(name, options = nil) ⇒ Boolean
18 19 20 21 |
# File 'lib/mediator/parser.rb', line 18 def has? name, = nil selector = ( && [:from]) || name ( && .has_key?(:value)) || mediator.data_has?(data,selector) end |
#id(name, options = {}) ⇒ Object
23 24 25 |
# File 'lib/mediator/parser.rb', line 23 def id name, = {} key "#{name}_id", .merge(from: name) end |
#ids(name, options = {}) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/mediator/parser.rb', line 27 def ids name, = {} if name[-1] == "s" and ![:from] id_name = "#{name[0..-2]}_ids" else id_name = "#{name}_ids" end [:from] ||= name key id_name, end |
#key(name, options = nil, &block) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/mediator/parser.rb', line 39 def key name, = nil, &block if name[-1] == "?" name = name[0..-2].intern end return unless has? name, value = get name, return if empty? value, value = block ? block[value] : value mediator.set name, value unless empty? value, end |
#many(name, options = nil, &block) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/mediator/parser.rb', line 54 def many name, = nil, &block data = get name, subj = ( && [:subject]) || mediator.get(name) data.map { |d| sub subj[data.index d], d, , &block }. reject { |v| empty? v, } end |
#one(name, options = nil, &block) ⇒ Object
62 63 64 65 66 67 |
# File 'lib/mediator/parser.rb', line 62 def one name, = nil, &block data = get name, subj = ( && [:subject]) || mediator.get(name) sub subj, data, , &block end |
#union(name, options = nil, &block) ⇒ Object
69 70 71 72 |
# File 'lib/mediator/parser.rb', line 69 def union name, = nil, &block ( ||= {}).merge! value: self.data one name, , &block end |