tape_measure 0.0.8 → 0.1.0
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.
- checksums.yaml +5 -5
- data/.ruby-version +1 -1
- data/.travis.yml +1 -1
- data/lib/tape_measure/length_grammar.citrus +7 -1
- data/lib/tape_measure/version.rb +1 -1
- data/spec/tape_measure/formatter_spec.rb +4 -0
- data/spec/tape_measure/parser_spec.rb +18 -9
- data/tape_measure.gemspec +1 -1
- metadata +8 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 56db6cb67bc3f529296291bc228c342104c4f2c1ec4a39b535635773579b5a7c
|
4
|
+
data.tar.gz: 95e4d5af5c333feb061664d4724b65ab0fab4adc6fee8852eedca096ad795955
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5290d48338267e7d5712030618a8e3d08ae2565fdd341bdfa8b3ceb7666ff931f2f6b805aec7d768e07017a0f35940a156c6da0aeca8ba415da2b1ad77c21994
|
7
|
+
data.tar.gz: 38ea3569c0a9ac937da44385164d0a9d99d95c6cbb4a650f7d18199b72468961d809d85d8c4ecef224ebadaa6a87d15581e5f6c9a5d1e9031352346a6f6298ce
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.0
|
data/.travis.yml
CHANGED
@@ -95,7 +95,13 @@ grammar LengthGrammar
|
|
95
95
|
end
|
96
96
|
|
97
97
|
rule rational
|
98
|
-
leading_whole | fraction
|
98
|
+
leading_with_minus_whole | leading_whole | fraction
|
99
|
+
end
|
100
|
+
|
101
|
+
rule leading_with_minus_whole
|
102
|
+
(integer operator:('-') fraction){
|
103
|
+
capture(:integer).value + capture(:fraction).value
|
104
|
+
}
|
99
105
|
end
|
100
106
|
|
101
107
|
rule leading_whole
|
data/lib/tape_measure/version.rb
CHANGED
@@ -23,4 +23,8 @@ describe TapeMeasure::Formatter do
|
|
23
23
|
it 'when called via class method helper' do
|
24
24
|
expect(TapeMeasure.format(1)).to eq("1\"")
|
25
25
|
end
|
26
|
+
|
27
|
+
it 'when number is more clearly stated as a number' do
|
28
|
+
expect(TapeMeasure::Formatter.new(7.5).mixed_number).to eq('7 1/2"')
|
29
|
+
end
|
26
30
|
end
|
@@ -72,9 +72,9 @@ describe TapeMeasure do
|
|
72
72
|
end
|
73
73
|
|
74
74
|
it 'can handle complex rationals' do
|
75
|
-
expect(TapeMeasure::Parser.new('(77/88 mm)').value).to eq (35
|
75
|
+
expect(TapeMeasure::Parser.new('(77/88 mm)').value).to eq Rational(35,1016)
|
76
76
|
expect(TapeMeasure::Parser.new('(77/88 mm)').match).to eq true
|
77
|
-
expect(TapeMeasure::Parser.new('(77/88 mm)').scalar).to eq 77
|
77
|
+
expect(TapeMeasure::Parser.new('(77/88 mm)').scalar).to eq Rational(77,88)
|
78
78
|
expect(TapeMeasure::Parser.new('(77/88 mm)').unit).to eq "mm"
|
79
79
|
end
|
80
80
|
|
@@ -93,8 +93,8 @@ describe TapeMeasure do
|
|
93
93
|
end
|
94
94
|
|
95
95
|
it 'converts meters' do
|
96
|
-
expect(TapeMeasure::Parser.new('1 meter').value).to eq (5000
|
97
|
-
expect(TapeMeasure::Parser.new('1m').value).to eq (5000
|
96
|
+
expect(TapeMeasure::Parser.new('1 meter').value).to eq Rational(5000, 127)
|
97
|
+
expect(TapeMeasure::Parser.new('1m').value).to eq Rational(5000, 127)
|
98
98
|
end
|
99
99
|
|
100
100
|
describe 'converts centimeters' do
|
@@ -115,6 +115,15 @@ describe TapeMeasure do
|
|
115
115
|
|
116
116
|
describe :unit_conversion do
|
117
117
|
|
118
|
+
it 'number + unit - number + unit is subtraction' do
|
119
|
+
expect(TapeMeasure::Parser.new('4feet-2inches').value).to eq 46
|
120
|
+
end
|
121
|
+
|
122
|
+
# Handles US metric lumber notation of 2-1/2" to represent 2.5 inches.
|
123
|
+
it 'number - number + unit is addition' do
|
124
|
+
expect(TapeMeasure::Parser.new('2-1/2"').value).to eq 2.5
|
125
|
+
end
|
126
|
+
|
118
127
|
it 'number + space + string unit twice to inches' do
|
119
128
|
expect(TapeMeasure::Parser.new('4feet 2inches').value).to eq 50
|
120
129
|
end
|
@@ -137,12 +146,12 @@ describe TapeMeasure do
|
|
137
146
|
|
138
147
|
it 'converts single quotes to feet' do
|
139
148
|
expect(TapeMeasure::Parser.new("1\' 2 1/3\"").value)
|
140
|
-
.to eq(12 + 2 + (1 / 3).to_f)
|
149
|
+
.to eq(12 + 2 + (1.0 / 3).to_f)
|
141
150
|
end
|
142
151
|
|
143
152
|
it 'lots of junk spaces' do
|
144
153
|
expect(TapeMeasure::Parser.new(" 1\' 2 1/3\" ").value)
|
145
|
-
.to eq(12 + 2 + (1 / 3).to_f)
|
154
|
+
.to eq(12 + 2 + (1.0 / 3).to_f)
|
146
155
|
end
|
147
156
|
|
148
157
|
it 'converts decimal inches' do
|
@@ -185,7 +194,7 @@ describe TapeMeasure do
|
|
185
194
|
it 'with length style input' do
|
186
195
|
expect(TapeMeasure::Parser.new('15.5\' + 12.7"').value).to eq(198.7)
|
187
196
|
expect(TapeMeasure::Parser.new('7 1/3 inches - 4.12mm').value)
|
188
|
-
.to eq(13661
|
197
|
+
.to eq(Rational(13661, 1905))
|
189
198
|
expect(TapeMeasure::Parser.new('4.5 * 3').value).to eq(13.5)
|
190
199
|
expect(TapeMeasure::Parser.new('5.5 / 11').value).to eq(0.5)
|
191
200
|
expect(TapeMeasure::Parser.new('1 ft * 1').value).to eq(12)
|
@@ -194,13 +203,13 @@ describe TapeMeasure do
|
|
194
203
|
expect(TapeMeasure::Parser.new('(3 ft 1/4") * 3 1/2').value).to eq(126.875)
|
195
204
|
expect(TapeMeasure::Parser.new('(3 ft 1/4") * 3 1/2 * 4/4" ').value).to be_within(1).of(10.572916666666666)
|
196
205
|
expect(TapeMeasure::Parser.new('(3 ft 1/4") * 3 1/2 * 4/4" ').unit).to eq("ft*in")
|
197
|
-
expect(TapeMeasure::Parser.new('(3 ft 1/4") * 3 1/2 * 3/4 ').value).to eq((3045
|
206
|
+
expect(TapeMeasure::Parser.new('(3 ft 1/4") * 3 1/2 * 3/4 ').value).to eq(Rational(3045, 32))
|
198
207
|
end
|
199
208
|
it 'when no brackets to define order of operations' do
|
200
209
|
expect(TapeMeasure::Parser.new('3\' 1/4" * 3 1/2').value).to eq(126.875)
|
201
210
|
expect(TapeMeasure::Parser.new('3\' 1/4" * 3 1/2" * 4/4" ').value).to be_within(1).of(10.572916666666666)
|
202
211
|
expect(TapeMeasure::Parser.new('3\' 1/4" * 3 1/2" * 4/4" ').unit).to eq("ft*in^2")
|
203
|
-
expect(TapeMeasure::Parser.new('3\' 1/4" * 3 1/2 * 3/4 ').value).to eq((3045
|
212
|
+
expect(TapeMeasure::Parser.new('3\' 1/4" * 3 1/2 * 3/4 ').value).to eq(Rational(3045, 32))
|
204
213
|
end
|
205
214
|
end
|
206
215
|
it 'when called via class method helper' do
|
data/tape_measure.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ['lib']
|
21
|
-
spec.add_development_dependency 'bundler', '~>
|
21
|
+
spec.add_development_dependency 'bundler', '~> 2.2'
|
22
22
|
spec.add_development_dependency 'rake'
|
23
23
|
spec.add_development_dependency 'rspec'
|
24
24
|
spec.add_dependency 'citrus'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tape_measure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Congleton
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.2'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +109,7 @@ homepage: https://github.com/burningpony/tape_measure
|
|
109
109
|
licenses:
|
110
110
|
- GNU v3
|
111
111
|
metadata: {}
|
112
|
-
post_install_message:
|
112
|
+
post_install_message:
|
113
113
|
rdoc_options: []
|
114
114
|
require_paths:
|
115
115
|
- lib
|
@@ -124,9 +124,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
requirements: []
|
127
|
-
|
128
|
-
|
129
|
-
signing_key:
|
127
|
+
rubygems_version: 3.2.3
|
128
|
+
signing_key:
|
130
129
|
specification_version: 4
|
131
130
|
summary: Measurements parser and converter.
|
132
131
|
test_files:
|