iso8601 0.8.7 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/CONTRIBUTING.md +58 -0
  4. data/Gemfile +2 -2
  5. data/README.md +28 -102
  6. data/docs/date-time.md +86 -0
  7. data/docs/duration.md +77 -0
  8. data/docs/time-interval.md +120 -0
  9. data/iso8601.gemspec +43 -6
  10. data/lib/iso8601.rb +15 -7
  11. data/lib/iso8601/atomic.rb +78 -0
  12. data/lib/iso8601/date.rb +35 -10
  13. data/lib/iso8601/date_time.rb +14 -3
  14. data/lib/iso8601/days.rb +47 -0
  15. data/lib/iso8601/duration.rb +115 -99
  16. data/lib/iso8601/errors.rb +13 -1
  17. data/lib/iso8601/hours.rb +43 -0
  18. data/lib/iso8601/minutes.rb +43 -0
  19. data/lib/iso8601/months.rb +98 -0
  20. data/lib/iso8601/seconds.rb +47 -0
  21. data/lib/iso8601/time.rb +43 -15
  22. data/lib/iso8601/time_interval.rb +392 -0
  23. data/lib/iso8601/version.rb +1 -1
  24. data/lib/iso8601/weeks.rb +43 -0
  25. data/lib/iso8601/years.rb +80 -0
  26. data/spec/iso8601/date_spec.rb +0 -6
  27. data/spec/iso8601/date_time_spec.rb +0 -8
  28. data/spec/iso8601/days_spec.rb +44 -0
  29. data/spec/iso8601/duration_spec.rb +103 -99
  30. data/spec/iso8601/hours_spec.rb +44 -0
  31. data/spec/iso8601/minutes_spec.rb +44 -0
  32. data/spec/iso8601/months_spec.rb +86 -0
  33. data/spec/iso8601/seconds_spec.rb +44 -0
  34. data/spec/iso8601/time_interval_spec.rb +416 -0
  35. data/spec/iso8601/time_spec.rb +0 -6
  36. data/spec/iso8601/weeks_spec.rb +46 -0
  37. data/spec/iso8601/years_spec.rb +69 -0
  38. metadata +37 -19
  39. data/.dockerignore +0 -7
  40. data/.editorconfig +0 -9
  41. data/.gitignore +0 -19
  42. data/.rubocop.yml +0 -38
  43. data/.travis.yml +0 -19
  44. data/Dockerfile +0 -10
  45. data/Makefile +0 -19
  46. data/circle.yml +0 -13
  47. data/lib/iso8601/atoms.rb +0 -279
  48. data/spec/iso8601/atoms_spec.rb +0 -329
@@ -68,9 +68,6 @@ describe ISO8601::Time do
68
68
  expect((ISO8601::Time.new('T20:20:20.5Z') + 10).second).to eq(30.5)
69
69
  expect((ISO8601::Time.new('T20:20:20+02:00') + 10.09).second).to eq(30.1)
70
70
  end
71
- it "should return the result of the addition of a Duration" do
72
- expect((ISO8601::Time.new('T20:20:20Z') + ISO8601::Duration.new("PT10S")).to_s).to eq('T20:20:30+00:00')
73
- end
74
71
  end
75
72
 
76
73
  describe '#-' do
@@ -78,9 +75,6 @@ describe ISO8601::Time do
78
75
  expect((ISO8601::Time.new('T20:20:20+01:00') - 10).to_s).to eq('T20:20:10+01:00')
79
76
  expect((ISO8601::Time.new('T20:20:20.11+02:00') - 10).to_s).to eq('T20:20:10.1+02:00')
80
77
  end
81
- it "should return the result of the subtraction of a Duration" do
82
- expect((ISO8601::Time.new('T20:20:20+01:00') - ISO8601::Duration.new("PT10S")).to_s).to eq('T20:20:10+01:00')
83
- end
84
78
  end
85
79
 
