humanize 1.2.1 → 1.2.2

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
2
  SHA1:
3
- metadata.gz: 16a8bb6b7223ea05173df5edfa4fba58d6c8eb26
4
- data.tar.gz: c76ee281e953826a9be5bab803e9c5c72aa91791
3
+ metadata.gz: 2f4b736de653e7f262d1be96c6b0be4f5bfd7dad
4
+ data.tar.gz: 47a8b9e66ed64ea87ae09fafd3b8d8020c323d6b
5
5
  SHA512:
6
- metadata.gz: cbd37e3919d8162155ed283507df8cb002fc0f66a5e1f0511c3ecbef663740994e7970493727534f53a3038dbd0ed386cf9f863dca85835242d954b02e5fb50e
7
- data.tar.gz: adfe7d5af52b27d43437eaa4ba0a58da42f5f2d30662d8384bf964a8d3e4fd64ff9e7e02c158476b3013f4492c2114ae029a0a6c9ae56e74b388d21ae7cd4260
6
+ metadata.gz: 97d8614d71b227474f395af1c94e8b026c42f9ab3aa2b4d7ecd04319b017785e120ff13f708f80407413f7a32710472dd8e965e4bbb69b487a865ea5b3595555
7
+ data.tar.gz: 15126879e6a876b89a2cff78f331695dc393354bded16f5ca2997112fae8e81c74fb9570a1466e49711c150385296b51dc89b34cf16487a5db5f4379989c347f
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ .byebug_history
data/.travis.yml CHANGED
@@ -13,3 +13,4 @@ sudo: false
13
13
 
14
14
  before_install:
15
15
  - gem install bundler
16
+ - gem install rspec
data/Gemfile.lock ADDED
@@ -0,0 +1,104 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ humanize (1.2.2)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ abstract_type (0.0.7)
10
+ adamantium (0.2.0)
11
+ ice_nine (~> 0.11.0)
12
+ memoizable (~> 0.4.0)
13
+ anima (0.3.0)
14
+ abstract_type (~> 0.0.7)
15
+ adamantium (~> 0.2)
16
+ equalizer (~> 0.0.11)
17
+ ast (2.3.0)
18
+ byebug (9.0.6)
19
+ coderay (1.1.1)
20
+ concord (0.1.5)
21
+ adamantium (~> 0.2.0)
22
+ equalizer (~> 0.0.9)
23
+ diff-lcs (1.2.5)
24
+ equalizer (0.0.11)
25
+ ice_nine (0.11.2)
26
+ memoizable (0.4.2)
27
+ thread_safe (~> 0.3, >= 0.3.1)
28
+ method_source (0.8.2)
29
+ morpher (0.2.6)
30
+ abstract_type (~> 0.0.7)
31
+ adamantium (~> 0.2.0)
32
+ anima (~> 0.3.0)
33
+ ast (~> 2.2)
34
+ concord (~> 0.1.5)
35
+ equalizer (~> 0.0.9)
36
+ ice_nine (~> 0.11.0)
37
+ procto (~> 0.0.2)
38
+ mutant (0.8.12)
39
+ abstract_type (~> 0.0.7)
40
+ adamantium (~> 0.2.0)
41
+ anima (~> 0.3.0)
42
+ ast (~> 2.2)
43
+ concord (~> 0.1.5)
44
+ diff-lcs (~> 1.2)
45
+ equalizer (~> 0.0.9)
46
+ ice_nine (~> 0.11.1)
47
+ memoizable (~> 0.4.2)
48
+ morpher (~> 0.2.6)
49
+ parallel (~> 1.3)
50
+ parser (~> 2.3.1, >= 2.3.1.4)
51
+ procto (~> 0.0.2)
52
+ regexp_parser (~> 0.3.6)
53
+ unparser (~> 0.2.5)
54
+ mutant-rspec (0.8.11)
55
+ mutant (~> 0.8.11)
56
+ rspec-core (>= 3.4.0, < 3.6.0)
57
+ parallel (1.9.0)
58
+ parser (2.3.1.4)
59
+ ast (~> 2.2)
60
+ procto (0.0.3)
61
+ pry (0.10.4)
62
+ coderay (~> 1.1.0)
63
+ method_source (~> 0.8.1)
64
+ slop (~> 3.4)
65
+ pry-byebug (3.4.0)
66
+ byebug (~> 9.0)
67
+ pry (~> 0.10)
68
+ regexp_parser (0.3.6)
69
+ rspec (3.5.0)
70
+ rspec-core (~> 3.5.0)
71
+ rspec-expectations (~> 3.5.0)
72
+ rspec-mocks (~> 3.5.0)
73
+ rspec-core (3.5.4)
74
+ rspec-support (~> 3.5.0)
75
+ rspec-expectations (3.5.0)
76
+ diff-lcs (>= 1.2.0, < 2.0)
77
+ rspec-support (~> 3.5.0)
78
+ rspec-mocks (3.5.0)
79
+ diff-lcs (>= 1.2.0, < 2.0)
80
+ rspec-support (~> 3.5.0)
81
+ rspec-support (3.5.0)
82
+ slop (3.6.0)
83
+ thread_safe (0.3.5)
84
+ unparser (0.2.5)
85
+ abstract_type (~> 0.0.7)
86
+ adamantium (~> 0.2.0)
87
+ concord (~> 0.1.5)
88
+ diff-lcs (~> 1.2.5)
89
+ equalizer (~> 0.0.9)
90
+ parser (~> 2.3.0)
91
+ procto (~> 0.0.2)
92
+
93
+ PLATFORMS
94
+ ruby
95
+
96
+ DEPENDENCIES
97
+ humanize!
98
+ mutant
99
+ mutant-rspec
100
+ pry-byebug
101
+ rspec
102
+
103
+ BUNDLED WITH
104
+ 1.13.5
data/README.markdown CHANGED
@@ -78,6 +78,12 @@ Currently supported locales: `:en` and `:fr`
78
78
  2. 0.120000 0.000000 0.120000 ( 0.116230)
