duck_puncher 0.0.4 → 0.0.6

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
2
  SHA1:
3
- metadata.gz: c72b9153a95c1d306d5cd41333b2de1b11ed467d
4
- data.tar.gz: 80b8f8efac7fe05cc381576e001b3b7297bf1175
3
+ metadata.gz: eacd12db4d97e6d70b3c7dcaa4a01850f287364d
4
+ data.tar.gz: 57312f98a87dc5f07aa93ac1783e929fd65bb621
5
5
  SHA512:
6
- metadata.gz: 878529bd79f70ed6203dcb570ed0741792b346efd5edb2071d69eb496dff43d77191e10de31f0ba2914474c3029bafc18a6140b280cea0c3681a2f6cd49a9c17
7
- data.tar.gz: f750cc59813c45bcffd7f4df0d15d79fceef284e13c58d96017cf63ffe4309c757cc2982266b9ff921d3696a4aff3be757aead5abbc32010ab46d44d6ba8c93b
6
+ metadata.gz: 47457f129e09dc4489aaf495f77f33535f34625619a4d672edb9645158ca6350e7d0af36812eb1aae022ddfe27794f73223c59cbefe5b82564cc760cc659723e
7
+ data.tar.gz: 6c697d9668c2e4d2c71e2fc9eb9426586b800f780098ad133ba413c69173dc1915cfd24283034ebc19283c3ec37a6add55df50c4ae8f54b6cd17bfa8d032383d
data/README.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # DuckPuncher
2
2
 
3
- TODO: Write a gem description
3
+ Currently have the following punches in our repertoire:
4
+
5
+ * Array#m - alias for `map(&:)`, usage: `[1].m(:succ)`
6
+ * Hash#seek - usage: `{a: 1, b: {c: 2}}.seek(:b, :c) #=> 2`
7
+ * Numeric#to_currency - usage: `25.245.to_currency #=> '25.25'`
8
+ * Numeric#to_duration - usage `10_000.to_duration #=> '2 h 46 min'`
9
+ * Numeric#to_time_ago - usage `10_000.to_time_ago #=> '2 hours ago'`
10
+ * Numeric#to_rad - usage `10.15.to_rad #=> 0.17715091907742445`
11
+ * String#pluralize - usage `'hour'.pluralize(2) #=> 'hours'`
4
12
 
5
13
  ## Installation
6
14
 
@@ -2,6 +2,7 @@ require 'duck_puncher/version'
2
2
  require 'duck_puncher/array'
3
3
  require 'duck_puncher/numeric'
4
4
  require 'duck_puncher/hash'
5
+ require 'duck_puncher/string'
5
6
 
6
7
  module DuckPuncher
7
8
  end
@@ -1,11 +1,11 @@
1
1
  module DuckPuncher
2
2
  module Numeric
3
- def to_currency
4
- '%.2f' % self.round(2)
3
+ def to_currency(prefix = '')
4
+ "#{prefix}%.2f" % self.round(2)
5
5
  end
6
6
 
7
- def to_duration(seconds=false)
8
- secs = self.to_i
7
+ def to_duration(seconds = false)
8
+ secs = to_i
9
9
  mins = secs / 60
10
10
  hours = mins / 60
11
11
  buffer = ''
@@ -23,6 +23,24 @@ module DuckPuncher
23
23
  buffer
24
24
  end
25
25
 
26
+ def to_time_ago
27
+ secs = to_i
28
+ mins = secs / 60
29
+ hours = mins / 60
30
+ days = hours / 24
31
+ buffer = ''
32
+ if days > 0
33
+ buffer << "#{days} #{'day'.pluralize(days)}"
34
+ elsif hours > 0
35
+ buffer << "#{hours} #{'hour'.pluralize(hours)}"
36
+ elsif mins > 0
37
+ buffer << "#{mins} #{'minute'.pluralize(mins)}"
38
+ elsif secs >= 0
39
+ buffer << "less than a minute"
40
+ end
41
+ buffer << ' ago'
42
+ end
43
+
26
44
  def to_rad
27
45
  self / 180 * Math::PI
28
46
  end
