Module: Comprendo

Defined in:
lib/comprendo.rb,
lib/comprendo/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Instance Method Summary collapse

Instance Method Details

#`(cmp) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/comprendo.rb', line 9

def `(cmp)
  @parser ||= ListComprehensionParser.new
  results = @parser.parse(cmp)
  throw parser.failure_reason unless results
  
  iter = eval(results.iter.text_value)
  unless results.filter.type.empty?
    iter = iter.select do |a|
      eval(results.target.text_value + " = a")
      eval("true " + results.filter.text_value)
    end
  end
  
  iter.map do |a|
    eval(results.target.text_value + " = a")
    eval(results.expression.text_value)
  end
end