Class: Expo3

Inherits:
Object
  • Object
show all
Defined in:
lib/expo3.rb

Defined Under Namespace

Classes: Builder

Instance Method Summary collapse

Constructor Details

#initialize(**context, &block) ⇒ Expo3

Returns a new instance of Expo3.



89
90
91
92
# File 'lib/expo3.rb', line 89

def initialize(**context, &block)
  @block = block
  @context = context
end

Instance Method Details

#expects?(keyparam) ⇒ Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/expo3.rb', line 94

def expects?(keyparam)
  @block.parameters.detect{|k,param| param == keyparam }
end

#expo(obj = nil, **context) ⇒ Object



112
113
114
115
116
# File 'lib/expo3.rb', line 112

def expo(obj=nil, **context)
  builder = Builder.new(self)
  builder.instance_exec(obj, **(@context.merge(context)), &@block) if @block
  builder.output(obj, **context)
end

#expo_collection(coll) ⇒ Object



118
119
120
# File 'lib/expo3.rb', line 118

def expo_collection(coll)
  coll.map(&method(:expo))
end

#fix(**context) ⇒ Object



98
99
100
# File 'lib/expo3.rb', line 98

def fix(**context)
  Expo3.new(**(@context.merge(context)), &@block)
end

#upgrade(&block) ⇒ Object



102
103
104
105
106
107
108
109
110
# File 'lib/expo3.rb', line 102

def upgrade(&block)
  return self unless block
  return Expo3.new(**(@context), &block) unless @block
  this = self
  Expo3.new do |obj|
    merge_expo obj, this
    merge_expo obj, Expo3.new(&block)
  end
end