sugarcube 0.15.3 → 0.15.5
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/lib/sugarcube/nsdate.rb +33 -2
- data/lib/sugarcube/version.rb +1 -1
- data/spec/nsdate_spec.rb +88 -0
- data/spec/nsdate_upto_spec.rb +107 -0
- metadata +6 -2
data/lib/sugarcube/nsdate.rb
CHANGED
@@ -12,13 +12,12 @@ class NSDate
|
|
12
12
|
def string_with_style(style)
|
13
13
|
date_formatter = NSDateFormatter.new
|
14
14
|
if style.is_a? Symbol
|
15
|
-
style = style.
|
15
|
+
style = style.nsdatestyle
|
16
16
|
end
|
17
17
|
date_formatter.setDateStyle(style)
|
18
18
|
date_formatter.stringFromDate(self)
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
21
|
def string_with_format(format)
|
23
22
|
format_template = NSDateFormatter.dateFormatFromTemplate(format, options:0,
|
24
23
|
locale:NSLocale.currentLocale)
|
@@ -27,6 +26,38 @@ class NSDate
|
|
27
26
|
date_formatter.stringFromDate(self)
|
28
27
|
end
|
29
28
|
|
29
|
+
def upto(last_date, delta={days: 1}, &block)
|
30
|
+
return if last_date < self
|
31
|
+
|
32
|
+
date = self
|
33
|
+
while date <= last_date
|
34
|
+
if block.arity == 0
|
35
|
+
block.call
|
36
|
+
else
|
37
|
+
block.call(date)
|
38
|
+
end
|
39
|
+
new_date = date.delta(delta)
|
40
|
+
break if new_date <= date
|
41
|
+
date = new_date
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def downto(last_date, delta={days: -1}, &block)
|
46
|
+
return if last_date > self
|
47
|
+
|
48
|
+
date = self
|
49
|
+
while date >= last_date
|
50
|
+
if block.arity == 0
|
51
|
+
block.call
|
52
|
+
else
|
53
|
+
block.call(date)
|
54
|
+
end
|
55
|
+
new_date = date.delta(delta)
|
56
|
+
break if new_date >= date
|
57
|
+
date = new_date
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
30
61
|
def timezone
|
31
62
|
return _calendar_components(NSTimeZoneCalendarUnit).timeZone
|
32
63
|
end
|
data/lib/sugarcube/version.rb
CHANGED
data/spec/nsdate_spec.rb
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
describe "NSDate" do
|
2
|
+
|
3
|
+
it "Should have an NSDate##from_components method" do
|
4
|
+
date = NSDate.from_components(year: 2012, month: 1, day: 2)
|
5
|
+
date.year.should == 2012
|
6
|
+
date.month.should == 1
|
7
|
+
date.day.should == 2
|
8
|
+
end
|
9
|
+
|
10
|
+
before do
|
11
|
+
@date = NSDate.from_components(year: 2013, month: 1, day: 2, hour:12, minute: 15, second: 30)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have an NSDate#string_with_style(style) method that accepts symbols" do
|
15
|
+
@date.string_with_style(:medium).should == 'Jan 2, 2013'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have an NSDate#string_with_style(style) method that accepts NSDateStyle constants" do
|
19
|
+
@date.string_with_style(NSDateFormatterShortStyle).should == '1/2/13'
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have an NSDate#string_with_format method (1)" do
|
23
|
+
@date.string_with_format("yyyyMMdd HH:mm:ss").should == '01/02/2013, 12:15:30'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should have an NSDate#string_with_format method (2)" do
|
27
|
+
@date.string_with_format("yyyyMMMMd HH:mm:ss").should == 'January 2, 2013, 12:15:30'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should have an NSDate#timezone method" do
|
31
|
+
String.should === @date.timezone.name
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should have an NSDate#era method" do
|
35
|
+
@date.era.should == 1
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should have an NSDate#today method" do
|
39
|
+
@date.today?.should == false
|
40
|
+
NSDate.new.today?.should === true
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should have an NSDate#same_day method" do
|
44
|
+
@date.same_day?(@date.start_of_day).should === true
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should have an NSDate#utc_offset method" do
|
48
|
+
Fixnum.should === @date.utc_offset
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should have an NSDate#leap_year method" do
|
52
|
+
@date.leap_year?.should == false
|
53
|
+
NSDate.from_components(year:2012, month:1, day:1).leap_year?.should == true
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should have an NSDate#date_array method" do
|
57
|
+
@date.date_array.should == [2013, 1, 2]
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should have an NSDate#time_array method" do
|
61
|
+
@date.time_array.should == [12, 15, 30]
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should have an NSDate#datetime_array method" do
|
65
|
+
@date.datetime_array.should == [2013, 1, 2, 12, 15, 30]
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should have an NSDate#start_of_day method" do
|
69
|
+
@date.start_of_day.datetime_array.should == [2013, 1, 2, 0, 0, 0]
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should have an NSDate#end_of_day method" do
|
73
|
+
@date.end_of_day.datetime_array.should == [2013, 1, 3, 0, 0, 0]
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should have an NSDate#days_in_month method" do
|
77
|
+
@date.days_in_month.should == 31
|
78
|
+
NSDate.from_components(year:2013, month:2, day:1).days_in_month.should == 28
|
79
|
+
NSDate.from_components(year:2012, month:2, day:1).days_in_month.should == 29
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should have an NSDate#days_in_year method" do
|
83
|
+
@date.days_in_year.should == 365
|
84
|
+
NSDate.from_components(year:2013, month:2, day:1).days_in_year.should == 365
|
85
|
+
NSDate.from_components(year:2012, month:2, day:1).days_in_year.should == 366
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
describe "NSDate upto/downto" do
|
2
|
+
|
3
|
+
before do
|
4
|
+
@start = NSDate.from_components(year:2013, month: 1, day: 1)
|
5
|
+
end
|
6
|
+
|
7
|
+
it "should have an #upto method that doesn't do anything if receiver < arg" do
|
8
|
+
bam = 0
|
9
|
+
@start.upto(@start.delta(days:-1)) do
|
10
|
+
bam += 1
|
11
|
+
end
|
12
|
+
bam.should == 0
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have a #upto method that should allow the same date" do
|
16
|
+
bam = 0
|
17
|
+
@start.upto(@start) do
|
18
|
+
bam += 1
|
19
|
+
end
|
20
|
+
bam.should == 1
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should have an #upto method that should count up by days" do
|
24
|
+
bam = 0
|
25
|
+
@start.upto(@start.delta(days:10)) do
|
26
|
+
bam += 1
|
27
|
+
end
|
28
|
+
bam.should == 11
|
29
|
+
end
|
30
|
+
it "should have a #downto method that should count down by days" do
|
31
|
+
bam = 0
|
32
|
+
@start.downto(@start.delta(days:-10)) do
|
33
|
+
bam += 1
|
34
|
+
end
|
35
|
+
bam.should == 11
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
it "should have an #upto method that should pass the date to the block" do
|
40
|
+
@start.upto(@start.delta(days:1)) do |date|
|
41
|
+
NSDate.should === date
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should have an #upto method that should count up by any delta" do
|
46
|
+
bam = 0
|
47
|
+
@start.upto(@start.delta(days:1), hours:1) do
|
48
|
+
bam += 1
|
49
|
+
end
|
50
|
+
bam.should == 25
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should have an #upto method that should abort if delta is negative" do
|
54
|
+
bam = 0
|
55
|
+
@start.upto(@start.delta(days:1), hours:-1) do
|
56
|
+
bam += 1
|
57
|
+
end
|
58
|
+
bam.should == 1
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should have a #downto method that doesn't do anything if receiver > arg" do
|
62
|
+
bam = 0
|
63
|
+
@start.downto(@start.delta(days:1)) do
|
64
|
+
bam += 1
|
65
|
+
end
|
66
|
+
bam.should == 0
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should have a #downto method that should allow the same date" do
|
70
|
+
bam = 0
|
71
|
+
@start.downto(@start) do
|
72
|
+
bam += 1
|
73
|
+
end
|
74
|
+
bam.should == 1
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should have a #downto method that should count down by days" do
|
78
|
+
bam = 0
|
79
|
+
@start.downto(@start.delta(days:-10)) do
|
80
|
+
bam += 1
|
81
|
+
end
|
82
|
+
bam.should == 11
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should have a #downto method that should pass the date to the block" do
|
86
|
+
@start.downto(@start.delta(days:-1)) do |date|
|
87
|
+
NSDate.should === date
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should have a #downto method that should count down by any delta" do
|
92
|
+
bam = 0
|
93
|
+
@start.downto(@start.delta(days:-1), hours:-1) do
|
94
|
+
bam += 1
|
95
|
+
end
|
96
|
+
bam.should == 25
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should have a #downto method that should abort if delta is positive" do
|
100
|
+
bam = 0
|
101
|
+
@start.downto(@start.delta(days:-1), hours:1) do
|
102
|
+
bam += 1
|
103
|
+
end
|
104
|
+
bam.should == 1
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sugarcube
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.
|
4
|
+
version: 0.15.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2013-02-
|
16
|
+
date: 2013-02-04 00:00:00.000000000 Z
|
17
17
|
dependencies: []
|
18
18
|
description: ! '== Description
|
19
19
|
|
@@ -122,6 +122,8 @@ files:
|
|
122
122
|
- spec/notification_spec.rb
|
123
123
|
- spec/nsarray_spec.rb
|
124
124
|
- spec/nscoder_spec.rb
|
125
|
+
- spec/nsdate_spec.rb
|
126
|
+
- spec/nsdate_upto_spec.rb
|
125
127
|
- spec/nsstring_files_spec.rb
|
126
128
|
- spec/numeric_spec.rb
|
127
129
|
- spec/symbol_uicolor_spec.rb
|
@@ -166,6 +168,8 @@ test_files:
|
|
166
168
|
- spec/notification_spec.rb
|
167
169
|
- spec/nsarray_spec.rb
|
168
170
|
- spec/nscoder_spec.rb
|
171
|
+
- spec/nsdate_spec.rb
|
172
|
+
- spec/nsdate_upto_spec.rb
|
169
173
|
- spec/nsstring_files_spec.rb
|
170
174
|
- spec/numeric_spec.rb
|
171
175
|
- spec/symbol_uicolor_spec.rb
|