coinstar 0.0.3 → 0.0.4

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: c6537ae7c5712623af2103e58e30cc549a6c081e
4
- data.tar.gz: 43c3453ffbb24b8a59f3d5c6e50146a8c497a569
3
+ metadata.gz: 8a2960ea4b6ebd5418cdd74ff2798a1ce619f502
4
+ data.tar.gz: 1940c666e1f7b8fc1db9a142749d871eca6e457c
5
5
  SHA512:
6
- metadata.gz: cdaac7671b58765fa4d63c1c5a5fa45f18f292d8220568ef791d650d77c67f05d0b5a8511abbffcba5902e64044e5c456012228ba7babf1fb5f4d80970f4c84a
7
- data.tar.gz: 0fead1fbb0149cd2d0fc8cb33b951be35f1ea8fac3e83e8c1a2acca5e5af2c1f888a8dee1ad0bec2bbff92b8903c6af071d09627c0ffc0e8c14a7c6a41a97f49
6
+ metadata.gz: df32bb6cc0d6bc85375339fc31659f24f68e802639f9e3416cb4c3485994e2b8d352372cb0cb14b952ea18a811f858ab52f453605518edd5dd1975b2d748aa2e
7
+ data.tar.gz: 3c6b729d1b6cff6ef7062ca6bcb5de5fbefc7cb00dbfe515c39cb07860ed116a0c8991c6acfe1c3c455012af349fd3540db58e066d33a9c52275e7adf578eac0
data/README.md CHANGED
@@ -1,3 +1,38 @@
1
+ # Coinstar
2
+ [![Build Status](https://travis-ci.org/bswinnerton/coinstar.png)](https://travis-ci.org/bswinnerton/coinstar)
3
+ [![Code Climate](https://codeclimate.com/github/bswinnerton/coinstar.png)](https://codeclimate.com/github/bswinnerton/coinstar)
4
+ [![Coverage Status](https://coveralls.io/repos/bswinnerton/coinstar/badge.png?branch=master)](https://coveralls.io/r/bswinnerton/coinstar?branch=master)
5
+
6
+ ##### Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ gem 'coinstar'
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install coinstar
19
+
20
+ ##### Usage
21
+
22
+ Simply call `coinstar` as so:
23
+
24
+ ```
25
+ $ coinstar --make_change 98
26
+ ```
27
+
28
+ or
29
+
30
+ ```
31
+ $ coinstar --make_cents quarters=1 dimes=2 nickels=3 pennies=4
32
+ ```
33
+
34
+ #####Requirements
35
+
1
36
  ![GA_Logo](https://raw.github.com/generalassembly/ga-ruby-on-rails-for-devs/master/images/ga.png)
2
37
 
3
38
 
@@ -53,35 +88,3 @@ Your program should provide for the following functionality:
53
88
  - Simplicity/elegance of design (be prepared to discuss)
54
89
  - Maintainability (clean, code that is easy to understand and change)
55
90
  - Testing (We encourage RSpec)
56
-
57
-
58
- ### Gem Documentation
59
- [![Build Status](https://travis-ci.org/bswinnerton/coinstar.png)](https://travis-ci.org/bswinnerton/coinstar)
60
-
61
- ##### Installation
62
-
63
- Add this line to your application's Gemfile:
64
-
65
- gem 'coinstar'
66
-
67
- And then execute:
68
-
69
- $ bundle
70
-
71
- Or install it yourself as:
72
-
73
- $ gem install coinstar
74
-
75
- ##### Usage
76
-
77
- Simply call `coinstar` as so:
78
-
79
- ```
80
- coinstar --make_change 98
81
- ```
82
-
83
- or
84
-
85
- ```
86
- coinstar --make_cents quarters=1 dimes=2 nickels=3 pennies=4
87
- ```
data/coinstar.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'coinstar'
7
- spec.version = '0.0.3'
7
+ spec.version = '0.0.4'
8
8
  spec.authors = ['Brooks Swinnerton']
9
9
  spec.email = ['bswinnerton@gmail.com']
10
10
  spec.description = %q{GA Apprentice Code Challenge}
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'rake'
22
22
  spec.add_development_dependency 'pry'
23
23
  spec.add_development_dependency 'rspec'
24
+ spec.add_development_dependency 'coveralls'
24
25
 
25
26
  spec.add_runtime_dependency 'activesupport'
26
27
  end
@@ -11,18 +11,17 @@ class ChangeMachine
11
11
  calculated_change = sorted_currency.inject({}) do |change, (k,v)|
12
12
  unless cents < v
13
13
  divisible = cents / v
14
- change[k] = divisible
14
+ change[k.to_s.pluralize.to_sym] = divisible
15
15
  cents -= (CURRENCY[k] * divisible)
16
16
  end
17
17
  change
18
18
  end
19
- pluralize(calculated_change)
20
19
  end
21
20
 
22
21
  def self.make_cents(currency)
23
22
  begin
24
23
  currency.inject(0) do |cents, (k,v)|
25
- cents += (CURRENCY[singularize(k)] * v)
24
+ cents += (CURRENCY[k.to_s.singularize.to_sym] * v)
26
25
  cents
27
26
  end
28
27
  rescue NoMethodError
@@ -35,16 +34,4 @@ class ChangeMachine
35
34
  def self.sorted_currency
36
35
  Hash[CURRENCY.sort_by{|k, v| v}.reverse]
37
36
  end
38
-
39
- def self.pluralize(hash)
40
- hash.inject({}) do |plural_hash, (k,v)|
41
- plural_key = k.to_s.pluralize
42
- plural_hash[plural_key.to_sym] = v
43
- plural_hash
44
- end
45
- end
46
-
47
- def self.singularize(symbol)
48
- symbol.to_s.singularize.to_sym
49
- end
50
37
  end
@@ -11,7 +11,6 @@ module Executable
11
11
  rescue NoMethodError
12
12
  raise 'Please enter either --make_change or --make_cents'
13
13
  end
14
-
15
14
  begin
16
15
  params = params.first.to_i if arg == :make_change
17
16
  params = params_to_hash(params) if arg == :make_cents
@@ -19,6 +18,7 @@ module Executable
19
18
  raise 'Please enter the change amount' if arg == :make_change
20
19
  raise 'Please enter the cents as quarters=25 format' if arg == :make_cents
21
20
  end
21
+
22
22
  {argument: arg, params: params}
23
23
  end
24
24
 
@@ -26,8 +26,8 @@ module Executable
26
26
 
27
27
  def params_to_hash(params)
28
28
  params.inject({}) do |hash, param|
29
- cents = param.split('=')
30
- hash[cents.first.to_sym] = cents.last.to_i
29
+ array = param.split('=')
30
+ hash[array.first.to_sym] = array.last.to_i
31
31
  hash
32
32
  end
33
33
  end
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'pry'
3
2
 
4
3
  describe ChangeMachine do
5
4
  context 'Makes change from a given amount of cents and returns a currency set' do
@@ -26,7 +25,7 @@ describe ChangeMachine do
26
25
 
27
26
  context 'Makes change for quantities up to 100 cents' do
28
27
  it 'gracefully handles quanities larger than 100' do
29
- expect { ChangeMachine.make_change(102) }.to raise_error
28
+ expect { ChangeMachine.make_change(102) }.to raise_error 'You\'re going to need a bigger change machine'
30
29
  end
31
30
  end
32
31
 
@@ -64,20 +63,24 @@ describe ChangeMachine do
64
63
  context 'Takes input from the command line' do
65
64
  it 'makes change' do
66
65
  clean_input = ChangeMachine.clean_input(["--make_change", "98"])
67
- expect(ChangeMachine.run(clean_input)).to eq({:quarters=>3, :dimes=>2, :pennies=>3})
66
+ expect(ChangeMachine.run(clean_input)).to eq( {quarters: 3, dimes: 2, pennies: 3} )
68
67
  end
69
68
 
70
69
  it 'makes cents' do
71
70
  clean_input = ChangeMachine.clean_input(["--make_cents", "quarters=3", "dimes=2", "pennies=3"])
72
- expect(ChangeMachine.run(clean_input)).to eq 98
71
+ expect(ChangeMachine.run(clean_input)).to eq( 98 )
73
72
  end
74
73
 
75
74
  it 'gracefully fails if an argument isn\'t set' do
76
- expect { ChangeMachine.clean_input([]) }.to raise_error "Please enter either --make_change or --make_cents"
75
+ expect { ChangeMachine.clean_input([]) }.to raise_error 'Please enter either --make_change or --make_cents'
77
76
  end
78
77
 
79
- it 'gracefully fails if parameters aren\'t set' do
80
- expect { ChangeMachine.clean_input(["--make_change"]) }.to raise_error "Please enter the change amount"
78
+ it 'gracefully fails if parameters aren\'t set with make_change' do
79
+ expect { ChangeMachine.clean_input(["--make_change"]) }.to raise_error 'Please enter the change amount'
80
+ end
81
+
82
+ it 'gracefully fails if parameters aren\'t set with make_cents' do
83
+ expect { ChangeMachine.clean_input(["--make_cents"]) }.to raise_error 'Please enter the cents as quarters=25 format'
81
84
  end
82
85
  end
83
86
  end
data/spec/spec_helper.rb CHANGED
@@ -1 +1,4 @@
1
- require 'coinstar'
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ Dir[File.dirname(__FILE__) + '/../lib/*.rb'].each { |file| require file }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coinstar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooks Swinnerton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-06 00:00:00.000000000 Z
11
+ date: 2014-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: coveralls
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: activesupport
71
85
  requirement: !ruby/object:Gem::Requirement