86
80
  describe '#to_a' do
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe ISO8601::Weeks do
4
+ describe 'Atomic' do
5
+ let(:subject) { ISO8601::Weeks.new(1) }
6
+
7
+ it "should respond to the Atomic interface" do
8
+ [:factor,
9
+ :to_seconds,
10
+ :symbol,
11
+ :to_i,
12
+ :to_f,
13
+ :to_s,
14
+ :value,
15
+ :<=>,
16
+ :eql?,
17
+ :hash,
18
+ :valid_atom?].each { |m| expect(subject).to respond_to(m) }
19
+ end
20
+ end
21
+
22
+ describe '#factor' do
23
+ it "should return the Week factor" do
24
+ expect(ISO8601::Weeks.new(2).factor).to eq(604800)
25
+ end
26
+ end
27
+
28
+ describe '#to_seconds' do
29
+ it "should return the amount of seconds" do
30
+ expect(ISO8601::Weeks.new(2).to_seconds).to eq(1209600)
31
+ expect(ISO8601::Weeks.new(-2).to_seconds).to eq(-1209600)
32
+ end
33
+ end
34
+
35
+ describe '#symbol' do
36
+ it "should return the ISO symbol" do
37
+ expect(ISO8601::Weeks.new(1).symbol).to eq(:W)
38
+ end
39
+ end
40
+
41
+ describe '#hash' do
42
+ it "should build hash identity by value" do
43
+ expect(ISO8601::Weeks.new(3).hash).to eq(ISO8601::Weeks.new(3).hash)
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe ISO8601::Years do
4
+ let(:common_year) { ISO8601::DateTime.new('2010-01-01') }
5
+ let(:leap_year) { ISO8601::DateTime.new('2000-01-01') }
6
+
7
+ describe 'Atomic' do
8
+ let(:subject) { ISO8601::Years.new(1) }
9
+
10
+ it "should respond to the Atomic interface" do
11
+ [:factor,
12
+ :to_seconds,
13
+ :symbol,
14
+ :to_i,
15
+ :to_f,
16
+ :to_s,
17
+ :value,
18
+ :<=>,
19
+ :eql?,
20
+ :hash,
21
+ :valid_atom?].each { |m| expect(subject).to respond_to(m) }
22
+ end
23
+ end
24
+
25
+ describe '#factor' do
26
+ it "should return the Year factor" do
27
+ expect { ISO8601::Years.new(1).factor }.to_not raise_error
28
+ expect(ISO8601::Years.new(2).factor).to eq(31536000)
29
+ expect(ISO8601::Years.new(1).factor).to eq(31536000)
30
+ end
31
+
32
+ it "should return the Year factor for a common year" do
33
+ expect(ISO8601::Years.new(1).factor(common_year)).to eq(31536000)
34
+ end
35
+
36
+ it "should return the Year factor for a leap year" do
37
+ expect(ISO8601::Years.new(1).factor(leap_year)).to eq(31622400)
38
+ end
39
+ end
40
+
41
+ describe '#to_seconds' do
42
+ it "should return the amount of seconds" do
43
+ expect(ISO8601::Years.new(2).to_seconds).to eq(63072000)
44
+ expect(ISO8601::Years.new(-2).to_seconds).to eq(-63072000)
45
+ end
46
+
47
+ it "should return the amount of seconds for a common year" do
48
+ expect(ISO8601::Years.new(2).to_seconds(common_year)).to eq(63072000)
49
+ expect(ISO8601::Years.new(12).to_seconds(common_year)).to eq(378691200)
50
+ end
51
+
52
+ it "should return the amount of seconds for a leap year" do
53
+ expect(ISO8601::Years.new(2).to_seconds(leap_year)).to eq(63158400)
54
+ expect(ISO8601::Years.new(15).to_seconds(leap_year)).to eq(473385600)
55
+ end
56
+ end
57
+
58
+ describe '#symbol' do
59
+ it "should return the ISO symbol" do
60
+ expect(ISO8601::Years.new(1).symbol).to eq(:Y)
61
+ end
62
+ end
63
+
64
+ describe '#hash' do
65
+ it "should build hash identity by value" do
66
+ expect(ISO8601::Years.new(3).hash).to eq(ISO8601::Years.new(3).hash)
67
+ end
68
+ end
69
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iso8601
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.7
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnau Siches
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-17 00:00:00.000000000 Z
11
+ date: 2015-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.1'
19
+ version: '3.4'
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
- version: '3.1'
26
+ version: '3.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.26'
33
+ version: '0.35'
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
- version: '0.26'
40
+ version: '0.35'
41
41
  description: |2
