minad-evaluator 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/evaluator.rb +3 -4
  2. metadata +1 -1
data/lib/evaluator.rb CHANGED
@@ -4,7 +4,7 @@ module Evaluator
4
4
  def self.infix(priority, unary = nil, &block) [false, priority, lambda(&block), unary] end
5
5
  def self.prefix(&block) [true, 1e5, lambda(&block)] end
6
6
 
7
- VERSION = "0.1.2"
7
+ VERSION = "0.1.3"
8
8
  OPERATOR = {
9
9
  '||' => infix(0) {|a,b| a || b },
10
10
  '&&' => infix(1) {|a,b| a && b },
@@ -104,7 +104,7 @@ module Evaluator
104
104
  def self.eval(expr, vars = {})
105
105
  vars = Hash[*vars.map {|k,v| [k.to_s.downcase, v] }.flatten].merge(CONSTANTS)
106
106
  stack, result, unary = [], [], true
107
- expr.scan(TOKENIZER).each do |tok|
107
+ expr.to_s.scan(TOKENIZER).each do |tok|
108
108
  if tok == '('
109
109
  stack << '('
110
110
  elsif tok == ')'
@@ -141,8 +141,7 @@ module Evaluator
141
141
  unary = true
142
142
  end
143
143
  exec(result, stack.pop) while !stack.empty?
144
- raise(SyntaxError, "Unexpected operands") if result.size != 1
145
- result[0]
144
+ result.last
146
145
  end
147
146
 
148
147
  def self.exec(result, op)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minad-evaluator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Mendler