has_money 0.2.1 → 0.3.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.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,5 @@
1
- ## 0.2.1
1
+ ## 0.3.0
2
+ * Adds support for negative signs when converting ([@samvincent][])
2
3
 
4
+ ## 0.2.1
3
5
  * Add support for "39." as a dollar value #=> 3900 cents ([@gregbell][])
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ group :development do
4
+ gem "bundler"
5
+ gem "activerecord"
6
+ gem "rspec", "~> 2.8.0"
7
+ gem "jeweler", "~> 1.8.4"
8
+ end
data/Rakefile CHANGED
@@ -1,45 +1,33 @@
1
- require 'rubygems'
2
- require 'rake'
1
+ # encoding: utf-8
3
2
 
3
+ require 'rubygems'
4
+ require 'bundler'
4
5
  begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "has_money"
8
- gem.summary = "Parsing the various ways people enter dollar amounts so you don't have to."
9
- gem.description = "Parsing the various ways people enter dollar amounts so you don't have to. Store values in cents as integer."
10
- gem.email = "sam.vincent@mac.com"
11
- gem.homepage = "http://github.com/samvincent/has_money"
12
- gem.authors = ["Greg Bell", "Sam Vincent", "Philippe Creux"]
13
- gem.add_development_dependency "rspec", ">= 1.2.9"
14
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
- end
16
- Jeweler::GemcutterTasks.new
17
- rescue LoadError
18
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
19
11
  end
12
+ require 'rake'
20
13
 
21
- require 'spec/rake/spectask'
22
- Spec::Rake::SpecTask.new(:spec) do |spec|
23
- spec.libs << 'lib' << 'spec'
24
- spec.spec_files = FileList['spec/**/*_spec.rb']
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "has_money"
18
+ gem.summary = "Parsing the various ways people enter dollar amounts so you don't have to."
19
+ gem.description = "Parsing the various ways people enter dollar amounts so you don't have to. Store values in cents as integer."
20
+ gem.email = "sam.vincent@mac.com"
21
+ gem.homepage = "http://github.com/samvincent/has_money"
22
+ gem.authors = ["Greg Bell", "Sam Vincent", "Philippe Creux"]
23
+ # dependencies defined in Gemfile
25
24
  end
25
+ Jeweler::RubygemsDotOrgTasks.new
26
26
 
27
- Spec::Rake::SpecTask.new(:rcov) do |spec|
28
- spec.libs << 'lib' << 'spec'
29
- spec.pattern = 'spec/**/*_spec.rb'
30
- spec.rcov = true
27
+ require 'rspec/core'
28
+ require 'rspec/core/rake_task'
29
+ RSpec::Core::RakeTask.new(:spec) do |spec|
30
+ spec.pattern = FileList['spec/**/*_spec.rb']
31
31
  end
32
32
 
33
- task :spec => :check_dependencies
34
-
35
33
  task :default => :spec
36
-
37
- require 'rake/rdoctask'
38
- Rake::RDocTask.new do |rdoc|
39
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
40
-
41
- rdoc.rdoc_dir = 'rdoc'
42
- rdoc.title = "awesome #{version}"
43
- rdoc.rdoc_files.include('README*')
44
- rdoc.rdoc_files.include('lib/**/*.rb')
45
- end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.3.0
data/has_money.gemspec CHANGED
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{has_money}
8
- s.version = "0.2.1"
7
+ s.name = "has_money"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Greg Bell}, %q{Sam Vincent}, %q{Philippe Creux}]
12
- s.date = %q{2011-10-11}
13
- s.description = %q{Parsing the various ways people enter dollar amounts so you don't have to. Store values in cents as integer.}
14
- s.email = %q{sam.vincent@mac.com}
11
+ s.authors = ["Greg Bell", "Sam Vincent", "Philippe Creux"]
12
+ s.date = "2013-04-11"
13
+ s.description = "Parsing the various ways people enter dollar amounts so you don't have to. Store values in cents as integer."
14
+ s.email = "sam.vincent@mac.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.rdoc"
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.files = [
20
20
  ".document",
21
21
  "CHANGELOG.md",
22
+ "Gemfile",
22
23
  "LICENSE",
23
24
  "README.rdoc",
24
25
  "Rakefile",
@@ -27,21 +28,30 @@ Gem::Specification.new do |s|
27
28
  "lib/has_money.rb",
28
29
  "spec/has_money_spec.rb"
29
30
  ]
30
- s.homepage = %q{http://github.com/samvincent/has_money}
31
- s.require_paths = [%q{lib}]
32
- s.rubygems_version = %q{1.8.6}
33
- s.summary = %q{Parsing the various ways people enter dollar amounts so you don't have to.}
31
+ s.homepage = "http://github.com/samvincent/has_money"
32
+ s.require_paths = ["lib"]
33
+ s.rubygems_version = "1.8.25"
34
+ s.summary = "Parsing the various ways people enter dollar amounts so you don't have to."
34
35
 
35
36
  if s.respond_to? :specification_version then
36
37
  s.specification_version = 3
37
38
 
38
39
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
39
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
40
+ s.add_development_dependency(%q<bundler>, [">= 0"])
41
+ s.add_development_dependency(%q<activerecord>, [">= 0"])
42
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
43
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
40
44
  else
41
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
45
+ s.add_dependency(%q<bundler>, [">= 0"])
46
+ s.add_dependency(%q<activerecord>, [">= 0"])
47
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
48
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
42
49
  end
43
50
  else
44
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
51
+ s.add_dependency(%q<bundler>, [">= 0"])
52
+ s.add_dependency(%q<activerecord>, [">= 0"])
53
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
54
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
45
55
  end
46
56
  end
47
57
 
data/lib/has_money.rb CHANGED
@@ -32,7 +32,7 @@ module HasMoney
32
32
 
33
33
  dollars = dollars.to_s.gsub(/[$,]/, "").strip
34
34
  dollars[0] = '0.' if dollars =~ /^\.\d{1,2}/
35
- return nil unless dollars.match(/^\d+\.?(\d+)?$/) # xx.xxx
35
+ return nil unless dollars.match(/^-?\d+\.?(\d+)?$/) # xx.xxx
36
36
 
37
37
  (BigDecimal(dollars).round(2) * 100).to_i
38
38
  end
@@ -34,6 +34,11 @@ describe HasMoney do
34
34
  it "should return the amount in dollars" do
35
35
  @product.price_in_dollars.should == '29.99'
36
36
  end
37
+
38
+ it "should return the amount in dollars correctly when negative" do
39
+ @product.price = -4200
40
+ @product.price_in_dollars.should == '-42.00'
41
+ end
37
42
 
38
43
  it "should set the amount in dollars with a float" do
39
44
  @product.price_in_dollars = 39.99
@@ -99,7 +104,12 @@ describe HasMoney do
99
104
  @product.price_in_dollars = 'two dollars'
100
105
  @product.price.should == nil
101
106
  end
102
-
107
+
108
+ it "should respect negative signs" do
109
+ @product.price_in_dollars = '-$8.12'
110
+ @product.price.should == -812
111
+ end
112
+
103
113
  it "should return string formatted to two decimal places" do
104
114
  @product.price_in_dollars = '99'
105
115
  @product.price_in_dollars.should == '99.00'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_money
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,19 +11,72 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-10-11 00:00:00.000000000Z
14
+ date: 2013-04-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: rspec
18
- requirement: &70191540633080 !ruby/object:Gem::Requirement
17
+ name: bundler
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: activerecord
34
+ requirement: !ruby/object:Gem::Requirement
19
35
  none: false
20
36
  requirements:
21
37
  - - ! '>='
22
38
  - !ruby/object:Gem::Version
23
- version: 1.2.9
39
+ version: '0'
24
40
  type: :development
25
41
  prerelease: false
26
- version_requirements: *70191540633080
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 2.8.0
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: 2.8.0
64
+ - !ruby/object:Gem::Dependency
65
+ name: jeweler
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ~>
70
+ - !ruby/object:Gem::Version
71
+ version: 1.8.4
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: 1.8.4
27
80
  description: Parsing the various ways people enter dollar amounts so you don't have
28
81
  to. Store values in cents as integer.
29
82
  email: sam.vincent@mac.com
@@ -35,6 +88,7 @@ extra_rdoc_files:
35
88
  files:
36
89
  - .document
37
90
  - CHANGELOG.md
91
+ - Gemfile
38
92
  - LICENSE
39
93
  - README.rdoc
40
94
  - Rakefile
@@ -62,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
62
116
  version: '0'
63
117
  requirements: []
64
118
  rubyforge_project:
65
- rubygems_version: 1.8.6
119
+ rubygems_version: 1.8.25
66
120
  signing_key:
67
121
  specification_version: 3
68
122
  summary: Parsing the various ways people enter dollar amounts so you don't have to.