42
42
  ISO8601 is a simple implementation in Ruby of the ISO 8601 (Data elements and
43
43
  interchange formats - Information interchange - Representation of dates
@@ -47,33 +47,44 @@ executables: []
47
47
  extensions: []
48
48
  extra_rdoc_files: []
49
49
  files:
50
- - ".dockerignore"
51
- - ".editorconfig"
52
- - ".gitignore"
53
- - ".rubocop.yml"
54
- - ".travis.yml"
55
50
  - CHANGELOG.md
56
- - Dockerfile
51
+ - CONTRIBUTING.md
57
52
  - Gemfile
58
53
  - LICENSE
59
- - Makefile
60
54
  - README.md
61
55
  - Rakefile
62
- - circle.yml
56
+ - docs/date-time.md
57
+ - docs/duration.md
58
+ - docs/time-interval.md
63
59
  - iso8601.gemspec
64
60
  - lib/iso8601.rb
65
- - lib/iso8601/atoms.rb
61
+ - lib/iso8601/atomic.rb
66
62
  - lib/iso8601/date.rb
67
63
  - lib/iso8601/date_time.rb
64
+ - lib/iso8601/days.rb
68
65
  - lib/iso8601/duration.rb
69
66
  - lib/iso8601/errors.rb
67
+ - lib/iso8601/hours.rb
68
+ - lib/iso8601/minutes.rb
69
+ - lib/iso8601/months.rb
70
+ - lib/iso8601/seconds.rb
70
71
  - lib/iso8601/time.rb
72
+ - lib/iso8601/time_interval.rb
71
73
  - lib/iso8601/version.rb
72
- - spec/iso8601/atoms_spec.rb
74
+ - lib/iso8601/weeks.rb
75
+ - lib/iso8601/years.rb
73
76
  - spec/iso8601/date_spec.rb
74
77
  - spec/iso8601/date_time_spec.rb
78
+ - spec/iso8601/days_spec.rb
75
79
  - spec/iso8601/duration_spec.rb
80
+ - spec/iso8601/hours_spec.rb
81
+ - spec/iso8601/minutes_spec.rb
82
+ - spec/iso8601/months_spec.rb
83
+ - spec/iso8601/seconds_spec.rb
84
+ - spec/iso8601/time_interval_spec.rb
76
85
  - spec/iso8601/time_spec.rb
86
+ - spec/iso8601/weeks_spec.rb
87
+ - spec/iso8601/years_spec.rb
77
88
  - spec/spec_helper.rb
78
89
  homepage: https://github.com/arnau/ISO8601
79
90
  licenses:
@@ -87,7 +98,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
87
98
  requirements:
88
99
  - - ">="
89
100
  - !ruby/object:Gem::Version
90
- version: 1.9.3
101
+ version: 2.0.0
91
102
  required_rubygems_version: !ruby/object:Gem::Requirement
92
103
  requirements:
93
104
  - - ">="
@@ -95,15 +106,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
106
  version: '0'
96
107
  requirements: []
97
108
  rubyforge_project: iso8601
98
- rubygems_version: 2.4.5
109
+ rubygems_version: 2.5.0
99
110
  signing_key:
100
111
  specification_version: 4
101
112
  summary: Ruby parser to work with ISO 8601 dateTimes and durations - http://en.wikipedia.org/wiki/ISO_8601
102
113
  test_files:
103
- - spec/iso8601/atoms_spec.rb
104
114
  - spec/iso8601/date_spec.rb
105
115
  - spec/iso8601/date_time_spec.rb
116
+ - spec/iso8601/days_spec.rb
106
117
  - spec/iso8601/duration_spec.rb
118
+ - spec/iso8601/hours_spec.rb
119
+ - spec/iso8601/minutes_spec.rb
120
+ - spec/iso8601/months_spec.rb
121
+ - spec/iso8601/seconds_spec.rb
122
+ - spec/iso8601/time_interval_spec.rb
107
123
  - spec/iso8601/time_spec.rb
124
+ - spec/iso8601/weeks_spec.rb
125
+ - spec/iso8601/years_spec.rb
108
126
  - spec/spec_helper.rb
109
127
  has_rdoc: yard
@@ -1,7 +0,0 @@
1
- .git
2
- .editorconfig
3
- .rubocop.yml
4
- .travis.yml
5
- .vagrant
6
- .yardoc
7
- pkg
@@ -1,9 +0,0 @@
1
- [Makefile]
2
- indent_style = tab
3
-
4
- [*]
5
- indent_style = space
6
- indent_size = 2
7
- end_of_line = lf
8
- insert_final_newline = true
9
- trim_trailing_whitespace = true
data/.gitignore DELETED
@@ -1,19 +0,0 @@
1
- # system crap
2
- .DS_Store
3
- .*.swp
4
-
5
- # development side effects
6
- .vagrant
7
- sandbox
8
-
9
- # files created by running the specs
10
- tmp
11
-
12
- # built gems
13
- pkg
14
- *.gem
15
- Gemfile.lock
16
-
17
- # documentation
18
- .yardoc
19
- doc
@@ -1,38 +0,0 @@
1
- Documentation:
2
- Enabled: false
3
-
4
- Lint/UselessComparison:
5
- Enabled: false
6
-
7
- Metrics/ClassLength:
8
- Max: 150
9
-
10
- # Work in progress
11
- Metrics/LineLength:
12
- Max: 183
13
-
14
- # Work in progress
15
- Metrics/MethodLength:
16
- Max: 24
17
-
18
- # Work in progress
19
- Metrics/PerceivedComplexity:
20
- Max: 8
21
-
22
- Style/Blocks:
23
- Enabled: false
24
-
25
- Style/NumericLiterals:
26
- MinDigits: 10
27
-
28
- Style/RegexpLiteral:
29
- MaxSlashes: 0
30
-
31
- Style/StringLiterals:
32
- Enabled: false
33
-
34
- Style/Encoding:
35
- EnforcedStyle: when_needed
36
-
37
- Style/BracesAroundHashParameters:
38
- EnforcedStyle: braces
@@ -1,19 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- - 2.1.2
6
- - 2.2.0
7
- - ruby-head
8
- - rbx-2
9
- - jruby-head
10
- script: bundle exec rspec spec
11
- matrix:
12
- include:
13
- - rvm: jruby
14
- env: JRUBY_OPTS='--2.0'
15
- allow_failures:
16
- - rvm: jruby-head
17
- - rvm: ruby-head
18
- - rvm: rbx-2
19
- fast_finish: true
data/Dockerfile DELETED
@@ -1,10 +0,0 @@
1
- FROM ruby:2.2
2
- MAINTAINER Arnau Siches <asiches@gmail.com>
3
-
4
- RUN mkdir -p /usr/src/iso8601
5
- WORKDIR /usr/src/iso8601
6
-
7
- COPY . /usr/src/iso8601
8
- RUN bundle install
9
-
10
- CMD ["bundle", "exec", "rspec"]
data/Makefile DELETED
@@ -1,19 +0,0 @@
1
- TAG ?= latest
2
- IMAGE_NAME ?= arnau/iso8601
3
- IMAGE = $(IMAGE_NAME):$(TAG)
4
-
5
- install: build
6
-
7
- build:
8
- docker build -t $(IMAGE) .
9
-
10
- test:
11
- docker run -t --rm -v $$(pwd):/usr/src/iso8601 $(IMAGE)
12
-
13
- shell:
14
- docker run -it --rm -v $$(pwd):/usr/src/iso8601 $(IMAGE) \
15
- pry -r ./lib/iso8601
16
-
17
- gem:
18
- docker run -t --rm -v $$(pwd):/usr/src/iso8601 $(IMAGE) \
19
- bundle exec rake build
data/circle.yml DELETED
@@ -1,13 +0,0 @@
1
- machine:
2
- ruby:
3
- version: 2.2.0
4
-
5
- dependencies:
6
- override:
7
- - 'rvm-exec 2.1.0 bundle install'
8
- - 'rvm-exec 2.2.0 bundle install'
9
-
10
- test:
11
- override:
12
- - 'rvm-exec 2.1.0 bundle exec rspec'
13
- - 'rvm-exec 2.2.0 bundle exec rspec'
@@ -1,279 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module ISO8601
4
- ##
5
- # A generic atom in a {ISO8601::Duration}
6
- #
7
- # @abstract
8
- class Atom
9
- include Comparable
10
- ##
11
- # @param [Numeric] atom The atom value
12
- # @param [ISO8601::DateTime, nil] base (nil) The base datetime to compute
13
- # the atom factor.
14
- def initialize(atom, base = nil)
15
- fail TypeError, "The atom argument for #{inspect} should be a Numeric value." unless atom.is_a?(Numeric)
16
- fail TypeError, "The base argument for #{inspect} should be a ISO8601::DateTime instance or nil." unless base.is_a?(ISO8601::DateTime) || base.nil?
17
- @atom = atom
18
- @base = base
19
- end
20
- attr_reader :atom
21
- attr_reader :base
22
- ##
23
- # The integer representation
24
- #
25
- # @return [Integer]
26
- def to_i
27
- atom.to_i
28
- end
29
- ##
30
- # The float representation
31
- #
32
- # @return [Float]
33
- def to_f
34
- atom.to_f
35
- end
36
- ##
37
- # Returns the ISO 8601 representation for the atom
38
- #
39
- # @return [String]
40
- def to_s
41
- (value.zero?) ? '' : "#{value}#{symbol}"
42
- end
43
- ##
44
- # The simplest numeric representation. If modulo equals 0 returns an
45
- # integer else a float.
46
- #
47
- # @return [Numeric]
48
- def value
49
- (atom % 1).zero? ? atom.to_i : atom
50
- end
51
- ##
52
- # The amount of seconds
53
- #
54
- # @return [Numeric]
55
- def to_seconds
56
- atom * factor
57
- end
58
- ##
59
- # @param [Atom] other The contrast to compare against
60
- #
61
- # @return [-1, 0, 1]
62
- def <=>(other)
63
- return nil unless other.kind_of?(self.class)
64
-
65
- to_f <=> other.to_f
66
- end
67
- ##
68
- # @param [#hash] other The contrast to compare against
69
- #
70
- # @return [Boolean]
71
- def eql?(other)
72
- (hash == other.hash)
73
- end
74
- ##
75
- # @return [Fixnum]
76
- def hash
77
- [atom, self.class].hash
78
- end
79
- ##
80
- # The atom factor to compute the amount of seconds for the atom
81
- def factor
82
- fail NotImplementedError,
83
- "The #factor method should be implemented by each subclass"
84
- end
85
- end
86
- ##
87
- # A Years atom in a {ISO8601::Duration}
88
- #
89
- # A "calendar year" is the cyclic time interval in a calendar which is
90
- # required for one revolution of the Earth around the Sun and approximated to
91
- # an integral number of "calendar days".
92
- #
93
- # A "duration year" is the duration of 365 or 366 "calendar days" depending
94
- # on the start and/or the end of the corresponding time interval within the
95
- # specific "calendar year".
96
- class Years < ISO8601::Atom
97
- ##
98
- # The Year factor
99
- #
100
- # The "duration year" average is calculated through time intervals of 400
101
- # "duration years". Each cycle of 400 "duration years" has 303 "common
102
- # years" of 365 "calendar days" and 97 "leap years" of 366 "calendar days".
103
- #
104
- # @return [Integer]
105
- def factor
106
- if base.nil?
107
- ((365 * 303 + 366 * 97) / 400) * 86400
108
- elsif atom.zero?
109
- year = (base.year).to_i
110
- (::Time.utc(year) - ::Time.utc(base.year))
111
- else
112
- year = (base.year + atom).to_i
113
- (::Time.utc(year) - ::Time.utc(base.year)) / atom
114
- end
115
- end
116
- ##
117
- # The atom symbol.
118
- #
119
- # @return [Symbol]
120
- def symbol
121
- :Y
122
- end
123
- end
124
- ##
125
- # A Months atom in a {ISO8601::Duration}
126
- #
127
- # A "calendar month" is the time interval resulting from the division of a
128
- # "calendar year" in 12 time intervals.
129
- #
130
- # A "duration month" is the duration of 28, 29, 30 or 31 "calendar days"
131
- # depending on the start and/or the end of the corresponding time interval
132
- # within the specific "calendar month".
133
- class Months < ISO8601::Atom
134
- ##
135
- # The Month factor
136
- #
137
- # The "duration month" average is calculated through time intervals of 400
138
- # "duration years". Each cycle of 400 "duration years" has 303 "common
139
- # years" of 365 "calendar days" and 97 "leap years" of 366 "calendar days".
140
- def factor
141
- if base.nil?
142
- nobase_calculation
143
- elsif atom.zero?
144
- zero_calculation
145
- else
146
- calculation
147
- end
148
- end
149
- ##
150
- # The atom symbol.
151
- #
152
- # @return [Symbol]
153
- def symbol
154
- :M
155
- end
156
-
157
- private
158
-
159
- def nobase_calculation
160
- (((365 * 303 + 366 * 97) / 400) * 86400) / 12
161
- end
162
-
163
- def zero_calculation
164
- month = (base.month <= 12) ? base.month : (base.month % 12)
165
- year = base.year + ((base.month) / 12).to_i
166
-
167
- (::Time.utc(year, month) - ::Time.utc(base.year, base.month))
168
- end
169
-
170
- def calculation
171
- initial = base.month + atom
172
- if initial <= 0
173
- month = base.month + atom
174
-
175
- if initial % 12 == 0
176
- year = base.year + (initial / 12) - 1
177
- month = 12
178
- else
179
- year = base.year + (initial / 12).floor
180
- month = (12 + initial > 0) ? (12 + initial) : (12 + (initial % -12))
181
- end
182
- else
183
- month = (initial <= 12) ? initial : (initial % 12)
184
- month = 12 if month.zero?
185
- year = base.year + ((base.month + atom) / 12).to_i
186
- end
187
-
188
- (::Time.utc(year, month) - ::Time.utc(base.year, base.month)) / atom
189
- end
190
- end
191
- ##
192
- # A Weeks atom in a {ISO8601::Duration}
193
- class Weeks < ISO8601::Atom
194
- ##
195
- # The Week factor
196
- def factor
197
- 604800
198
- end
199
- ##
200
- # The atom symbol.
201
- #
202
- # @return [Symbol]
203
- def symbol
204
- :W
205
- end
206
- end
207
- ##
208
- # The Days atom in a {ISO8601::Duration}
209
- #
210
- # A "calendar day" is the time interval which starts at a certain time of day
211
- # at a certain "calendar day" and ends at the same time of day at the next
212
- # "calendar day".
213
- class Days < ISO8601::Atom
214
- ##
215
- # The Day factor
216
- def factor
217
- 86400
218
- end
219
- ##
220
- # The atom symbol.
221
- #
222
- # @return [Symbol]
223
- def symbol
224
- :D
225
- end
226
- end
227
- ##
228
- # The Hours atom in a {ISO8601::Duration}
229
- class Hours < ISO8601::Atom
230
- ##
231
- # The Hour factor
232
- def factor
233
- 3600
234
- end
235
- ##
236
- # The atom symbol.
237
- #
238
- # @return [Symbol]
239
- def symbol
240
- :H
241
- end
242
- end
243
- ##
244
- # The Minutes atom in a {ISO8601::Duration}
245
- class Minutes < ISO8601::Atom
246
- ##
247
- # The Minute factor
248
- def factor
249
- 60
250
- end
251
- ##
252
- # The atom symbol.
253
- #
254
- # @return [Symbol]
255
- def symbol
256
- :M
257
- end
258
- end
259
- ##
260
- # The Seconds atom in a {ISO8601::Duration}
261
- #
262
- # The second is the base unit of measurement of time in the International
263
- # System of Units (SI) as defined by the International Committee of Weights
264
- # and Measures.
265
- class Seconds < ISO8601::Atom
266
- ##
267
- # The Second factor
268
- def factor
269
- 1
270
- end
271
- ##
272
- # The atom symbol.
273
- #
274
- # @return [Symbol]
275
- def symbol
276
- :S
277
- end
278
- end
279
- end