unitwise 1.1.0 → 2.0.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 +4 -4
- data/.travis.yml +2 -6
- data/CHANGELOG.md +22 -3
- data/Gemfile +5 -7
- data/README.md +2 -19
- data/lib/unitwise/version.rb +1 -1
- data/unitwise.gemspec +2 -2
- metadata +6 -10
- data/lib/unitwise/ext.rb +0 -5
- data/lib/unitwise/ext/numeric.rb +0 -47
- data/test/unitwise/ext/numeric_test.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfd97b3dc7b4fbee73653902232de8df74d79967
|
4
|
+
data.tar.gz: 25837b28be1ab4e3fbb71100bf6221986419fd65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd81647b67a9ca56b420b6cf47d4c60e2f6311a1d7aef97d6a41309fd4e6a4ba43b746d9c4f776d9dd8dd0d82c95ec69d2e53ba0a211aee7dc49a2045092384e
|
7
|
+
data.tar.gz: 7fda14718114a1430b56873b68336e5eb92636f97597dce3e743ca72346499d2d3cdfcb4bb61eeedcd6162bfa3b90318f9eec0cc025e19f234f3e0eab7bc73a6
|
data/.travis.yml
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
language: ruby
|
2
2
|
cache: bundler
|
3
3
|
bundler_args: --without yard pry
|
4
|
+
sudo: false
|
4
5
|
rvm:
|
5
|
-
- ree
|
6
|
-
- 1.8.7
|
7
|
-
- 1.9.2
|
8
6
|
- 1.9.3
|
9
7
|
- 2.0.0
|
10
8
|
- 2.1
|
@@ -13,8 +11,6 @@ rvm:
|
|
13
11
|
- rbx-2
|
14
12
|
matrix:
|
15
13
|
include:
|
16
|
-
- rvm: jruby-18mode
|
17
|
-
env: JRUBY_OPTS="$JRUBY_OPTS --debug"
|
18
14
|
- rvm: jruby-19mode
|
19
15
|
env: JRUBY_OPTS="$JRUBY_OPTS --debug"
|
20
16
|
- rvm: jruby-head
|
@@ -22,4 +18,4 @@ matrix:
|
|
22
18
|
allow_failures:
|
23
19
|
- rvm: ruby-head
|
24
20
|
- rvm: jruby-head
|
25
|
-
fast_finish: true
|
21
|
+
fast_finish: true
|
data/CHANGELOG.md
CHANGED
@@ -5,15 +5,34 @@ version 1.0.0.
|
|
5
5
|
|
6
6
|
Unitwise uses semantic versioning.
|
7
7
|
|
8
|
+
## 2.0.0 - 2015-09-13
|
9
|
+
|
10
|
+
### Fixed
|
11
|
+
|
12
|
+
- Gem dependencies are less restrictive; now works with additional versions of
|
13
|
+
parslet and blankslate.
|
14
|
+
|
15
|
+
### Removed
|
16
|
+
|
17
|
+
- 'unitwise/ext' is now officially removed. The core Numeric extensions are no
|
18
|
+
longer available. Instead of `1.volt` or `2.0.to_joule`, use `Unitwise(1,
|
19
|
+
'volt')` and `Unitwise(2.0, 'Joule')`.
|
20
|
+
- Dropped support for Ruby 1.8.7, 1.9.2, and REE.
|
21
|
+
|
8
22
|
## 1.1.0 - 2015-09-10
|
9
23
|
|
24
|
+
### Fixed
|
25
|
+
|
26
|
+
- `#to_s` should no longer return the unexpected ' 1' suffix for dimless measurements.
|
27
|
+
- `#to_s(mode)` will fall back to using the atom's `primary_code` if the mode
|
28
|
+
isn't available.
|
29
|
+
|
30
|
+
### Deprecated
|
31
|
+
|
10
32
|
- `require unitwise/ext` has been deprecated as it is a performance drag and
|
11
33
|
violates Ruby best practices. Use `require unitwise` instead. Any use of the
|
12
34
|
Numeric helpers like `1.meter`, `2.to_foot` will need to change to
|
13
35
|
`Unitwise(1, 'meter')`, and `Unitwise(2, 'foot')`.
|
14
|
-
- `#to_s` should no longer return the unexpected ' 1' suffix for dimless measurements.
|
15
|
-
- `#to_s(mode)` will fall back to using the atom's `primary_code` if the mode
|
16
|
-
isn't available.
|
17
36
|
|
18
37
|
## 1.0.4 - 2015-01-10
|
19
38
|
|
data/Gemfile
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
gem 'bigdecimal', '~> 1.2.5', :platform => :mri
|
9
|
-
end
|
3
|
+
gem 'coveralls', '~> 0.7'
|
4
|
+
if RUBY_VERSION >= '2.2.0'
|
5
|
+
gem 'bigdecimal', '~> 1.2.6', :platform => :mri
|
6
|
+
else
|
7
|
+
gem 'bigdecimal', '~> 1.2.5', :platform => :mri
|
10
8
|
end
|
11
9
|
|
12
10
|
gemspec
|
data/README.md
CHANGED
@@ -237,34 +237,17 @@ Unitwise(1, "meter/s") # Does not work, mixed designations (name and primar
|
|
237
237
|
Unitwise(1, "meter") / Unitwise(1, "s") # Also works
|
238
238
|
```
|
239
239
|
|
240
|
-
## Core extensions (deprecated)
|
241
|
-
|
242
|
-
Unitwise doesn't mess with the core library by default. However, you can
|
243
|
-
optionally require the core extensions for some handy helpers. I find these
|
244
|
-
fun for doing calculations in an irb or pry session, but use them in your
|
245
|
-
application at your own risk. These extensions have been known to negatively
|
246
|
-
impact performance, and will be removed in a future version.
|
247
|
-
|
248
|
-
```ruby
|
249
|
-
require 'unitwise/ext'
|
250
|
-
|
251
|
-
4.teaspoon # => #<Unitwise::Measurement value=4 unit=teaspoon>
|
252
|
-
1.convert_to('liter') # => #<Unitwise::Measurement value=1 unit=liter>
|
253
|
-
```
|
254
|
-
|
255
240
|
## Supported Ruby Versions
|
256
241
|
|
257
242
|
This library aims to support and is tested against the following Ruby
|
258
243
|
implementations:
|
259
244
|
|
260
|
-
* Ruby 1.8.7
|
261
|
-
* Ruby 1.9.2
|
262
245
|
* Ruby 1.9.3
|
263
246
|
* Ruby 2.0.0
|
264
|
-
* Ruby 2.1
|
247
|
+
* Ruby 2.1
|
248
|
+
* Ruby 2.2
|
265
249
|
* [JRuby](http://jruby.org/)
|
266
250
|
* [Rubinius](http://rubini.us/)
|
267
|
-
* [Ruby Enterprise Edition](http://www.rubyenterpriseedition.com/)
|
268
251
|
|
269
252
|
If something doesn't work on one of these versions, it's a bug.
|
270
253
|
|
data/lib/unitwise/version.rb
CHANGED
data/unitwise.gemspec
CHANGED
@@ -23,9 +23,9 @@ Gem::Specification.new do |gem|
|
|
23
23
|
gem.add_dependency 'liner', '~> 0.2'
|
24
24
|
gem.add_dependency 'signed_multiset', '~> 0.2'
|
25
25
|
gem.add_dependency 'memoizable', '~> 0.4'
|
26
|
-
gem.add_dependency 'parslet', '~> 1.5
|
26
|
+
gem.add_dependency 'parslet', '~> 1.5'
|
27
27
|
|
28
|
-
gem.add_development_dependency 'nokogiri', '~> 1.5
|
28
|
+
gem.add_development_dependency 'nokogiri', '~> 1.5'
|
29
29
|
gem.add_development_dependency 'pry', '~> 0.9'
|
30
30
|
gem.add_development_dependency 'minitest', '~> 5.0'
|
31
31
|
gem.add_development_dependency 'rake', '~> 10.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unitwise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Lewis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: liner
|
@@ -58,28 +58,28 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.5
|
61
|
+
version: '1.5'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.5
|
68
|
+
version: '1.5'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: nokogiri
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.5
|
75
|
+
version: '1.5'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.5
|
82
|
+
version: '1.5'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -165,8 +165,6 @@ files:
|
|
165
165
|
- lib/unitwise/expression/matcher.rb
|
166
166
|
- lib/unitwise/expression/parser.rb
|
167
167
|
- lib/unitwise/expression/transformer.rb
|
168
|
-
- lib/unitwise/ext.rb
|
169
|
-
- lib/unitwise/ext/numeric.rb
|
170
168
|
- lib/unitwise/functional.rb
|
171
169
|
- lib/unitwise/measurement.rb
|
172
170
|
- lib/unitwise/prefix.rb
|
@@ -190,7 +188,6 @@ files:
|
|
190
188
|
- test/unitwise/expression/decomposer_test.rb
|
191
189
|
- test/unitwise/expression/matcher_test.rb
|
192
190
|
- test/unitwise/expression/parser_test.rb
|
193
|
-
- test/unitwise/ext/numeric_test.rb
|
194
191
|
- test/unitwise/functional_test.rb
|
195
192
|
- test/unitwise/measurement_test.rb
|
196
193
|
- test/unitwise/prefix_test.rb
|
@@ -233,7 +230,6 @@ test_files:
|
|
233
230
|
- test/unitwise/expression/decomposer_test.rb
|
234
231
|
- test/unitwise/expression/matcher_test.rb
|
235
232
|
- test/unitwise/expression/parser_test.rb
|
236
|
-
- test/unitwise/ext/numeric_test.rb
|
237
233
|
- test/unitwise/functional_test.rb
|
238
234
|
- test/unitwise/measurement_test.rb
|
239
235
|
- test/unitwise/prefix_test.rb
|
data/lib/unitwise/ext.rb
DELETED
data/lib/unitwise/ext/numeric.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
# Unitwise extends Numeric to add these dyanmic method conveniences: `1.meter`,
|
2
|
-
# `26.2.to_mile`, and `4.convert_to("Joule")`. These overrides are optional
|
3
|
-
# and may be enabled with `require 'unitwise/ext'`. These methods are known to
|
4
|
-
# reduce performance, as well as violate Ruby best practices. They are
|
5
|
-
# deprecated and will be removed in a future version.
|
6
|
-
class Numeric
|
7
|
-
# Converts numeric to a measurement
|
8
|
-
# @param unit [Unitwise::Unit, String] The unit to use in the measurement
|
9
|
-
# @return [Unitwise::Measurement]
|
10
|
-
# @example
|
11
|
-
# 26.2.convert_to('mile') # => #<Unitwise::Measurement 1 mile>
|
12
|
-
# @api public
|
13
|
-
def convert_to(unit)
|
14
|
-
Unitwise::Measurement.new(self, unit)
|
15
|
-
end
|
16
|
-
|
17
|
-
# Converts numeric to a measurement by the method name
|
18
|
-
# @example
|
19
|
-
# 26.2.mile # => #<Unitwise::Measurement 26.2 mile>
|
20
|
-
# 100.to_foot # => #<Unitwise::Measurement 100 foot>
|
21
|
-
# @api semipublic
|
22
|
-
def method_missing(meth, *args, &block)
|
23
|
-
if args.empty? && !block_given?
|
24
|
-
unit = (match = /\Ato_(\w+)\Z/.match(meth.to_s)) ? match[1] : meth
|
25
|
-
converted = begin
|
26
|
-
convert_to(unit)
|
27
|
-
rescue Unitwise::ExpressionError
|
28
|
-
nil
|
29
|
-
end
|
30
|
-
end
|
31
|
-
if converted
|
32
|
-
Numeric.define_unit_conversion_methods_for(unit)
|
33
|
-
converted
|
34
|
-
else
|
35
|
-
super(meth, *args, &block)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.define_unit_conversion_methods_for(name)
|
40
|
-
[name.to_sym, "to_#{ name }".to_sym].each do |meth|
|
41
|
-
next if method_defined?(meth)
|
42
|
-
define_method meth do
|
43
|
-
convert_to(name)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'unitwise/ext'
|
3
|
-
describe Numeric do
|
4
|
-
describe "#convert" do
|
5
|
-
it "must work for Integer" do
|
6
|
-
measurement = 22.convert_to("kg")
|
7
|
-
measurement.must_be_instance_of(Unitwise::Measurement)
|
8
|
-
measurement.value.must_equal 22
|
9
|
-
end
|
10
|
-
it "must work for Fixnum" do
|
11
|
-
measurement = 24.25.convert_to("[ft_i]")
|
12
|
-
measurement.must_be_instance_of(Unitwise::Measurement)
|
13
|
-
measurement.value.must_equal 24.25
|
14
|
-
end
|
15
|
-
it "must work for Float" do
|
16
|
-
measurement = (22.0/7).convert_to("[mi_i]")
|
17
|
-
measurement.must_be_instance_of(Unitwise::Measurement)
|
18
|
-
measurement.value.must_equal 3.142857142857143
|
19
|
-
end
|
20
|
-
it "must work for Rational" do
|
21
|
-
measurement = Rational(22/7).convert_to("N/m2")
|
22
|
-
measurement.must_be_instance_of(Unitwise::Measurement)
|
23
|
-
measurement.value.must_equal Rational(22/7)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "#method_missing" do
|
28
|
-
it "must match 'mm'" do
|
29
|
-
mm = 2.5.mm
|
30
|
-
mm.must_be_instance_of(Unitwise::Measurement)
|
31
|
-
mm.value.must_equal 2.5
|
32
|
-
1.0.respond_to?(:mm).must_equal true
|
33
|
-
3.respond_to?(:to_mm).must_equal true
|
34
|
-
end
|
35
|
-
it "must match 'to_mm'" do
|
36
|
-
mm = 2.5.to_mm
|
37
|
-
mm.must_be_instance_of(Unitwise::Measurement)
|
38
|
-
mm.value.must_equal 2.5
|
39
|
-
4.0.methods.grep(/mm/).count.must_equal 2
|
40
|
-
1.methods.grep(/mm/).count.must_equal 2
|
41
|
-
end
|
42
|
-
|
43
|
-
it "must not match 'foo'" do
|
44
|
-
lambda { 1.foo }.must_raise NoMethodError
|
45
|
-
end
|
46
|
-
|
47
|
-
it "must not match 'to_foo'" do
|
48
|
-
lambda { 1.to_foo }.must_raise NoMethodError
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
|
54
|
-
end
|