class Expo2
Public Class Methods
new(prototype=nil, &block)
click to toggle source
# File lib/expo2.rb, line 7 def initialize(prototype=nil, &block) @block = block @prototype = prototype || NullExpo.new @presenters ||= [] self.instance_exec &@block if @block end
Public Instance Methods
expo(object=nil, context={}, index=nil)
click to toggle source
# File lib/expo2.rb, line 19 def expo(object=nil, context={}, index=nil) preso = @prototype.expo(object, context, index) @presenters.each do |pres| #TODO: warn on key collision preso = HashHelper.new.deep_merge(preso, pres.go(object, context, index)) end preso end
expo_collection(objects, context={})
click to toggle source
# File lib/expo2.rb, line 28 def expo_collection(objects, context={}) objects.map.with_index{|o, i| expo(o, context, i) } end
inspect()
click to toggle source
# File lib/expo2.rb, line 14 def inspect "<Expo2:#{self.object_id}, @prototype=#{@prototype.inspect}, @presenters=#{@presenters.map(&:inspect)}>" end
Private Instance Methods
aside(presenter, *keys)
click to toggle source
# File lib/expo2.rb, line 40 def aside(presenter, *keys) array, hash = ArgumentParser.new.parse_arguments(keys) key_map = HashHelper.new.hasherize(array).merge(hash) @presenters << Asider.new(presenter, key_map) end
augment(presenter, *keys)
click to toggle source
# File lib/expo2.rb, line 46 def augment(presenter, *keys) array, hash = ArgumentParser.new.parse_arguments(keys) key_map = HashHelper.new.hasherize(array).merge(hash) @presenters << Pres.new(presenter, key_map) end
collection(associator, key, expo=nil, &block)
click to toggle source
# File lib/expo2.rb, line 68 def collection(associator, key, expo=nil, &block) @presenters << SubCollection.new(associator, key, expo, block) end
expose(*keys)
click to toggle source
# File lib/expo2.rb, line 34 def expose(*keys) array, hash = ArgumentParser.new.parse_arguments(keys) key_map = HashHelper.new.hasherize(array).merge(hash) @presenters << Exposer.new(key_map) end
inline(&block)
click to toggle source
# File lib/expo2.rb, line 72 def inline(&block) @presenters << InlineExpo.new(block) end
merge(&block)
click to toggle source
# File lib/expo2.rb, line 52 def merge(&block) @presenters << Merger.new(block) end
merge_expo(pres, sub_expo=nil, &block)
click to toggle source
# File lib/expo2.rb, line 56 def merge_expo(pres, sub_expo=nil, &block) @presenters << MergeExpo.new(pres, sub_expo, block) end
recurse(pres, key)
click to toggle source
# File lib/expo2.rb, line 64 def recurse(pres, key) @presenters << Recurser.new(pres, key, self) end
sub_expo(pres, key, sub_expo=nil, &block)
click to toggle source
# File lib/expo2.rb, line 60 def sub_expo(pres, key, sub_expo=nil, &block) @presenters << SubExpo.new(pres, key, sub_expo, block) end