nutella 0.12 → 0.13.1

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: ef8876f7754fa5b0b422e9ab7ca092e9298ee436
4
- data.tar.gz: 63636995f8ba8417326f52026f07ff0c5fc33272
2
+ SHA256:
3
+ metadata.gz: 5717428d738f3f8e6978218c059285a055c95bd3754a56050583673b23c81ccf
4
+ data.tar.gz: 653d131499dbbea4275a404f90cf95bcd82afc5b5bb37d658cac69be0b9a88d5
5
5
  SHA512:
6
- metadata.gz: 77c51d26b2d0af83884a6e188993e5c4e58d3b4e71bd3bb59310660820c37082dbcdba45e31529c02c50c0346d6927ea09374c9aaa29c5e3d4b2e250e50ed68b
7
- data.tar.gz: bd3e50152263964033c4cf070c8d7c4c2208b2f32d319f56f47164026cf85d07aabace679a7816d7bd264c5acfb7e58d7d8a79ef3795c7d40611720295915ece
6
+ metadata.gz: 9fe6c2c8e7fa6a4efb2c56fcb8ed37b29544dd8f4dbbe57a23f403e9e420a138dd2675306dc191b6ab4d5565b691978b6ac25f46bf33e9f57f928765a1eb369c
7
+ data.tar.gz: e940732a999beeee930874960329c1382ac6bcf49db26bb847b24508a13ab5224db3249c8af96fce6714a3ddd7a00a483aa42c76adad46786f92530d0be6e611
File without changes
@@ -0,0 +1,37 @@
1
+ class Numeric
2
+ # Formats a number as a currency string.
3
+ #
4
+ # @param [Hash] opts the options hash
5
+ # @option opts [String] :sign the currency sign
6
+ # @option opts [Symbol] :position the position of the currency sign
7
+ # @option opts [Integer] :precision amount of decimal places to display
8
+ # @option opts [String] :separator the separator between the ones and tenths
9
+ # @option opts [String] :delimiter the thousands delimiter
10
+ # @option opts [Boolean] :pretty sets 0 precision for whole amounts
11
+ #
12
+ # @return [String] the number in a currency format
13
+ def to_currency(opts = {})
14
+ opts = {
15
+ sign: "$",
16
+ position: :left,
17
+ precision: 2,
18
+ separator: ".",
19
+ delimiter: ",",
20
+ pretty: false
21
+ }.merge(opts)
22
+
23
+ opts[:precision] = 0 if opts[:pretty] && (self - self.floor).round(3) < 0.005
24
+
25
+ # Must round it outside also as the %f formatter always rounds down
26
+ ("%.#{opts[:precision]}f" % self.round(opts[:precision])).
27
+ # Apply thousands delimiter
28
+ gsub(/(\d)(?=(\d{3})+(?!\d))/, "\\1#{opts[:delimiter]}").
29
+ # Apply unit separator
30
+ gsub(/\.(\d{#{opts[:precision]}})$/, "#{opts[:separator]}\\1").
31
+ # Now put the sign on with #prepend or #concat depending on which side
32
+ send(
33
+ {left: :prepend, right: :concat}[opts[:position]],
34
+ opts[:sign] || ""
35
+ )
36
+ end
37
+ end
@@ -13,12 +13,8 @@ class String
13
13
  #
14
14
  # @return [String] the string with excess leading whitespace stripped
15
15
  def heredoc
16
- gsub /^[ \t]{#{scan(/^[ \t]*(?=\S)/).min.size || 0}}/, ""
16
+ gsub /^[ \t]{#{scan(/^[ \t]*(?=\S)/).min.size}}/, ""
17
17
  end
18
18
  alias format_heredoc heredoc
19
19
  alias strip_heredoc heredoc
20
-
21
- def in_heredoc indentation
22
- lines[1..-1].map { |line| line.prepend " " * indentation }.join "\n"
23
- end
24
20
  end
@@ -1,4 +1,4 @@
1
1
  module Nutella
2
2
  # The current version of Nutella.
3
- VERSION = "0.12"
3
+ VERSION = "0.13.1"
4
4
  end
data/nutella.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
 
7
7
  gem.author = "Vinny Diehl"
8
8
  gem.email = "vinny.diehl@gmail.com"
9
- gem.homepage = "https://github.com/gbchaosmaster/nutella"
9
+ gem.homepage = "https://github.com/vinnydiehl/nutella"
10
10
 
11
11
  gem.license = "MIT"
12
12
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
19
19
  .rspec LICENSE Rakefile README.md nutella.gemspec
20
20
  ]
21
21
 
22
- gem.required_ruby_version = "~> 2.0"
22
+ gem.required_ruby_version = ">= 2.0"
23
23
  gem.add_development_dependency "fuubar", "~> 2.0"
24
24
  gem.add_development_dependency "rake", "~> 10.0"
25
25
  gem.add_development_dependency "redcarpet", "~> 2.2"
@@ -37,6 +37,60 @@ describe Numeric do
37
37
  end
38
38
  end
39
39
 
40
+ describe "#to_currency" do
41
+ context "when used with no options" do
42
+ it "returns a USD style string with 2 decimals precision" do
43
+ expect(5.to_currency).to eq("$5.00")
44
+ expect(5.25.to_currency).to eq("$5.25")
45
+ end
46
+
47
+ it "rounds properly" do
48
+ expect(5.254.to_currency).to eq("$5.25")
49
+ expect(5.255.to_currency).to eq("$5.26")
50
+ end
51
+
52
+ it "uses ',' as a thousands separator" do
53
+ expect(5000.to_currency).to eq("$5,000.00")
54
+ expect(5e6.to_currency).to eq("$5,000,000.00")
55
+ expect(5e5.to_currency).to eq("$500,000.00")
56
+ expect(5e4.to_currency).to eq("$50,000.00")
57
+ end
58
+ end
59
+
60
+ context "when using pretty mode" do
61
+ it "strips decimals from whole numbers" do
62
+ expect(1.to_currency pretty: true).to eq("$1")
63
+ expect(1.to_currency pretty: true).to eq("$1")
64
+ end
65
+
66
+ it "keeps decimals if there are any cents" do
67
+ expect(1.01.to_currency pretty: true).to eq("$1.01")
68
+ expect(1.20.to_currency pretty: true).to eq("$1.20")
69
+ expect(1.21.to_currency pretty: true).to eq("$1.21")
70
+ end
71
+
72
+ it "only checks cents out to the hundredths" do
73
+ expect(5.004.to_currency pretty: true).to eq("$5")
74
+ expect(5.005.to_currency pretty: true).to eq("$5.01")
75
+ end
76
+ end
77
+
78
+ it "has an adjustable sign" do
79
+ expect(5.to_currency sign: "£").to eq("£5.00")
80
+ end
81
+
82
+ it "has adjustable unit separator and thousands delimiters" do
83
+ expect(5.to_currency separator: ",").to eq("$5,00")
84
+ expect(5e3.to_currency separator: ",", delimiter: ".").to eq("$5.000,00")
85
+ end
86
+
87
+ it "has adjustable sign position" do
88
+ expect(5000.5.to_currency sign: " €", position: :right,
89
+ separator: ",", delimiter: " ").
90
+ to eq("5 000,50 €")
91
+ end
92
+ end
93
+
40
94
  describe "#sanity_check_min" do
41
95
  it "returns the parameter if the number is lower" do
42
96
  expect(5.sanity_check_min(7)).to eq(7)
@@ -45,32 +45,5 @@ This text should be left-aligned.
45
45
  Left-aligned again.
46
46
  EOS
47
47
  end
48
-
49
- =begin
50
- it "works with string interpolation" do
51
- short = "Test"
52
- inner = <<-EOS.heredoc.strip
53
- This text should be left-aligned.
54
- This is indented by two.
55
- Last line of the inner string, left-aligned.
56
- EOS
57
-
58
- test = <<-EOS.heredoc
59
- Testing short in-line: #{short}
60
- Testing next-line:
61
- #{inner.in_heredoc 8}
62
- Ending interpolation test.
63
- EOS
64
-
65
- test.should == <<EOS
66
- Testing short in-line: Test
67
- Testing next-line:
68
- This text should be left-aligned.
69
- This is indented by two.
70
- Last line of the inner string, left-aligned.
71
- Ending interpolation test.
72
- EOS
73
- end
74
- =end
75
48
  end
76
49
  end
File without changes
File without changes
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nutella
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.12'
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinny Diehl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-04 00:00:00.000000000 Z
11
+ date: 2022-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fuubar
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
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
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: redcarpet
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2.2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rdoc
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.12'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.12'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '3.1'
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
82
  version: '3.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: yard
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0.8'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0.8'
97
97
  description: My collection of Ruby utilities, mainly core extensions.
@@ -100,55 +100,56 @@ executables: []
100
100
  extensions: []
101
101
  extra_rdoc_files: []
102
102
  files:
103
+ - ".rspec"
104
+ - LICENSE
105
+ - README.md
106
+ - Rakefile
107
+ - lib/nutella.rb
103
108
  - lib/nutella/core_ext.rb
104
- - lib/nutella/version.rb
105
- - lib/nutella/input.rb
106
109
  - lib/nutella/core_ext/enumerable.rb
107
- - lib/nutella/core_ext/module.rb
108
- - lib/nutella/core_ext/string.rb
109
- - lib/nutella/core_ext/string/exclude.rb
110
- - lib/nutella/core_ext/string/colour.rb
111
- - lib/nutella/core_ext/string/heredoc.rb
112
- - lib/nutella/core_ext/string/aliases.rb
113
- - lib/nutella/core_ext/integer/multiples.rb
114
- - lib/nutella/core_ext/integer/format.rb
115
- - lib/nutella/core_ext/integer/digits.rb
116
- - lib/nutella/core_ext/integer.rb
117
- - lib/nutella/core_ext/object/blank.rb
118
- - lib/nutella/core_ext/object/aliases.rb
110
+ - lib/nutella/core_ext/enumerable/apply.rb
111
+ - lib/nutella/core_ext/enumerable/group.rb
112
+ - lib/nutella/core_ext/enumerable/map.rb
113
+ - lib/nutella/core_ext/enumerable/search.rb
114
+ - lib/nutella/core_ext/enumerable/sum.rb
115
+ - lib/nutella/core_ext/file.rb
119
116
  - lib/nutella/core_ext/hash.rb
117
+ - lib/nutella/core_ext/integer.rb
118
+ - lib/nutella/core_ext/integer/digits.rb
119
+ - lib/nutella/core_ext/integer/format.rb
120
+ - lib/nutella/core_ext/integer/multiples.rb
121
+ - lib/nutella/core_ext/module.rb
120
122
  - lib/nutella/core_ext/numeric.rb
121
- - lib/nutella/core_ext/numeric/sanity_check.rb
122
123
  - lib/nutella/core_ext/numeric/bytes.rb
124
+ - lib/nutella/core_ext/numeric/format.rb
123
125
  - lib/nutella/core_ext/numeric/percent.rb
126
+ - lib/nutella/core_ext/numeric/sanity_check.rb
124
127
  - lib/nutella/core_ext/object.rb
125
- - lib/nutella/core_ext/file.rb
126
- - lib/nutella/core_ext/enumerable/map.rb
127
- - lib/nutella/core_ext/enumerable/apply.rb
128
- - lib/nutella/core_ext/enumerable/sum.rb
129
- - lib/nutella/core_ext/enumerable/search.rb
130
- - lib/nutella/core_ext/enumerable/group.rb
131
- - lib/nutella.rb
132
- - spec/nutella/core_ext/file_spec.rb
133
- - spec/nutella/core_ext/string_spec.rb
134
- - spec/nutella/core_ext/module_spec.rb
128
+ - lib/nutella/core_ext/object/aliases.rb
129
+ - lib/nutella/core_ext/object/blank.rb
130
+ - lib/nutella/core_ext/string.rb
131
+ - lib/nutella/core_ext/string/aliases.rb
132
+ - lib/nutella/core_ext/string/colour.rb
133
+ - lib/nutella/core_ext/string/exclude.rb
134
+ - lib/nutella/core_ext/string/heredoc.rb
135
+ - lib/nutella/input.rb
136
+ - lib/nutella/version.rb
137
+ - nutella.gemspec
135
138
  - spec/nutella/core_ext/enumerable_spec.rb
136
- - spec/nutella/core_ext/numeric_spec.rb
139
+ - spec/nutella/core_ext/file_spec.rb
137
140
  - spec/nutella/core_ext/hash_spec.rb
138
141
  - spec/nutella/core_ext/integer_spec.rb
142
+ - spec/nutella/core_ext/module_spec.rb
143
+ - spec/nutella/core_ext/numeric_spec.rb
139
144
  - spec/nutella/core_ext/object_spec.rb
145
+ - spec/nutella/core_ext/string_spec.rb
146
+ - spec/spec_helper.rb
140
147
  - spec/support/alias.rb
141
- - spec/support/number_formats.rb
142
148
  - spec/support/apply_tester.rb
143
- - spec/support/matchers.rb
144
149
  - spec/support/initializer_testers.rb
145
- - spec/spec_helper.rb
146
- - .rspec
147
- - LICENSE
148
- - Rakefile
149
- - README.md
150
- - nutella.gemspec
151
- homepage: https://github.com/gbchaosmaster/nutella
150
+ - spec/support/matchers.rb
151
+ - spec/support/number_formats.rb
152
+ homepage: https://github.com/vinnydiehl/nutella
152
153
  licenses:
153
154
  - MIT
154
155
  metadata: {}
@@ -158,33 +159,31 @@ require_paths:
158
159
  - lib
159
160
  required_ruby_version: !ruby/object:Gem::Requirement
160
161
  requirements:
161
- - - ~>
162
+ - - ">="
162
163
  - !ruby/object:Gem::Version
163
164
  version: '2.0'
164
165
  required_rubygems_version: !ruby/object:Gem::Requirement
165
166
  requirements:
166
- - - '>='
167
+ - - ">="
167
168
  - !ruby/object:Gem::Version
168
169
  version: '0'
169
170
  requirements: []
170
- rubyforge_project:
171
- rubygems_version: 2.0.14
171
+ rubygems_version: 3.3.5
172
172
  signing_key:
173
173
  specification_version: 4
174
174
  summary: Spread some Nutella on Ruby to sweeten up its functionality.
175
175
  test_files:
176
- - spec/nutella/core_ext/file_spec.rb
177
- - spec/nutella/core_ext/string_spec.rb
178
- - spec/nutella/core_ext/module_spec.rb
179
176
  - spec/nutella/core_ext/enumerable_spec.rb
180
- - spec/nutella/core_ext/numeric_spec.rb
177
+ - spec/nutella/core_ext/file_spec.rb
181
178
  - spec/nutella/core_ext/hash_spec.rb
182
179
  - spec/nutella/core_ext/integer_spec.rb
180
+ - spec/nutella/core_ext/module_spec.rb
181
+ - spec/nutella/core_ext/numeric_spec.rb
183
182
  - spec/nutella/core_ext/object_spec.rb
183
+ - spec/nutella/core_ext/string_spec.rb
184
+ - spec/spec_helper.rb
184
185
  - spec/support/alias.rb
185
- - spec/support/number_formats.rb
186
186
  - spec/support/apply_tester.rb
187
- - spec/support/matchers.rb
188
187
  - spec/support/initializer_testers.rb
189
- - spec/spec_helper.rb
190
- has_rdoc:
188
+ - spec/support/matchers.rb
189
+ - spec/support/number_formats.rb