tape_measure 0.0.8 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f9d69c91b96f8b88480885236d314696bdf17221
4
- data.tar.gz: 346425787b761da85bde19b1f20952d8fdf62e72
2
+ SHA256:
3
+ metadata.gz: 56db6cb67bc3f529296291bc228c342104c4f2c1ec4a39b535635773579b5a7c
4
+ data.tar.gz: 95e4d5af5c333feb061664d4724b65ab0fab4adc6fee8852eedca096ad795955
5
5
  SHA512:
6
- metadata.gz: b9e792bd397c623d42f08b99686acc9d63843b9f9a27bc6d443454091ac690d7b0f93b14e006c583cb00b073f9f42b37e16f6269e12772042361b79559833e7b
7
- data.tar.gz: c552ecb3597b58db118a508309fa6d5d06d764866cdfc64789e8519cacdfb69210ce4b5b577af0f0e343865700128be240d87a10be77601b8727b8598ec814a7
6
+ metadata.gz: 5290d48338267e7d5712030618a8e3d08ae2565fdd341bdfa8b3ceb7666ff931f2f6b805aec7d768e07017a0f35940a156c6da0aeca8ba415da2b1ad77c21994
7
+ data.tar.gz: 38ea3569c0a9ac937da44385164d0a9d99d95c6cbb4a650f7d18199b72468961d809d85d8c4ecef224ebadaa6a87d15581e5f6c9a5d1e9031352346a6f6298ce
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.0
1
+ 3.0.0
data/.travis.yml CHANGED
@@ -2,7 +2,7 @@ language: ruby
2
2
  sudo: false
3
3
  rvm:
4
4
  - 2.3.3
5
- - 2.4.0
5
+ - 2.4.1
6
6
  before_install:
7
7
  - gem install bundler --pre
8
8
  script: bundle exec rake spec
@@ -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
@@ -1,3 +1,3 @@
1
1
  module TapeMeasure
2
- VERSION = '0.0.8'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -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/1016)
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/88
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/127)
97
- expect(TapeMeasure::Parser.new('1m').value).to eq (5000/127)
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/1905)
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/32))
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/32))
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', '~> 1.6'
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.8
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: 2016-12-29 00:00:00.000000000 Z
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: '1.6'
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: '1.6'
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
- rubyforge_project:
128
- rubygems_version: 2.6.8
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: