has_money 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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.