circa 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8c96a7be7dbfc6799b76fb01492897d79ea09a3a
4
+ data.tar.gz: 4ced0fb59c9d6e8aa4fcdd3c1924768aa202f6e6
5
+ SHA512:
6
+ metadata.gz: e7ad0307a6212212c173fb246acc73ebeb7fdea0e390eb285187c7763a1f299e7365c481720062d46254d12fe92e77bcfff8a10fa5dc0c44866b056dd0364bb1
7
+ data.tar.gz: 9e8861a92cf222e219eb3cab238c147d3bde5a73fb6b3ea71256a6c1d9eb059b3c4c1fb36e0bfc42515b3030a63ce7910c2260a4075538b2348f0d6430aee8f1
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.pattern = 'spec/**/*_spec.rb'
6
+ end
@@ -1,8 +1,17 @@
1
+ # encoding: UTF-8
2
+
1
3
  require 'circa/version'
2
4
  require 'circa/date'
3
5
  require 'circa/time'
4
6
 
5
7
  module Circa
8
+ # Convenience method to create a new {Circa::Date} or {Circa::Time}
9
+ # @param [String] input_string
10
+ # A string in format %Y-%m-%d or %Y-%m-%d %H:%M:%S
11
+ # @return [Circa::Date/Circa::Time]
12
+ # A new {Circa::Date} or {Circa::Time} depending on input
13
+ # @raise [ArgumentError]
14
+ # If an invalid input string is given
6
15
  def circa(input_string)
7
16
  if match_date(input_string)
8
17
  Date.new(input_string)
@@ -1,13 +1,28 @@
1
1
  # encoding: UTF-8
2
2
 
3
+ require 'date'
3
4
  require_relative 'util'
4
5
 
5
6
  module Circa
7
+ # Manage partial dates.
8
+ # @!attribute [r] valid_parts
9
+ # @return [Hash]
10
+ # A hash of valid parts in the date,
11
+ # with keys [:year, :month, :day] where applicable,
12
+ # and according values
6
13
  class Date
7
14
  include Util
15
+
16
+ # Match partial dates in format %Y-%m-%d
8
17
  REGEX = /^(\d{4})(?:-(0[0-9]|1[0-2])(?:-([0-2][0-9]|3[0-1])))$/
18
+
9
19
  attr_reader :valid_parts
10
20
 
21
+ # Create a new {Circa::Date}
22
+ # @param [String] date_string
23
+ # A string in format %Y-%m-%d
24
+ # @raise [ArgumentError]
25
+ # If an invalid string is given
11
26
  def initialize(date_string)
12
27
  @year = '0000'
13
28
  @month = '00'
@@ -18,10 +33,16 @@ module Circa
18
33
  end
19
34
  end
20
35
 
36
+ # Get the date as a string
37
+ # @return [String]
38
+ # A string in format %Y-%m-%d
21
39
  def to_s
22
40
  "#{@year}-#{@month}-#{@day}"
23
41
  end
24
42
 
43
+ # Get the date as a {::Date}
44
+ # @return [::Date]
45
+ # A {::Date}
25
46
  def to_date
26
47
  return nil if valid_parts.empty?
27
48
  parts = [:year, :month, :day]
@@ -4,10 +4,18 @@ require_relative 'date'
4
4
  require_relative 'util'
5
5
 
6
6
  module Circa
7
+ # Manage partial times.
7
8
  class Time
8
9
  include Util
10
+
11
+ # Match times in format %H:%M:%S
9
12
  REGEX = /^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])Z?$/
10
13
 
14
+ # Create a new {Circa::Time}
15
+ # @param [String] time_string
16
+ # A string in format %Y-%m-%d %H:%M:%S
17
+ # @raise [ArgumentError]
18
+ # If an invalid string is given
11
19
  def initialize(time_string)
12
20
  parts = time_string.split(/T|\s/)
13
21
  @date = Date.new(parts[0])