@@ -0,0 +1,9 @@
1
+ module DuckPuncher
2
+ module String
3
+ def pluralize(count)
4
+ "#{self}#{'s' if count != 1}"
5
+ end
6
+ end
7
+ end
8
+
9
+ String.send(:include, DuckPuncher::String)
@@ -1,3 +1,3 @@
1
1
  module DuckPuncher
2
- VERSION = "0.0.4"
2
+ VERSION = '0.0.6'.freeze
3
3
  end
@@ -7,6 +7,7 @@ class NumericTest < MiniTest::Unit::TestCase
7
7
  assert_equal '25.00', 25.to_currency
8
8
  assert_equal '25.20', 25.2.to_currency
9
9
  assert_equal '25.25', 25.245.to_currency
10
+ assert_equal '$25.25', 25.245.to_currency('$')
10
11
  end
11
12
 
12
13
  def test_to_duration
@@ -30,4 +31,17 @@ class NumericTest < MiniTest::Unit::TestCase
30
31
  assert_equal 0.36035409894869713, 20.646769.to_rad
31
32
  assert_equal -2.730392366234936, -156.439959.to_rad
32
33
  end
34
+
35
+ def test_to_time_ago
36
+ assert_equal 'less than a minute ago', 10.to_time_ago
37
+ assert_equal '1 minute ago', 100.to_time_ago
38
+ assert_equal '2 minutes ago', 130.to_time_ago
39
+ assert_equal '16 minutes ago', 1_000.to_time_ago
40
+ assert_equal '1 hour ago', 3_600.to_time_ago
41
+ assert_equal '1 hour ago', 4_600.to_time_ago
42
+ assert_equal '2 hours ago', 7_300.to_time_ago
43
+ assert_equal '1 day ago', 86_400.to_time_ago
44
+ assert_equal '1 day ago', 100_000.to_time_ago
45
+ assert_equal '2 days ago', 180_000.to_time_ago
46
+ end
33
47
  end
@@ -0,0 +1,10 @@
1
+ require 'minitest/autorun'
2
+ require 'duck_puncher'
3
+
4
+ class HashTest < MiniTest::Unit::TestCase
5
+ def test_pluralize
6
+ assert_equal 'hour'.pluralize(1), 'hour'
7
+ assert_equal 'hour'.pluralize(0), 'hours'
8
+ assert_equal 'hour'.pluralize(2), 'hours'
9
+ end
10
+ end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duck_puncher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Buckley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-28 00:00:00.000000000 Z
11
+ date: 2014-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
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: '1.3'
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: '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: '0'
41
41
  description: Duck punches Ruby with some of my favorite class extensions
@@ -45,7 +45,7 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - .gitignore
48
+ - ".gitignore"
49
49
  - Gemfile
50
50
  - LICENSE.txt
51
51
  - README.md
@@ -55,10 +55,12 @@ files:
55
55
  - lib/duck_puncher/array.rb
56
56
  - lib/duck_puncher/hash.rb
57
57
  - lib/duck_puncher/numeric.rb
58
+ - lib/duck_puncher/string.rb
58
59
  - lib/duck_puncher/version.rb
59
60
  - test/duck_puncher/array_test.rb
60
61
  - test/duck_puncher/hash_test.rb
61
62
  - test/duck_puncher/numeric_test.rb
63
+ - test/duck_puncher/string_test.rb
62
64
  homepage: ''
63
65
  licenses:
64
66
  - MIT
@@ -69,12 +71,12 @@ require_paths:
69
71
  - lib
70
72
  required_ruby_version: !ruby/object:Gem::Requirement
71
73
  requirements:
72
- - - '>='
74
+ - - ">="
73
75
  - !ruby/object:Gem::Version
74
76
  version: '0'
75
77
  required_rubygems_version: !ruby/object:Gem::Requirement
76
78
  requirements:
77
- - - '>='
79
+ - - ">="
78
80
  - !ruby/object:Gem::Version
79
81
  version: '0'
80
82
  requirements: []
@@ -87,4 +89,4 @@ test_files:
87
89
  - test/duck_puncher/array_test.rb
88
90
  - test/duck_puncher/hash_test.rb
89
91
  - test/duck_puncher/numeric_test.rb
90
- has_rdoc:
92
+ - test/duck_puncher/string_test.rb