koalemos 0.0.1 → 0.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/Rakefile CHANGED
@@ -5,8 +5,8 @@ begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "koalemos"
8
- gem.summary = %Q{Some extensions for me in all my projects}
9
- gem.description = %Q{Nothing here you'd be interested in}
8
+ gem.summary = %Q{A bunch of small extensions to built in classes/modules}
9
+ gem.description = %Q{A bunch of small extensions to built in classes/modules}
10
10
  gem.email = "me@talatlas.com"
11
11
  gem.homepage = "http://github.com/Talby/koalemos"
12
12
  gem.authors = ["Tal Atlas"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{koalemos}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tal Atlas"]
12
- s.date = %q{2009-12-26}
13
- s.description = %q{Nothing here you'd be interested in}
12
+ s.date = %q{2009-12-27}
13
+ s.description = %q{A bunch of small extensions to built in classes/modules}
14
14
  s.email = %q{me@talatlas.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
@@ -46,7 +46,7 @@ Gem::Specification.new do |s|
46
46
  s.rdoc_options = ["--charset=UTF-8"]
47
47
  s.require_paths = ["lib"]
48
48
  s.rubygems_version = %q{1.3.5}
49
- s.summary = %q{Some extensions for me in all my projects}
49
+ s.summary = %q{A bunch of small extensions to built in classes/modules}
50
50
  s.test_files = [
51
51
  "spec/koalemos_spec.rb",
52
52
  "spec/spec_helper.rb"
@@ -1,4 +1,4 @@
1
- files = Dir.glob(File.join('.','lib','koalemos','**','*.rb'))
1
+ files = Dir.glob(File.join(File.dirname(__FILE__),'koalemos','**','*.rb'))
2
2
  files.each do |f|
3
3
  require f
4
4
  end
@@ -1,7 +1,7 @@
1
1
  module Koalemos
2
2
  class ::Numeric
3
3
  unless method_defined?(:commafy)
4
- def commafy
4
+ def commaify
5
5
  to_s.reverse.scan(/(?:\d*\.)?\d{1,3}-?/).join(',').reverse
6
6
  end
7
7
  end
@@ -9,7 +9,7 @@ module Koalemos
9
9
 
10
10
  class ::Float
11
11
  unless method_defined?(:commafy)
12
- def commafy
12
+ def commaofy
13
13
  to_s.gsub(/\d+\./) do |s|
14
14
  s.reverse.scan(/(?:\d*\.)?\d{1,3}-?/).join(',').reverse
15
15
  end
@@ -1,21 +1,21 @@
1
1
  module Koalemos
2
2
  # A bit more versatile rounding for Ruby
3
- module Round
4
- def self.included(klass)
5
- if klass.instance_method(:round)
6
- klass.class_eval do
7
- begin
8
- remove_method :round
9
- rescue NameError
10
- end
11
- end
12
- super
13
- else
14
- raise NoMethodError, 'no round method found'
15
- end
16
- end
3
+ module RoundTo
4
+ # def self.included(klass)
5
+ # if klass.instance_method(:round)
6
+ # klass.class_eval do
7
+ # begin
8
+ # remove_method :round
9
+ # rescue NameError
10
+ # end
11
+ # end
12
+ # super
13
+ # else
14
+ # raise NoMethodError, 'no round method found'
15
+ # end
16
+ # end
17
17
 
18
- def round(places = 0)
18
+ def round_to(places = 0)
19
19
  unless Integer === places
20
20
  raise TypeError, "argument places has to be an Integer"
21
21
  end
@@ -35,4 +35,10 @@ module Koalemos
35
35
  t.nan? ? self : t
36
36
  end
37
37
  end
38
+
39
+ class ::Float
40
+ unless method_defined?(:round_to)
41
+ include RoundTo
42
+ end
43
+ end
38
44
  end
@@ -1,7 +1,127 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "Koalemos" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
4
+
5
+ describe "beginning_of_day" do
6
+ it "should work" do
7
+ Time.now.should respond_to(:beginning_of_day)
8
+ Time.should respond_to(:beginning_of_day)
9
+ end
10
+ end
11
+
12
+
13
+ describe "blank?" do
14
+ it "should work" do
15
+ nil.blank?.should be_true
16
+ [].blank?.should be_true
17
+ [1].blank?.should be_false
18
+ end
19
+ end
20
+
21
+ describe "commaify" do
22
+ it "should work for fixnum" do
23
+ 1234567890.commaify.should eql("1,234,567,890")
24
+ end
25
+
26
+ it "should work for float" do
27
+ 1234567890.1234567890.commaify.should eql("1,234,567,890.12346")
28
+ end
29
+ end
30
+
31
+ describe "friendly time" do
32
+ it "should work" do
33
+ (Time.now - 1.day).friendly.should eql("1 day ago")
34
+ end
35
+ end
36
+
37
+ describe "full" do
38
+ it "should work" do
39
+ nil.full?(:test){|p|p.inspect}.should be_nil
40
+ "12".full?.should == "12"
41
+ "12".full?(:to_i).should == 12
42
+ 12.full?{|n| n/2}.should == 6
43
+ "13".full?(:to_f){|n| n/2}.should == 6.5
44
+ end
45
+ end
46
+
47
+ describe "hash union" do
48
+ it "should_work" do
49
+ h1 = {:foo => 'foo',:bar => 'bar'}
50
+ h1 |= {:foo => 'none',:baz => 'baz'}
51
+ h1.should == {:foo => 'foo',:bar => 'bar',:baz => 'baz'}
52
+ end
53
+ end
54
+
55
+ describe "num_to_time" do
56
+ describe "number to seconds" do
57
+ it "should convert times from fixnum" do
58
+ 1.minute.should eql(60)
59
+ 1.hour.should eql(60.minutes)
60
+ 1.day.should eql(24.hours)
61
+ 1.week.should eql(7.days)
62
+ 1.month.should eql(30.days)
63
+ end
64
+
65
+ it "should convert times from floats" do
66
+ 1.5.minutes.should eql(90.0)
67
+ 365.0.days.should eql(1.0.year)
68
+ end
69
+ end
70
+
71
+ describe "getting time from number" do
72
+ it "should get 1 day ago"
73
+ end
74
+ end
75
+
76
+ describe "odd" do
77
+ it "should work" do
78
+ 1.odd?.should be_true
79
+ 2.odd?.should be_false
80
+ end
81
+ end
82
+
83
+ describe "rand" do
84
+ it "pick should work" do
85
+ [1].pick.should == 1
86
+ a = [1,2,3]
87
+ n = a.pick!
88
+ n.should be_close(2, 1.1)
89
+ newa = [1,2,3]
90
+ newa.delete(n)
91
+ a.should == (newa)
92
+ end
93
+
94
+ it "shuffle should work" do
95
+ a = [*1..1000].shuffle
96
+ a[0,2].should_not == [*1..2]
97
+ end
98
+ end
99
+
100
+ describe "round_to" do
101
+ it "should_work" do
102
+ 123.123.round_to.should == 123
103
+ 123.456.round_to.should == 123
104
+ 123.556.round_to.should == 124
105
+ 123.123.round_to(1).should == 123.1
106
+ 123.156.round_to(1).should == 123.2
107
+ end
108
+ end
109
+
110
+ describe "symbol_to_proc" do
111
+ it "should_work" do
112
+ pending "need to find use"
113
+ %w{1 2 3 4}.each(:to_i).should == [1,2,3,4]
114
+ end
115
+ end
116
+
117
+ describe "uniq_by" do
118
+ it "should work" do
119
+ [ {:key => 'foo'},
120
+ {:key => 'foo'},
121
+ {:key => 'bar'},
122
+ {:key => 'baz'},
123
+ {:key => 'bbaz'}].uniq_by{|a| a[:key]}.
124
+ should eql([{:key=>"bbaz"}, {:key=>"baz"}, {:key=>"foo"}, {:key=>"bar"}])
125
+ end
6
126
  end
7
127
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: koalemos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tal Atlas
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-26 00:00:00 -05:00
12
+ date: 2009-12-27 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,7 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: "0"
34
34
  version:
35
- description: Nothing here you'd be interested in
35
+ description: A bunch of small extensions to built in classes/modules
36
36
  email: me@talatlas.com
37
37
  executables: []
38
38
 
@@ -93,7 +93,7 @@ rubyforge_project:
93
93
  rubygems_version: 1.3.5
94
94
  signing_key:
95
95
  specification_version: 3
96
- summary: Some extensions for me in all my projects
96
+ summary: A bunch of small extensions to built in classes/modules
97
97
  test_files:
98
98
  - spec/koalemos_spec.rb
99
99
  - spec/spec_helper.rb