ruby-duration 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -4,8 +4,7 @@ ruby-duration
4
4
  Duration is an immutable type that represents some amount of time with accuracy in seconds.
5
5
 
6
6
  A lot of the code and inspirations is borrowed from [duration](http://rubyforge.org/projects/duration)
7
- lib, which is a **mutable** Duration type, with a lot more features but lack of test. I decide to create
8
- a new one because and belive it's better to be immutable and the old project is still on rubyforge's subversion.
7
+ lib, which is a **mutable** Duration type with lot more features but lack of tests.
9
8
 
10
9
  I'll try to contact the author of duration to make ruby-duration version 2 of duration's lib. ;)
11
10
 
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ begin
8
8
  gem.summary = %Q{Duration type}
9
9
  gem.description = %Q{Duration type}
10
10
  gem.email = "jose@peleteiro.net"
11
- gem.homepage = "http://github.com/peleteiro/duration"
11
+ gem.homepage = "http://github.com/peleteiro/ruby-duration"
12
12
  gem.authors = ["Jose Peleteiro"]
13
13
  gem.add_development_dependency "minitest", ">= 0"
14
14
  gem.add_development_dependency "yard", ">= 0"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.3.0
data/lib/duration.rb CHANGED
@@ -60,7 +60,27 @@ class Duration
60
60
  return false unless other.is_a?(Duration)
61
61
  @total <=> other.to_i
62
62
  end
63
-
63
+
64
+ def +(other)
65
+ Duration.new(@total + other.to_i)
66
+ end
67
+
68
+ def -(other)
69
+ Duration.new(@total - other.to_i)
70
+ end
71
+
72
+ def *(other)
73
+ Duration.new(@total * other.to_i)
74
+ end
75
+
76
+ def /(other)
77
+ Duration.new(@total / other.to_i)
78
+ end
79
+
80
+ def %(other)
81
+ Duration.new(@total % other.to_i)
82
+ end
83
+
64
84
  # Formats a duration in ISO8601.
65
85
  # @see http://en.wikipedia.org/wiki/ISO_8601#Durations
66
86
  def iso8601
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ruby-duration}
8
- s.version = "0.2.2"
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
11
  s.authors = ["Jose Peleteiro"]
12
- s.date = %q{2010-09-20}
12
+ s.date = %q{2010-09-22}
13
13
  s.description = %q{Duration type}
14
14
  s.email = %q{jose@peleteiro.net}
15
15
  s.extra_rdoc_files = [
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
30
30
  "test/helper.rb",
31
31
  "test/test_duration.rb"
32
32
  ]
