Class: Mashfeed::Context

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

Defined Under Namespace

Classes: DSL

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(statements = []) ⇒ Context

Returns a new instance of Context.



5
6
7
# File 'lib/mashfeed/context.rb', line 5

def initialize(statements=[])
  @statements = statements
end

Instance Attribute Details

#statementsObject (readonly)

Returns the value of attribute statements.



3
4
5
# File 'lib/mashfeed/context.rb', line 3

def statements
  @statements
end

Instance Method Details

#executeObject



9
10
11
12
13
14
15
16
17
18
# File 'lib/mashfeed/context.rb', line 9

def execute
  last_num = -1
  while not @statements.empty?
    @statements = @statements.collect{ |statement| execute_statement(statement) }
    @statements.delete(nil)
    raise "Infinity loop!" if last_num==@statements.size
    last_num = @statements.size
  end
  true
end

#execute_statement(statement) ⇒ Object

execute a statment and pass entries to next statements



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/mashfeed/context.rb', line 21

def execute_statement(statement)
  if statement.input_entries.size >= statement.inputs.size
    result = statement.execute
    @statements.each do |next_statement|
      (next_statement.input_entries << result) if next_statement.inputs.include?(statement)
    end
    nil
  else
    statement
  end
end