clever_duration 0.1.0 → 0.1.1

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{clever_duration}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ilya Sabanin"]
12
- s.date = %q{2010-04-02}
12
+ s.date = %q{2010-10-16}
13
13
  s.description = %q{A tiny Ruby lib for parsing human format of time duration to numbers.}
14
14
  s.email = %q{ilya.sabanin@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.homepage = %q{http://github.com/iSabanin/clever_duration}
33
33
  s.rdoc_options = ["--charset=UTF-8"]
34
34
  s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.3.5}
35
+ s.rubygems_version = %q{1.3.7}
36
36
  s.summary = %q{Human format time duration parsing.}
37
37
  s.test_files = [
38
38
  "test/helper.rb",
@@ -43,7 +43,7 @@ Gem::Specification.new do |s|
43
43
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
44
44
  s.specification_version = 3
45
45
 
46
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
46
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
47
  s.add_development_dependency(%q<shoulda>, [">= 0"])
48
48
  else
49
49
  s.add_dependency(%q<shoulda>, [">= 0"])
@@ -17,6 +17,8 @@ class CleverDuration
17
17
  def seconds
18
18
  if colon_format?
19
19
  regular_format_to_seconds
20
+ elsif decimal_format?
21
+ decimal_format_to_seconds
20
22
  else
21
23
  tokens_to_seconds
22
24
  end
@@ -25,7 +27,11 @@ class CleverDuration
25
27
  private
26
28
 
27
29
  def colon_format?
28
- !!(input =~ /[:\.]/)
30
+ !!(input =~ /:/)
31
+ end
32
+
33
+ def decimal_format?
34
+ !!(input =~ /\./)
29
35
  end
30
36
 
31
37
  def tokens
@@ -33,9 +39,15 @@ private
33
39
  end
34
40
 
35
41
  def regular_format_to_seconds
36
- hours, minutes = *input.scan(/(\d{0,2})[:\.](\d{0,2})/).flatten
42
+ hours, minutes = *input.scan(/(\d{0,2}):(\d{0,2})/).flatten
37
43
  (hours.to_i * 60 * 60) + (minutes.to_i * 60)
38
44
  end
45
+
46
+ def decimal_format_to_seconds
47
+ hours, decimal = *input.scan(/(\d{0,2})\.(\d{0,2})/).flatten
48
+ minutes = ("0.#{decimal}".to_f * 60) / 1
49
+ (hours.to_i * 60 * 60) + (minutes * 60)
50
+ end
39
51
 
40
52
  def tokens_to_seconds
41
53
  seconds = 0
@@ -49,12 +49,16 @@ class CleverDurationTest < Test::Unit::TestCase
49
49
  assert_equal 10, duration(":10").minutes
50
50
  end
51
51
 
52
- should "translate dot" do
52
+ should "translate decimal" do
53
53
  assert_equal 3, duration("3.00").hours
54
54
  assert_equal 4, duration("04.00").hours
55
- assert_equal 30, duration("0.30").minutes
56
- assert_equal 2.5, duration("2.30").hours
57
- assert_equal 10, duration(".10").minutes
55
+ assert_equal 18, duration("0.30").minutes
56
+ assert_equal 138, duration("2.30").minutes
57
+ assert_equal 2.3, duration("2.30").hours
58
+ assert_equal 6, duration(".10").minutes
59
+ assert_equal 30, duration(".50").minutes
60
+ assert_equal 1.5, duration("1.5").hours
61
+ assert_equal 90, duration("1.5").minutes
58
62
  end
59
63
 
60
64
  should "translate compounds" do
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clever_duration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
5
11
  platform: ruby
6
12
  authors:
7
13
  - Ilya Sabanin
@@ -9,19 +15,23 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-04-02 00:00:00 +08:00
18
+ date: 2010-10-16 00:00:00 +08:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: shoulda
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
23
32
  version: "0"
24
- version:
33
+ type: :development
34
+ version_requirements: *id001
25
35
  description: A tiny Ruby lib for parsing human format of time duration to numbers.
26
36
  email: ilya.sabanin@gmail.com
27
37
  executables: []
@@ -53,21 +63,27 @@ rdoc_options:
53
63
  require_paths:
54
64
  - lib
55
65
  required_ruby_version: !ruby/object:Gem::Requirement
66
+ none: false
56
67
  requirements:
57
68
  - - ">="
58
69
  - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
59
73
  version: "0"
60
- version:
61
74
  required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
62
76
  requirements:
63
77
  - - ">="
64
78
  - !ruby/object:Gem::Version
79
+ hash: 3
80
+ segments:
81
+ - 0
65
82
  version: "0"
66
- version:
67
83
  requirements: []
68
84
 
69
85
  rubyforge_project:
70
- rubygems_version: 1.3.5
86
+ rubygems_version: 1.3.7
71
87
  signing_key:
72
88
  specification_version: 3
73
89
  summary: Human format time duration parsing.