dentaku 0.2.9 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/dentaku/evaluator.rb +7 -1
- data/lib/dentaku/version.rb +1 -1
- data/spec/evaluator_spec.rb +4 -0
- metadata +4 -4
data/lib/dentaku/evaluator.rb
CHANGED
@@ -126,7 +126,7 @@ module Dentaku
|
|
126
126
|
when :add then Token.new(:numeric, l + r)
|
127
127
|
when :subtract then Token.new(:numeric, l - r)
|
128
128
|
when :multiply then Token.new(:numeric, l * r)
|
129
|
-
when :divide then Token.new(:numeric, l
|
129
|
+
when :divide then Token.new(:numeric, divide(l, r))
|
130
130
|
|
131
131
|
when :le then Token.new(:logical, l <= r)
|
132
132
|
when :ge then Token.new(:logical, l >= r)
|
@@ -143,6 +143,12 @@ module Dentaku
|
|
143
143
|
end
|
144
144
|
end
|
145
145
|
|
146
|
+
def divide(numerator, denominator)
|
147
|
+
quotient, remainder = numerator.divmod(denominator)
|
148
|
+
return quotient if remainder == 0
|
149
|
+
numerator.to_f / denominator.to_f
|
150
|
+
end
|
151
|
+
|
146
152
|
def expand_range(left, oper1, middle, oper2, right)
|
147
153
|
[left, oper1, middle, Token.new(:combinator, :and), middle, oper2, right]
|
148
154
|
end
|
data/lib/dentaku/version.rb
CHANGED
data/spec/evaluator_spec.rb
CHANGED
@@ -53,6 +53,10 @@ describe Dentaku::Evaluator do
|
|
53
53
|
it 'should respect explicit grouping' do
|
54
54
|
evaluator.evaluate(token_stream(:open, 1, :add, 1, :close, :multiply, 5)).should eq(10)
|
55
55
|
end
|
56
|
+
|
57
|
+
it 'should return floating point from division when there is a remainder' do
|
58
|
+
evaluator.evaluate(token_stream(5, :divide, 4)).should eq(1.25)
|
59
|
+
end
|
56
60
|
end
|
57
61
|
|
58
62
|
describe 'functions' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dentaku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10
|
12
|
+
date: 2012-12-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -87,7 +87,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
87
87
|
version: '0'
|
88
88
|
segments:
|
89
89
|
- 0
|
90
|
-
hash: -
|
90
|
+
hash: -662526630847863998
|
91
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
92
|
none: false
|
93
93
|
requirements:
|
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
96
|
version: '0'
|
97
97
|
segments:
|
98
98
|
- 0
|
99
|
-
hash: -
|
99
|
+
hash: -662526630847863998
|
100
100
|
requirements: []
|
101
101
|
rubyforge_project: dentaku
|
102
102
|
rubygems_version: 1.8.23
|