chronomize 0.0.2 → 0.0.3
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/chronomize.gemspec +2 -2
- data/lib/chronomize.rb +20 -7
- data/spec/chronomize_spec.rb +36 -0
- metadata +16 -5
data/chronomize.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "chronomize"
|
6
|
-
s.version = "0.0.
|
6
|
+
s.version = "0.0.3"
|
7
7
|
s.authors = ["Katrina Owen"]
|
8
8
|
s.email = ["katrina.owen@gmail.com"]
|
9
9
|
s.homepage = ""
|
@@ -19,5 +19,5 @@ Gem::Specification.new do |s|
|
|
19
19
|
|
20
20
|
s.add_development_dependency "rspec"
|
21
21
|
s.add_development_dependency "timecop"
|
22
|
-
|
22
|
+
s.add_runtime_dependency "i18n"
|
23
23
|
end
|
data/lib/chronomize.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'i18n'
|
1
2
|
require 'date'
|
2
3
|
require 'extensions/date'
|
3
4
|
|
@@ -6,12 +7,23 @@ class Chronomize
|
|
6
7
|
attr_accessor :date, :date_format, :yesterday, :today, :tomorrow, :backward, :forward
|
7
8
|
def initialize(date, options = {})
|
8
9
|
self.date = date
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
self.
|
14
|
-
self.
|
10
|
+
configure(options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def configure(options)
|
14
|
+
self.date_format = options[:date_format] || :default
|
15
|
+
self.yesterday = options.fetch(:yesterday) {I18n.translate('chronomize.yesterday', :default => 'yesterday')}
|
16
|
+
self.today = options.fetch(:today) {I18n.translate('chronomize.today', :default => 'today')}
|
17
|
+
self.tomorrow = options.fetch(:tomorrow) {I18n.translate('chronomize.tomorrow', :default => 'tomorrow')}
|
18
|
+
self.backward = options.fetch(:previous) do
|
19
|
+
# i18n doesn't support nil as default :/
|
20
|
+
label = I18n.translate('chronomize.previous', :default => "")
|
21
|
+
label.empty? ? nil : label
|
22
|
+
end
|
23
|
+
self.forward = options.fetch(:next) do
|
24
|
+
label = I18n.translate('chronomize.next', :default => "")
|
25
|
+
label.empty? ? nil : label
|
26
|
+
end
|
15
27
|
end
|
16
28
|
|
17
29
|
def previous
|
@@ -26,6 +38,7 @@ class Chronomize
|
|
26
38
|
label_for day(1), :forward
|
27
39
|
end
|
28
40
|
|
41
|
+
private
|
29
42
|
def day(n)
|
30
43
|
date + n
|
31
44
|
end
|
@@ -39,7 +52,7 @@ class Chronomize
|
|
39
52
|
end
|
40
53
|
|
41
54
|
def format(date)
|
42
|
-
|
55
|
+
I18n.localize(date, :format => date_format)
|
43
56
|
end
|
44
57
|
|
45
58
|
def chronicality(date)
|
data/spec/chronomize_spec.rb
CHANGED
@@ -10,6 +10,11 @@ describe Chronomize do
|
|
10
10
|
let(:feb8) { Date.new(2012, 2, 8) }
|
11
11
|
let(:feb9) { Date.new(2012, 2, 9) }
|
12
12
|
|
13
|
+
before(:each) do
|
14
|
+
en = {:date => {:month_names => [nil, 'January', 'February'], :formats => {:default => "%B %-d, %Y"}}}
|
15
|
+
I18n.backend.store_translations(:en, en)
|
16
|
+
end
|
17
|
+
|
13
18
|
before(:each) { Timecop.freeze(feb7) }
|
14
19
|
after(:each) { Timecop.return }
|
15
20
|
|
@@ -74,4 +79,35 @@ describe Chronomize do
|
|
74
79
|
its(:current) { should eq('4.2.2012') }
|
75
80
|
its(:next) { should eq('5.2.2012') }
|
76
81
|
end
|
82
|
+
|
83
|
+
context "in alternate locale" do
|
84
|
+
before(:each) do
|
85
|
+
no = {:date => {:month_names => [nil, 'januar', 'februar'], :formats => {:my_custom_format => '%-d. %B %Y'}}}
|
86
|
+
I18n.backend.store_translations(:no, no)
|
87
|
+
I18n.locale = :no
|
88
|
+
end
|
89
|
+
after(:each) do
|
90
|
+
I18n.locale = nil
|
91
|
+
end
|
92
|
+
|
93
|
+
subject { Chronomize.new(feb4, :date_format => :my_custom_format) }
|
94
|
+
|
95
|
+
its(:previous) { should eq('3. februar 2012') }
|
96
|
+
its(:current) { should eq('4. februar 2012') }
|
97
|
+
its(:next) { should eq('5. februar 2012') }
|
98
|
+
end
|
99
|
+
|
100
|
+
context "with defaults" do
|
101
|
+
before(:each) do
|
102
|
+
en = {:chronomize => {:today => 'tdy', :tomorrow => 'tmrw', :yesterday => 'ystrdy', :previous => '<', :next => '>' }}
|
103
|
+
I18n.backend.store_translations(:en, en)
|
104
|
+
end
|
105
|
+
|
106
|
+
subject { Chronomize.new(feb7) }
|
107
|
+
|
108
|
+
its(:previous) { should eq('< ystrdy') }
|
109
|
+
its(:current) { should eq('tdy') }
|
110
|
+
its(:next) { should eq('tmrw >') }
|
111
|
+
end
|
112
|
+
|
77
113
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chronomize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-03-07 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70294816684440 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70294816684440
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: timecop
|
27
|
-
requirement: &
|
27
|
+
requirement: &70294816684000 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,18 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70294816684000
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: i18n
|
38
|
+
requirement: &70294816683580 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70294816683580
|
36
47
|
description: Creates labels for a window of dates, with knowledge about it's relationship
|
37
48
|
to the current date.
|
38
49
|
email:
|