79
79
  3. 0.130000 0.000000 0.130000 ( 0.122856)
80
80
 
81
+ ## Testing
82
+
83
+ Install development dependencies by running `bundle install`.
84
+
85
+ You can run mutation testing by calling `bin/run_mutant`.
86
+
81
87
  ## Credits
82
88
 
83
89
  * *Original idea*: Brenton Fletcher
data/bin/run_mutant ADDED
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ mutant --include lib --require humanize --use rspec Humanize
data/humanize.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "humanize"
6
- s.version = "1.2.1"
6
+ s.version = "1.2.2"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib"]
@@ -17,4 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.summary = "Extension to Numeric to humanize numbers"
18
18
 
19
19
  s.add_development_dependency 'rspec'
20
+ s.add_development_dependency 'mutant'
21
+ s.add_development_dependency 'mutant-rspec'
22
+ s.add_development_dependency 'pry-byebug'
20
23
  end
data/lib/humanize.rb CHANGED
@@ -26,7 +26,7 @@ module Humanize
26
26
  sets << LOTS[locale][i] + (!sets.empty? ? (f ? ' ' + WORDS[locale][:and] : WORDS[locale][:comma]) : '') if !(r.zero? || i.zero?)
27
27
  f = true if i.zero? && r < 100
28
28
 
29
- sets << SUB_ONE_THOUSAND[locale][r] if !r.zero?
29
+ sets << SUB_ONE_THOUSAND[locale][r] if !r.zero? && !exactly_one_thousand_in_french?(locale, r, sets)
30
30
  i = i.succ
31
31
 
32
32
  end
@@ -40,7 +40,7 @@ module Humanize
40
40
  end
41
41
  o += ' ' + WORDS[locale][:point] + ' ' + decimals_as_words
42
42
  end
43
- o
43
+ o.gsub(/ +/, ' ')
44
44
  end
45
45
 
46
46
  class << self
@@ -61,6 +61,10 @@ module Humanize
61
61
 
62
62
  private
63
63
 
64
+ def exactly_one_thousand_in_french?(locale, r, sets)
65
+ locale == :fr && r == 1 && sets.last.to_s.strip == 'mille'
66
+ end
67
+
64
68
  class Configuration
65
69
  attr_accessor :default_locale, :decimals_as
66
70
 
data/lib/words.rb CHANGED
@@ -10,7 +10,7 @@ WORDS = {
10
10
  :negative => 'négatif',
11
11
  :zero => 'zéro',
12
12
  :point => 'virgule',
13
- :and => 'et',
13
+ :and => '',
14
14
  :comma => ''
15
15
  }
16
16
  }
@@ -1,8 +1,7 @@
1
- require 'rubygems'
2
- require 'humanize'
3
- require 'rspec'
1
+ require 'spec_helper'
4
2
 
5
3
  module Humanize
4
+
6
5
  describe Configuration do
7
6
 
8
7
  after(:each) do
@@ -1,6 +1,4 @@
1
- require 'rubygems'
2
- require 'humanize'
3
- require 'rspec'
1
+ require 'spec_helper'
4
2
 
5
3
  describe "Humanize" do
6
4
  require_relative 'tests'
@@ -19,12 +17,52 @@ describe "Humanize" do
19
17
 
20
18
  it 'uses default locale' do
21
19
  Humanize.config.default_locale = :fr
22
- expect(42.humanize).to eql("quarante-deux".gsub(/ +/, ' '))
20
+ expect(42.humanize).to eql('quarante-deux')
23
21
  end
24
22
 
25
23
  it 'uses locale passed as argument if given' do
26
24
  Humanize.config.default_locale = :en
27
- expect(42.humanize(:locale => :fr)).to eql("quarante-deux".gsub(/ +/, ' '))
25
+ expect(42.humanize(:locale => :fr)).to eql('quarante-deux')
26
+ end
27
+
28
+ describe 'french specific rules' do
29
+
30
+ it 'one thousand and one equals "mille un"' do
31
+ expect(1002.humanize(:locale => :fr)).to eql('mille deux')
32
+ end
33
+
34
+ it 'two thousand and one equals "deux mille un"' do
35
+ expect(2001.humanize(:locale => :fr)).to eql('deux mille un')
36
+ end
37
+
38
+ it 'ten thousand equals "dix mille"' do
39
+ expect(2001.humanize(:locale => :fr)).to eql('deux mille un')
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
46
+ describe 'decimals_as option' do
47
+
48
+ it 'uses value from configuration' do
49
+ Humanize.config.decimals_as = :number
50
+ expect(0.42.humanize).to eql('zero point forty-two')
51
+ end
52
+
53
+ it 'uses value passed as argument if given' do
54
+ Humanize.config.decimals_as = :number
55
+ expect(0.42.humanize(:decimals_as => :digits)).to eql('zero point four two')
56
+ end
57
+
58
+ end
59
+
60
+ describe 'both options work together' do
61
+
62
+ it 'work together' do
63
+ expect(
64
+ 0.42.humanize(:locale => :fr, :decimals_as => :number)
65
+ ).to eql('zéro virgule quarante-deux')
28
66
  end
29
67
 
30
68
  end
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'humanize'
3
+ require 'rspec'
4
+ require 'timeout'
5
+ # require 'pry-byebug'
6
+
7
+ RSpec.configure do |config|
8
+ config.around(:each) do |example|
9
+ Timeout.timeout(5, &example)
10
+ end
11
+ end
data/spec/tests.rb CHANGED
@@ -5,6 +5,7 @@ TESTS = [
5
5
  [8, "eight"],
6
6
  [11, "eleven"],
7
7
  [21, "twenty-one"],
8
+ [99, "ninety-nine"],
8
9
  [100, "one hundred"],
9
10
  [101, "one hundred and one"],
10
11
  [111, "one hundred and eleven"],
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: humanize
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Chen
@@ -25,19 +25,64 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: mutant
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: mutant-rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: pry-byebug
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
28
70
  description:
29
71
  email: radarlistener@gmail.com
30
72
  executables: []
31
73
  extensions: []
32
74
  extra_rdoc_files: []
33
75
  files:
76
+ - ".gitignore"
34
77
  - ".travis.yml"
35
78
  - Gemfile
79
+ - Gemfile.lock
36
80
  - LICENSE.md
37
81
  - README.markdown
38
82
  - Rakefile
39
83
  - Wordlist.source
40
84
  - bench.rb
85
+ - bin/run_mutant
41
86
  - humanize.gemspec
42
87
  - lib/cache.rb
43
88
  - lib/humanize.rb
@@ -47,6 +92,7 @@ files:
47
92
  - spec/TODO
48
93
  - spec/configuration_spec.rb
49
94
  - spec/humanize_spec.rb
95
+ - spec/spec_helper.rb
50
96
  - spec/tests.rb
51
97
  homepage: https://github.com/radar/humanize
52
98
  licenses: []
@@ -75,4 +121,5 @@ test_files:
75
121
  - spec/TODO
76
122
  - spec/configuration_spec.rb
77
123
  - spec/humanize_spec.rb
124
+ - spec/spec_helper.rb
78
125
  - spec/tests.rb