small 0.1 → 0.2

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/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  Small
2
2
  ======
3
3
 
4
- Small collection of useful Ruby utilities
4
+ Small collection of useful Ruby utilities.
5
5
 
6
+ Tested with 1.9.3-p125
data/lib/small.rb CHANGED
@@ -1,10 +1,12 @@
1
1
 
2
2
  module Small
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2"
4
4
  end
5
5
 
6
6
  require 'small/object'
7
7
  require 'small/string'
8
+ require 'small/integer'
8
9
  require 'small/math'
9
10
  require 'small/array'
10
11
  require 'small/hash'
12
+ require 'small/time'
@@ -0,0 +1,39 @@
1
+ class Integer
2
+
3
+ def year
4
+ # http://www.wolframalpha.com/input/?i=year
5
+ self * 31536000
6
+ end
7
+
8
+ def month
9
+ self * 3600 * 24 * 30
10
+ end
11
+
12
+ def week
13
+ self * 3600 * 24 * 7
14
+ end
15
+
16
+ def day
17
+ self * 3600 * 24
18
+ end
19
+
20
+ def hour
21
+ self * 3600
22
+ end
23
+
24
+ def minute
25
+ self * 60
26
+ end
27
+
28
+ def second
29
+ self * 1
30
+ end
31
+
32
+ alias :years :year
33
+ alias :months :month
34
+ alias :weeks :week
35
+ alias :days :day
36
+ alias :hours :hour
37
+ alias :minutes :minute
38
+ alias :seconds :second
39
+ end
data/lib/small/string.rb CHANGED
@@ -18,7 +18,11 @@ class String
18
18
 
19
19
  def constantize
20
20
  constant = Object
21
- constant.const_defined?(self.to_s) ? constant.const_get(self.to_s) : constant.const_missing(self.to_s)
21
+ if constant.const_defined?(self.to_s)
22
+ constant.const_get(self.to_s)
23
+ else
24
+ constant.const_missing(self.to_s)
25
+ end
22
26
  end
23
27
 
24
28
  def encode64
@@ -35,12 +39,12 @@ class String
35
39
  end
36
40
 
37
41
  def to_sha2(provider = 256)
38
- require 'digest/sha2' unless defined?(Digest::SHA256) || defined?(Digest::SHA384) || defined?(Digest::SHA512)
42
+ require 'digest/sha2' unless defined?(Digest::SHA256)
39
43
  object = case provider
40
44
  when 256 then Digest::SHA256.new
41
45
  when 384 then Digest::SHA384.new
42
46
  when 512 then Digest::SHA512.new
43
- else raise Exception, "Unknown digest provider: #{provider} -- try 256, 384, and 512"
47
+ else raise Exception, "Unknown provider: #{provider}"
44
48
  end
45
49
  object.hexdigest(self.to_s)
46
50
  end
data/lib/small/time.rb ADDED
@@ -0,0 +1,31 @@
1
+ require 'date'
2
+ require 'datetime' unless defined?(DateTime)
3
+
4
+ # Some codes extracted from Rails
5
+ class Time
6
+
7
+ DATE_FORMATS = {
8
+ :default => "%Y-%m-%d %H:%M:%S"
9
+ }
10
+
11
+ def to_date
12
+ ::Date.new(year, month, day)
13
+ end
14
+
15
+ def to_datetime
16
+ ::DateTime.civil(year, month, day, hour, min, sec, Rational(utc_offset, 86400))
17
+ end
18
+
19
+ def to_formatted_s(format = :default)
20
+ if formatter = DATE_FORMATS[format]
21
+ strftime(formatter)
22
+ else
23
+ self.to_s
24
+ end
25
+ end
26
+
27
+ def today?
28
+ to_date == ::Time.now.to_date
29
+ end
30
+
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: small
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-20 00:00:00.000000000 Z
12
+ date: 2012-04-23 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email: bryann83@gmail.com
@@ -21,9 +21,11 @@ files:
21
21
  - LICENSE
22
22
  - lib/small/array.rb
23
23
  - lib/small/hash.rb
24
+ - lib/small/integer.rb
24
25
  - lib/small/math.rb
25
26
  - lib/small/object.rb
26
27
  - lib/small/string.rb
28
+ - lib/small/time.rb
27
29
  - lib/small.rb
28
30
  homepage: https://github.com/bry4n/small
29
31
  licenses: []
@@ -45,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
45
47
  version: '0'
46
48
  requirements: []
47
49
  rubyforge_project:
48
- rubygems_version: 1.8.15
50
+ rubygems_version: 1.8.11
49
51
  signing_key:
50
52
  specification_version: 3
51
53
  summary: A small collection of useful Ruby utilities