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 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: