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 = {}) ⇒ Object
- #has?(name, options = {}) ⇒ Boolean
- #id(name, options = {}) ⇒ Object
- #ids(name, options = {}) ⇒ Object
-
#initialize(mediator, data = {}) ⇒ Parser
constructor
A new instance of Parser.
- #key(name, options = {}, &block) ⇒ Object
- #many(name, options = {}, &block) ⇒ Object
- #one(name, options = {}, &block) ⇒ Object
- #union(name, options = {}, &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 = {}) ⇒ Object
13 14 15 16 |
# File 'lib/mediator/parser.rb', line 13 def get name, = {} selector = [:from] || name [:value] || data[selector] || data[selector.to_s] end |
#has?(name, options = {}) ⇒ Boolean
18 19 20 21 |
# File 'lib/mediator/parser.rb', line 18 def has? name, = {} 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 = {}, &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, = {}, &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 = {}, &block) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/mediator/parser.rb', line 54 def many name, = {}, &block = {construct: true}.merge data = get(name, ) return if data.nil? and ![:empty] # Can't use main empty? call here as [] does not count as empty.. mediator.set name, [] unless [:merge] subj = ( && [:subject]) || mediator.get(name, ) (data || []).each do |d| name = name[0..-2] if name[-1] == "s" s = mediator.construct name sub s, d, , &block end end |
#one(name, options = {}, &block) ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'lib/mediator/parser.rb', line 71 def one name, = {}, &block = {construct: true}.merge data = get name, subj = [:subject] || mediator.get(name, ) sub subj, data, , &block end |
#union(name, options = {}, &block) ⇒ Object
80 81 82 83 |
# File 'lib/mediator/parser.rb', line 80 def union name, = {}, &block = {value: self.data}.merge one name, , &block end |