@@ -20,15 +28,26 @@ module Circa
20
28
  end
21
29
  end
22
30
 
31
+ # Get the time as a string
32
+ # @return [String]
33
+ # {Circa::Date#to_s} plus the time in format %H:%M:%S
23
34
  def to_s
24
35
  "#{@date.to_s} #{@hour}:#{@minute}:#{@second}"
25
36
  end
26
37
 
38
+ # Get the valid parts of the time
39
+ # @return [Hash]
40
+ # A hash with keys [:year, :month, :day, :hour, :minute, :second]
41
+ # where each of those keys is valid in the time,
42
+ # and values per the keys
27
43
  def valid_parts
28
44
  time_parts = { hour: @hour, minute: @minute, second: @second }
29
45
  @date.valid_parts.merge(time_parts)
30
46
  end
31
47
 
48
+ # Get the time as a {::DateTime}
49
+ # @return [DateTime]
50
+ # A {::DateTime}
32
51
  def to_time
33
52
  parts = [:year, :month, :day, :hour, :minute, :second]
34
53
  args = valid_parts_as_args(parts)
@@ -2,6 +2,9 @@
2
2
 
3
3
  module Circa
4
4
  module Util
5
+
6
+ private
7
+
5
8
  def valid_parts_as_args(parts)
6
9
  valid = self.valid_parts
7
10
  parts.take_while {|p| valid[p] }.map {|p| valid[p].to_i }
@@ -1,5 +1,5 @@
1
1
  # coding: UTF-8
2
2
 
3
3
  module Circa
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
  end
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require 'minitest/spec'
3
+ require_relative '../spec_helper'
4
4
  require_relative '../../lib/circa/date'
5
5
 
6
6
  describe Circa::Date do
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require 'minitest/spec'
3
+ require_relative '../spec_helper'
4
4
  require_relative '../../lib/circa/time'
5
5
 
6
6
  describe Circa::Time do
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require 'minitest/spec'
3
+ require_relative 'spec_helper'
4
4
  require_relative '../lib/circa'
5
5
 
6
6
  describe Circa do
@@ -0,0 +1,3 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'minitest/autorun'
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: circa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Robert Dallas Gray
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-01 00:00:00.000000000 Z
11
+ date: 2013-07-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,23 +27,20 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: m
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,33 +55,29 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: guard
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '1.8'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '1.8'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: guard-minitest
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  description: Utilities for working with MySQL-style partial dates
@@ -113,32 +102,34 @@ files:
113
102
  - spec/circa/date_spec.rb
114
103
  - spec/circa/time_spec.rb
115
104
  - spec/circa_spec.rb
105
+ - spec/spec_helper.rb
116
106
  homepage: ''
117
107
  licenses:
118
108
  - MIT
109
+ metadata: {}
119
110
  post_install_message:
120
111
  rdoc_options: []
121
112
  require_paths:
122
113
  - lib
123
114
  required_ruby_version: !ruby/object:Gem::Requirement
124
- none: false
125
115
  requirements:
126
- - - ! '>='
116
+ - - '>='
127
117
  - !ruby/object:Gem::Version
128
118
  version: '0'
129
119
  required_rubygems_version: !ruby/object:Gem::Requirement
130
- none: false
131
120
  requirements:
132
- - - ! '>='
121
+ - - '>='
133
122
  - !ruby/object:Gem::Version
134
123
  version: '0'
135
124
  requirements: []
136
125
  rubyforge_project:
137
- rubygems_version: 1.8.23
126
+ rubygems_version: 2.0.2
138
127
  signing_key:
139
- specification_version: 3
128
+ specification_version: 4
140
129
  summary: Utilities for working with MySQL-style partial dates
141
130
  test_files:
142
131
  - spec/circa/date_spec.rb
143
132
  - spec/circa/time_spec.rb
144
133
  - spec/circa_spec.rb
134
+ - spec/spec_helper.rb
135
+ has_rdoc: