Sha256: 011c484a515caf9f4b2a77d32a13963a8cf316b7182230967e1c44229970d191
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 KB
Contents
require "mediator/processor" class Mediator class Renderer < Processor attr_reader :data attr_reader :mediator def initialize mediator, data = nil @data = data || {} @mediator = mediator end def get name, options = nil selector = (options && options[:from]) || name (options && options[:value]) || mediator.get(selector) end def id name, options = {} key name, options.merge(from: "#{name}_id") end 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 data[name] = block ? block[value] : value end def obj name, options = nil, &block value = get name, options return if empty? value, options if value rendered = Mediator[value, mediator].render munged = block ? block[rendered] : rendered merge = options && options[:merge] merge ? data.merge!(munged) : data[name] = munged munged end end def union name, options = nil, &block (options ||= {}).merge! merge: true obj name, options, &block end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mediator-0.0.1 | lib/mediator/renderer.rb |