33
- s.homepage = %q{http://github.com/peleteiro/duration}
33
+ s.homepage = %q{http://github.com/peleteiro/ruby-duration}
34
34
  s.rdoc_options = ["--charset=UTF-8"]
35
35
  s.require_paths = ["lib"]
36
36
  s.rubygems_version = %q{1.3.7}
@@ -22,57 +22,85 @@ describe "Duration" do
22
22
  assert_equal 5, d.seconds
23
23
  assert_equal 788645, d.total
24
24
  end
25
+
26
+ describe "mathematical operations" do
27
+
28
+ it "should +" do
29
+ assert_equal Duration.new(15), Duration.new(10) + 5
30
+ assert_equal Duration.new(15), Duration.new(10) + Duration.new(5)
31
+ end
32
+
33
+ it "sould -" do
34
+ assert_equal Duration.new(5), Duration.new(10) - 5
35
+ assert_equal Duration.new(5), Duration.new(10) - Duration.new(5)
36
+ end
37
+
38
+ it "sould *" do
39
+ assert_equal Duration.new(20), Duration.new(10) * 2
40
+ assert_equal Duration.new(20), Duration.new(10) * Duration.new(2)
41
+ end
42
+
43
+ it "sould /" do
44
+ assert_equal Duration.new(5), Duration.new(10) / 2
45
+ assert_equal Duration.new(5), Duration.new(10) / Duration.new(2)
46
+ end
47
+
48
+ it "sould %" do
49
+ assert_equal Duration.new(1), Duration.new(10) % 3
50
+ assert_equal Duration.new(1), Duration.new(10) % Duration.new(3)
51
+ end
52
+ end
25
53
 
26
54
  describe "#format" do
27
55
  it "should display units in plural form when needed" do
28
56
  d = Duration.new(:weeks => 2, :days => 3, :hours => 4, :minutes => 5, :seconds => 6)
29
- assert_equal("2 weeks 3 days 4 hours 5 minutes 6 seconds", d.format("%w %~w %d %~d %h %~h %m %~m %s %~s"))
57
+ assert_equal "2 weeks 3 days 4 hours 5 minutes 6 seconds", d.format("%w %~w %d %~d %h %~h %m %~m %s %~s")
30
58
  end
31
59
 
32
60
  it "should display units in singular form when needed" do
33
61
  d = Duration.new(:weeks => 1, :days => 1, :hours => 1, :minutes => 1, :seconds => 1)
34
- assert_equal("1 week 1 day 1 hour 1 minute 1 second", d.format("%w %~w %d %~d %h %~h %m %~m %s %~s"))
62
+ assert_equal "1 week 1 day 1 hour 1 minute 1 second", d.format("%w %~w %d %~d %h %~h %m %~m %s %~s")
35
63
  end
36
64
  end
37
65
 
38
66
  describe "#iso_6801" do
39
67
  it "should format seconds" do
40
68
  d = Duration.new(:seconds => 1)
41
- assert_equal("PT1S", d.iso8601)
69
+ assert_equal "PT1S", d.iso8601
42
70
  end
43
71
 
44
72
  it "should format minutes" do
45
73
  d = Duration.new(:minutes => 1)
46
- assert_equal("PT1M", d.iso8601)
74
+ assert_equal "PT1M", d.iso8601
47
75
  end
48
76
 
49
77
  it "should format hours" do
50
78
  d = Duration.new(:hours => 1)
51
- assert_equal("PT1H", d.iso8601)
79
+ assert_equal "PT1H", d.iso8601
52
80
  end
53
81
 
54
82
  it "should format days" do
55
83
  d = Duration.new(:days => 1)
56
- assert_equal("P1D", d.iso8601)
84
+ assert_equal "P1D", d.iso8601
57
85
  end
58
86
 
59
87
  it "should format weeks" do
60
88
  d = Duration.new(:weeks => 1)
61
- assert_equal("P1W", d.iso8601)
89
+ assert_equal "P1W", d.iso8601
62
90
  end
63
91
 
64
92
  it "should format only with given values" do
65
93
  d = Duration.new(:weeks => 1, :days => 2, :hours => 3, :minutes => 4, :seconds => 5)
66
- assert_equal("P1W2DT3H4M5S", d.iso8601)
94
+ assert_equal "P1W2DT3H4M5S", d.iso8601
67
95
 
68
96
  d = Duration.new(:weeks => 1, :hours => 2, :seconds => 3)
69
- assert_equal("P1WT2H3S", d.iso8601)
97
+ assert_equal "P1WT2H3S", d.iso8601
70
98
 
71
99
  d = Duration.new(:weeks => 1, :days => 2)
72
- assert_equal("P1W2D", d.iso8601)
100
+ assert_equal "P1W2D", d.iso8601
73
101
 
74
102
  d = Duration.new(:hours => 1, :seconds => 30)
75
- assert_equal("PT1H30S", d.iso8601)
103
+ assert_equal "PT1H30S", d.iso8601
76
104
  end
77
105
 
78
106
  end
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 2
10
- version: 0.2.2
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jose Peleteiro
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-20 00:00:00 -03:00
18
+ date: 2010-09-22 00:00:00 -03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -69,7 +69,7 @@ files:
69
69
  - test/helper.rb
70
70
  - test/test_duration.rb
71
71
  has_rdoc: true
72
- homepage: http://github.com/peleteiro/duration
72
+ homepage: http://github.com/peleteiro/ruby-duration
73
73
  licenses: []
74
74
 
75
75
  post_install_message: