datet 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -10,5 +10,4 @@ group :development do
10
10
  gem "rdoc", "~> 3.12"
11
11
  gem "bundler", ">= 1.0.0"
12
12
  gem "jeweler", "~> 1.8.4"
13
- gem "rcov", ">= 0"
14
13
  end
@@ -9,8 +9,8 @@ GEM
9
9
  rake
10
10
  rdoc
11
11
  json (1.7.3)
12
+ json (1.7.3-java)
12
13
  rake (0.9.2.2)
13
- rcov (0.9.11)
14
14
  rdoc (3.12)
15
15
  json (~> 1.4)
16
16
  rspec (2.8.0)
@@ -23,11 +23,11 @@ GEM
23
23
  rspec-mocks (2.8.0)
24
24
 
25
25
  PLATFORMS
26
+ java
26
27
  ruby
27
28
 
28
29
  DEPENDENCIES
29
30
  bundler (>= 1.0.0)
30
31
  jeweler (~> 1.8.4)
31
- rcov
32
32
  rdoc (~> 3.12)
33
33
  rspec (~> 2.8.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{datet}
8
- s.version = "0.0.6"
8
+ s.version = "0.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kasper Johansen"]
@@ -44,20 +44,17 @@ Gem::Specification.new do |s|
44
44
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
45
45
  s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
46
46
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
47
- s.add_development_dependency(%q<rcov>, [">= 0"])
48
47
  else
49
48
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
50
49
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
51
50
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
52
51
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
53
- s.add_dependency(%q<rcov>, [">= 0"])
54
52
  end
55
53
  else
56
54
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
57
55
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
58
56
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
59
57
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
60
- s.add_dependency(%q<rcov>, [">= 0"])
61
58
  end
62
59
  end
63
60
 
@@ -32,24 +32,46 @@ class Datet
32
32
  }
33
33
 
34
34
  @@days_lcase = {
35
+ "sunday" => 0,
35
36
  "monday" => 1,
36
37
  "tuesday" => 2,
37
38
  "wednesday" => 3,
38
39
  "thursday" => 4,
39
40
  "friday" => 5,
40
- "saturday" => 6,
41
- "sunday" => 0
41
+ "saturday" => 6
42
42
  }
43
43
  @@days_lcase.clone.each do |key, val|
44
44
  @@days_lcase[key[0, 3]] = val
45
45
  end
46
46
 
47
+ @@day_names = {
48
+ 0 => "Sunday",
49
+ 1 => "Monday",
50
+ 2 => "Tuesday",
51
+ 3 => "Wednesday",
52
+ 4 => "Thursday",
53
+ 5 => "Friday",
54
+ 6 => "Saturday"
55
+ }
56
+
57
+ @@month_names = {
58
+ 1 => "January",
59
+ 2 => "February",
60
+ 3 => "March",
61
+ 4 => "April",
62
+ 5 => "May",
63
+ 6 => "June",
64
+ 7 => "July",
65
+ 8 => "August",
66
+ 9 => "September",
67
+ 10 => "October",
68
+ 11 => "November",
69
+ 12 => "December"
70
+ }
71
+
47
72
  #Thanks to ActiveSupport: http://rubydoc.info/docs/rails/2.3.8/ActiveSupport/CoreExtensions/Time/Calculations
48
73
  @@days_in_months = [nil, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
49
74
 
50
- #This date is a monday. It is used to calculate up against, when we calculate 'day_in_week'.
51
- @@def_date = Datet.new(1970, 1, 4)
52
-
53
75
  #Initializes the object. Default is the current time. A time-object can be given.
54
76
  #=Examples
55
77
  # datet = Datet.new #=> Datet-object with the current date and time.
@@ -199,21 +221,33 @@ class Datet
199
221
  #
200
222
  #Try to find next wednesday by Time's wday-method.
201
223
  # datet.find(:day, :wday => 3) #=> 2012-05-09 19:36:08 +0200
202
- def find(incr, args)
224
+ def find(args)
225
+ #Test arguments.
226
+ raise ArgumentError, "Too little arguments given: #{args.length}" if args.length < 2
227
+
228
+ args.each do |key, val|
229
+ case key
230
+ when :wday_mfirst, :wday, :incr
231
+ else
232
+ raise ArgumentError, "Invalid key in arguments: '#{key}'."
233
+ end
234
+ end
235
+
236
+ #Find the date.
203
237
  count = 0
204
238
  while true
205
- if args[:day_in_week] and self.day_in_week == args[:day_in_week]
239
+ if args[:wday_mfirst] and self.day_in_week(:mfirst => true) == args[:wday_mfirst]
206
240
  return self
207
- elsif args[:wday] and self.time.wday == args[:wday].to_i
241
+ elsif args[:wday] and self.day_in_week == args[:wday]
208
242
  return self
209
243
  end
210
244
 
211
- if incr == :day
245
+ if args[:incr] == :day
212
246
  self.add_days(1)
213
- elsif incr == :month
247
+ elsif args[:incr] == :month
214
248
  self.add_months(1)
215
249
  else
216
- raise "Invalid increment: #{incr}."
250
+ raise ArgumentError, "Invalid increment: #{incr}."
217
251
  end
218
252
 
219
253
  count += 1
@@ -414,7 +448,7 @@ class Datet
414
448
 
415
449
  #Class-method for days in month.
416
450
  def self.days_in_month(year, month)
417
- raise "Invalid month: '#{month}'." if month.to_i <= 0
451
+ raise ArgumentError, "Invalid month: '#{month}'." if month.to_i <= 0
418
452
  return 29 if month == 2 and Datet.gregorian_leap?(year)
419
453
  return @@days_in_months[month]
420
454
  end
@@ -430,8 +464,23 @@ class Datet
430
464
  return 365
431
465
  end
432
466
 
433
- #Returns the day in the week. Monday being 0 and sunday being 6.
434
- def day_in_week
467
+ #Returns the day in the week.
468
+ #===Examples
469
+ #Get a monday:
470
+ # datet = Datet.new(1970, 1, 4)
471
+ # datet.day_in_week #=> 1
472
+ # datet.day_in_week(:mfirst = true) #=> 0
473
+ def day_in_week(args = nil)
474
+ if args
475
+ args.each do |key, val|
476
+ case key
477
+ when :mfirst
478
+ else
479
+ raise ArgumentError, "Invalid key in arguments: '#{key}'."
480
+ end
481
+ end
482
+ end
483
+
435
484
  #This is a monday - 0. Use this date to calculate up against.
436
485
  def_date = Datet.new(1970, 1, 4)
437
486
 
@@ -447,10 +496,13 @@ class Datet
447
496
  diw = 0 if diw == 7
448
497
  end
449
498
 
450
- if diw == 0
451
- diw = 6
452
- else
453
- diw -= 1
499
+ #Monday should be the first day in the week.
500
+ if args and args[:mfirst]
501
+ if diw == 0
502
+ diw = 6
503
+ else
504
+ diw -= 1
505
+ end
454
506
  end
455
507
 
456
508
  return diw
@@ -458,12 +510,37 @@ class Datet
458
510
 
459
511
  #Returns the days name as a string.
460
512
  def day_name
461
- return self.time.strftime("%A")
513
+ return @@day_names[self.day_in_week]
514
+ end
515
+
516
+ #Returns the day as a localized string.
517
+ #===Examples
518
+ # Datet.new.day_str #=> "Monday"
519
+ # Datet.new.day_str(:short => true) #=> "Mon"
520
+ def day_str(args = nil)
521
+ ret = Datet.days(:trans => true)[self.day_in_week]
522
+ if args and args[:short]
523
+ ret = ret.slice(0, 3)
524
+ end
525
+
526
+ return ret
527
+ end
528
+
529
+ #Returns the month as a localized string.
530
+ #===Examples
531
+ # Datet.new.month_str #=> "January"
532
+ def month_str
533
+ ret = Datet.months(:trans => true)[@t_month]
534
+ if args and args[:short]
535
+ ret = ret.slice(0, 3)
536
+ end
537
+
538
+ return ret
462
539
  end
463
540
 
464
541
  #Returns the months name as a string.
465
542
  def month_name
466
- return self.time.strftime("%B")
543
+ return @@month_names[@t_month]
467
544
  end
468
545
 
469
546
  #Returns the year as an integer.
@@ -511,13 +588,6 @@ class Datet
511
588
  return @t_day
512
589
  end
513
590
 
514
- #Returns the weekday of the week as an integer. Monday being the first and sunday being the last.
515
- def wday_mon
516
- wday = self.time.wday
517
- return 0 if wday == 6
518
- return wday - 1
519
- end
520
-
521
591
  #Changes the date to a given date.
522
592
  #===Examples
523
593
  # datet.time #=> 2005-05-03 17:46:11 +0200
@@ -589,7 +659,7 @@ class Datet
589
659
  # datet.time #=> 2012-07-09 05:35:20 +0200
590
660
  def month=(newmonth)
591
661
  newmonth = newmonth.to_i
592
- raise "Invalid month: '#{newmonth}'." if newmonth <= 0
662
+ raise ArgumentError, "Invalid month: '#{newmonth}'." if newmonth <= 0
593
663
  @t_month = newmonth
594
664
  end
595
665
 
@@ -603,7 +673,7 @@ class Datet
603
673
  elsif datet.is_a?(Time)
604
674
  return datet
605
675
  else
606
- raise "Could not handle object of class: '#{datet.class.name}'."
676
+ raise ArgumentError, "Could not handle object of class: '#{datet.class.name}'."
607
677
  end
608
678
  end
609
679
 
@@ -617,7 +687,7 @@ class Datet
617
687
  elsif datet.is_a?(Time)
618
688
  return Datet.new(datet)
619
689
  else
620
- raise "Could not handle object of class: '#{datet.class.name}'."
690
+ raise ArgumentError, "Could not handle object of class: '#{datet.class.name}'."
621
691
  end
622
692
  end
623
693
 
@@ -787,20 +857,19 @@ class Datet
787
857
  #===Examples
788
858
  # Datet.new.day_of_year #=> 123
789
859
  def day_of_year
790
- return self.time.strftime("%j").to_i
791
- end
792
-
793
- #Returns the day as a localized string.
794
- #===Examples
795
- # Datet.new.day_str #=> "Monday"
796
- # Datet.new.day_str(:short => true) #=> "Mon"
797
- def day_str(args = nil)
798
- ret = Datet.days_arr[self.time.strftime("%w").to_i]
799
- if args and args[:short]
800
- ret = ret.slice(0, 3)
860
+ count = @t_day
861
+ @@days_in_months.each_index do |key|
862
+ break if key >= @t_month
863
+ val = @@days_in_months[key]
864
+
865
+ if key == 2 and Datet.gregorian_leap?(@t_year)
866
+ count += 29
867
+ else
868
+ count += val.to_i
869
+ end
801
870
  end
802
871
 
803
- return ret
872
+ return count
804
873
  end
805
874
 
806
875
  #Returns how many days there is between the two timestamps given as an integer.
@@ -810,7 +879,7 @@ class Datet
810
879
  # d2.months + 5 #=> 2012-10-03 18:04:16 +0200
811
880
  # Datet.days_between(d1, d2) #=> 153
812
881
  def self.days_between(t1, t2)
813
- raise "Timestamp 2 should be larger than timestamp 1." if t2 < t1
882
+ raise ArgumentError, "Timestamp 2 should be larger than timestamp 1." if t2 < t1
814
883
 
815
884
  doy1 = t1.day_of_year
816
885
  doy2 = t2.day_of_year
@@ -948,53 +1017,81 @@ class Datet
948
1017
  end
949
1018
 
950
1019
  #Returns a hash with the month-no as key and month-name as value. It uses the method "_" to translate the months names. So GetText or another method has to be defined.
951
- def self.months_arr(args = {})
952
- ret = {
953
- 1 => _("January"),
954
- 2 => _("February"),
955
- 3 => _("March"),
956
- 4 => _("April"),
957
- 5 => _("May"),
958
- 6 => _("June"),
959
- 7 => _("July"),
960
- 8 => _("August"),
961
- 9 => _("September"),
962
- 10 => _("October"),
963
- 11 => _("November"),
964
- 12 => _("December")
965
- }
1020
+ def self.months(args = nil)
1021
+ if args
1022
+ args.each do |key, val|
1023
+ case key
1024
+ when :short, :trans
1025
+ else
1026
+ raise ArgumentError, "Invalid key in arguments: '#{key}'."
1027
+ end
1028
+ end
1029
+ end
966
1030
 
967
- if args["short"]
968
- ret_short = {}
969
- ret.each do |key, val|
970
- ret_short[key] = val[0..2]
1031
+ ret = @@month_names.clone
1032
+
1033
+ if args
1034
+ if args[:trans]
1035
+ ret.each do |key, val|
1036
+ ret[key] = _(val)
1037
+ end
971
1038
  end
972
1039
 
973
- return ret_short
1040
+ if args[:short]
1041
+ ret_short = {}
1042
+ ret.each do |key, val|
1043
+ ret_short[key] = val[0..2]
1044
+ end
1045
+
1046
+ return ret_short
1047
+ end
974
1048
  end
975
1049
 
976
1050
  return ret
977
1051
  end
978
1052
 
979
1053
  #Returns a hash with the day-number as value (starting with 1 for monday). It uses the method "_" to translate the months names.
980
- def self.days_arr(args = {})
981
- ret = {
982
- 1 => _("Monday"),
983
- 2 => _("Tuesday"),
984
- 3 => _("Wednesday"),
985
- 4 => _("Thursday"),
986
- 5 => _("Friday"),
987
- 6 => _("Saturday"),
988
- 0 => _("Sunday")
989
- }
1054
+ #===Examples
1055
+ # Datet.days #=> {0=>"Sunday", 1=>"Monday", 2=>"Tuesday", 3=>"Wednesday", 4=>"Thursday", 5=>"Friday", 6=>"Saturday"}
1056
+ # Datet.days(:mfirst => true) #=> {0=>"Monday", 1=>"Tuesday", 2=>"Wednesday", 3=>"Thursday", 4=>"Friday", 5=>"Saturday", 6=>"Sunday"}
1057
+ def self.days(args = nil)
1058
+ if args
1059
+ args.each do |key, val|
1060
+ case key
1061
+ when :mfirst, :short, :trans
1062
+ else
1063
+ raise ArgumentError, "Unknown key in arguments: '#{key}'."
1064
+ end
1065
+ end
1066
+ end
1067
+
1068
+ ret = @@day_names.clone
990
1069
 
991
- if args["short"]
992
- ret_short = {}
993
- ret.each do |key, val|
994
- ret_short[key] = val[0..2]
1070
+ if args
1071
+ if args[:trans]
1072
+ ret.each do |key, val|
1073
+ ret[key] = _(val)
1074
+ end
995
1075
  end
996
1076
 
997
- return ret_short
1077
+ if args[:mfirst]
1078
+ newret = {}
1079
+ ret.each do |key, val|
1080
+ next if key == 0
1081
+ newret[key - 1] = val
1082
+ end
1083
+ newret[6] = ret[0]
1084
+ ret = newret
1085
+ end
1086
+
1087
+ if args[:short]
1088
+ ret_short = {}
1089
+ ret.each do |key, val|
1090
+ ret_short[key] = val[0..2]
1091
+ end
1092
+
1093
+ ret = ret_short
1094
+ end
998
1095
  end
999
1096
 
1000
1097
  return ret
@@ -1003,10 +1100,18 @@ class Datet
1003
1100
  #Converts a given day-name to the right day number.
1004
1101
  #===Examples
1005
1102
  # Datet.day_str_to_no('wed') #=> 3
1006
- def self.day_str_to_no(day_str)
1103
+ def self.day_str_to_no(day_str, args = nil)
1007
1104
  day_str = day_str.to_s.strip[0, 3]
1008
1105
 
1009
1106
  if no = @@days_lcase[day_str]
1107
+ if args and args[:mfirst]
1108
+ if no == 0
1109
+ no = 6
1110
+ else
1111
+ no -= 1
1112
+ end
1113
+ end
1114
+
1010
1115
  return no
1011
1116
  end
1012
1117
 
@@ -1021,19 +1126,7 @@ class Datet
1021
1126
  def self.month_str_to_no(str)
1022
1127
  str = str.to_s.downcase.strip
1023
1128
  return @@months_lcase[str] if @@months_lcase.key?(str)
1024
- raise "No month to return from that string: '#{str}'."
1025
- end
1026
-
1027
- def loc_wday
1028
- return _(self.time.strftime("%A"))
1029
- end
1030
-
1031
- def loc_wday_small
1032
- return _(self.time.strftime("%a"))
1033
- end
1034
-
1035
- def loc_month
1036
- return _(self.time.strftime("%B"))
1129
+ raise ArgumentError, "No month to return from that string: '#{str}'."
1037
1130
  end
1038
1131
 
1039
1132
  #This returns a code-string that can be used to recreate the Datet-object.
@@ -1044,19 +1137,23 @@ class Datet
1044
1137
  return "#{"%04d" % @t_year}#{"%02d" % @t_month}#{"%02d" % @t_day}#{"%02d" % @t_hour}#{"%02d" % @t_min}#{"%02d" % @t_sec}#{"%05d" % @t_usec}"
1045
1138
  end
1046
1139
 
1047
- #Returns the unix timestamp for this object.
1140
+ #Returns the unix timestamp for this object (uses 'Time' to calculate).
1048
1141
  #===Examples
1049
1142
  # datet.to_i #=> 487843200
1050
1143
  def to_i
1051
1144
  return self.time.to_i
1052
1145
  end
1053
1146
 
1147
+ #Returns the unix timestamp for this object as a float (uses 'Time' to calculate).
1148
+ #===Examples
1149
+ # Datet.new.to_f #=> 1342381158.0
1054
1150
  def to_f
1055
- return self.time_to_f
1151
+ return self.time.to_f
1056
1152
  end
1057
1153
 
1154
+ #Returns a string that describes the object.
1058
1155
  def to_s
1059
- return self.time.to_s
1156
+ return "#{"%04d" % @t_year}-#{"%02d" % @t_month}-#{"%02d" % @t_day} #{"%02d" % @t_hour}:#{"%02d" % @t_min}:#{"%02d" % @t_sec}"
1060
1157
  end
1061
1158
 
1062
1159
  #Returns arguments in an array.
@@ -1068,8 +1165,7 @@ class Datet
1068
1165
  #===Examples
1069
1166
  # datet.httpdate #=> "Mon, 17 Jun 1985 08:00:00 GMT"
1070
1167
  def httpdate
1071
- require "time"
1072
- return self.time.httpdate
1168
+ return "#{self.day_name[0, 3]}, #{@t_day} #{self.month_name[0, 3]} #{@t_year} #{"%02d" % @t_hour}:#{"%02d" % @t_min}:#{"%02d" % @t_sec} GMT"
1073
1169
  end
1074
1170
 
1075
1171
  #Returns various information about the offset as a hash.
@@ -176,6 +176,16 @@ describe "Datet" do
176
176
  tests.each do |test_str, right_res|
177
177
  res = Datet.day_str_to_no(test_str)
178
178
  raise "Expected result: '#{right_res}' but got: '#{res}'." if res != right_res
179
+
180
+ #Check that the ':mfirst' is working as well (monday first day of week).
181
+ res2 = Datet.day_str_to_no(test_str, :mfirst => true)
182
+ if res == 0
183
+ exp = 6
184
+ else
185
+ exp = res - 1
186
+ end
187
+
188
+ raise "Expected '#{exp}' but got: '#{res2}'." if res2 != exp
179
189
  end
180
190
  end
181
191
 
@@ -229,8 +239,8 @@ describe "Datet" do
229
239
  [Datet.new(2012, 7, 17), 1]
230
240
  ]
231
241
  tests.each do |data|
232
- day_in_week = data[0].day_in_week
233
- raise "Expected #{data[1]} but got #{day_in_week}" if day_in_week != data[1]
242
+ day_in_week = data[0].day_in_week(:mfirst => true)
243
+ raise "Expected '#{data[1]}' but got '#{day_in_week}'." if day_in_week != data[1]
234
244
 
235
245
  diw = data[0].time.strftime("%w").to_i
236
246
  if diw == 0
@@ -269,9 +279,62 @@ describe "Datet" do
269
279
  datet = Datet.new(1970, 1, 4)
270
280
  6.times do |i|
271
281
  day_str = datet.day_str
272
- exp = Datet.days_arr[i]
282
+ exp = Datet.days[i]
273
283
  raise "Expected '#{exp}' but got '#{day_str}' for day-no: '#{i}'." if day_str != exp
274
284
  datet.days + 1
275
285
  end
286
+
287
+ #Check date 'mfirst' works (monday first day of week).
288
+ days_str_sf = Datet.days
289
+ days_str_mf = Datet.days(:mfirst => true)
290
+
291
+ days_str_mf.each do |key, val|
292
+ if key == 6
293
+ use_key = 0
294
+ else
295
+ use_key = key + 1
296
+ end
297
+
298
+ res = days_str_sf[use_key]
299
+ raise "Expected '#{val}' but got: '#{res}' for key: '#{use_key}'." if res != val
300
+ end
301
+ end
302
+
303
+ it "should be able to calculate the day of the year" do
304
+ tests = [
305
+ [Datet.new(2005, 1, 1), 1],
306
+ [Datet.new(2005, 12, 31), 365],
307
+ [Datet.new(2005, 3, 1), 60],
308
+ [Datet.new(2008, 3, 1), 61],
309
+ [Datet.new(2005, 2, 27), 58],
310
+ [Datet.new(2008, 2, 27), 58]
311
+ ]
312
+
313
+ tests.each do |data|
314
+ res = data[0].day_of_year
315
+ raise "Expected '#{data[1]}' but got: '#{res}' for #{data[0]}." if res != data[1]
316
+ end
317
+ end
318
+
319
+ it "should return http-dates" do
320
+ tests = [
321
+ [Datet.new(1985, 6, 17, 8), "Mon, 17 Jun 1985 08:00:00 GMT"]
322
+ ]
323
+
324
+ tests.each do |data|
325
+ res = data[0].httpdate
326
+ raise "Expected: '#{data[1]}' but got: '#{res}'." if res != data[1]
327
+ end
328
+ end
329
+
330
+ it "should be able to do finds" do
331
+ #This is a monday.
332
+ datet = Datet.new(1970, 1, 4)
333
+
334
+ datet.find(:incr => :day, :wday => 4)
335
+ raise "Expected 'day_name' to be 'Thursday' but it wasnt: '#{datet.day_name}'." if datet.day_name != "Thursday"
336
+
337
+ datet.find(:incr => :month, :wday => 5)
338
+ raise "Expected dbstr to be '1970-05-08' but it wasnt: '#{datet.dbstr(:time => false)}'." if datet.dbstr(:time => false) != "1970-05-08"
276
339
  end
277
340
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: datet
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.6
5
+ version: 0.0.7
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kasper Johansen
@@ -57,17 +57,6 @@ dependencies:
57
57
  type: :development
58
58
  prerelease: false
59
59
  version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: rcov
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- type: :development
69
- prerelease: false
70
- version_requirements: *id005
71
60
  description: A framework for handeling date- and time-related stuff in Ruby.
72
61
  email: k@spernj.org
73
62
  executables: []
@@ -104,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
93
  requirements:
105
94
  - - ">="
106
95
  - !ruby/object:Gem::Version
107
- hash: 4324212231909308806
96
+ hash: 3008034930327995715
108
97
  segments:
109
98
  - 0
110
99
  version: "0"