Class: SeeingIsBelieving::ExpressionList

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

Defined Under Namespace

Classes: PendingExpression

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ ExpressionList

Returns a new instance of ExpressionList.



18
19
20
21
22
23
24
# File 'lib/seeing_is_believing/expression_list.rb', line 18

def initialize(options)
  self.debug_stream   = options.fetch :debug_stream, $stdout
  self.should_debug   = options.fetch :debug, false
  self.get_next_line  = options.fetch :get_next_line
  self.peek_next_line = options.fetch :peek_next_line
  self.on_complete    = options.fetch :on_complete
end

Instance Method Details

#callObject



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/seeing_is_believing/expression_list.rb', line 26

def call
  offset, expressions, expression = 0, [], nil
  begin
    pending_expression = generate
    debug { "GENERATED: #{pending_expression.expression.inspect}, ADDING IT TO #{inspected_expressions expressions}" }
    expressions << pending_expression
    expression = reduce expressions, offset unless next_line_modifies_current?
    offset += 1
  end until expressions.empty?
  return expression, offset
end