code-ruby 1.5.6 → 1.6.0

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.
@@ -5,15 +5,89 @@ class Code
5
5
  class Time < Object
6
6
  DEFAULT_ZONE = "Etc/UTC"
7
7
 
8
+ class << self
9
+ delegate(
10
+ :code_add,
11
+ :code_substract,
12
+ :code_past?,
13
+ :code_future?,
14
+ :code_before?,
15
+ :code_after?,
16
+ :code_tomorrow,
17
+ :code_yesterday,
18
+ :code_now,
19
+ :code_today,
20
+ :code_current,
21
+ :code_year,
22
+ :code_years,
23
+ :code_month,
24
+ :code_months,
25
+ :code_week,
26
+ :code_weeks,
27
+ :code_week_day,
28
+ :code_week_days,
29
+ :code_day,
30
+ :code_days,
31
+ :code_hour,
32
+ :code_hours,
33
+ :code_minute,
34
+ :code_minutes,
35
+ :code_second,
36
+ :code_seconds,
37
+ :code_monday?,
38
+ :code_tuesday?,
39
+ :code_wednesday?,
40
+ :code_thursday?,
41
+ :code_friday?,
42
+ :code_saturday?,
43
+ :code_sunday?,
44
+ :code_january?,
45
+ :code_february?,
46
+ :code_march?,
47
+ :code_april?,
48
+ :code_may?,
49
+ :code_june?,
50
+ :code_july?,
51
+ :code_august?,
52
+ :code_september?,
53
+ :code_october?,
54
+ :code_november?,
55
+ :code_december?,
56
+ :code_change,
57
+ to: :new
58
+ )
59
+ end
60
+
8
61
  def initialize(*args, **_kargs, &_block)
9
62
  ::Time.zone ||= DEFAULT_ZONE
10
- self.raw = ::Time.zone.parse(args.first.to_s) || ::Time.zone.now
63
+
64
+ if args.first.is_a?(String) || args.first.is_a?(::String)
65
+ self.raw = ::Time.zone.parse(args.first.to_s) || raise(Error)
66
+ elsif args.first.is_a?(Time)
67
+ self.raw = args.first.raw.dup
68
+ elsif args.first.is_a?(::Time)
69
+ self.raw = args.first.dup
70
+ elsif args.first.is_a?(Date)
71
+ self.raw = args.first.raw.to_time
72
+ elsif args.first.is_a?(::Date)
73
+ self.raw = args.first.to_time
74
+ else
75
+ self.raw = ::Time.zone.now
76
+ end
11
77
  end
12
78
 
13
79
  def self.call(**args)
14
80
  code_operator = args.fetch(:operator, nil).to_code
81
+ code_arguments = args.fetch(:arguments, []).to_code
82
+ code_value = code_arguments.code_first
15
83
 
16
84
  case code_operator.to_s
85
+ when "after?"
86
+ sig(args) { (Date | Time).maybe }
87
+ code_after?(code_value)
88
+ when "before?"
89
+ sig(args) { (Date | Time).maybe }
90
+ code_before?(code_value)
17
91
  when "now"
18
92
  sig(args)
19
93
  code_now
@@ -23,6 +97,12 @@ class Code
23
97
  when "yesterday"
24
98
  sig(args)
25
99
  code_yesterday
100
+ when "past?"
101
+ sig(args)
102
+ code_past?
103
+ when "future?"
104
+ sig(args)
105
+ code_future?
26
106
  when "year"
27
107
  sig(args)
28
108
  code_year
@@ -95,122 +175,179 @@ class Code
95
175
  when "format"
96
176
  sig(args) { String }
97
177
  code_format(code_value)
178
+ when "january?"
179
+ sig(args)
180
+ code_january?
181
+ when "february?"
182
+ sig(args)
183
+ code_february?
184
+ when "march?"
185
+ sig(args)
186
+ code_march?
187
+ when "april?"
188
+ sig(args)
189
+ code_april?
190
+ when "may?"
191
+ sig(args)
192
+ code_may?
193
+ when "june?"
194
+ sig(args)
195
+ code_june?
196
+ when "july?"
197
+ sig(args)
198
+ code_july?
199
+ when "august?"
200
+ sig(args)
201
+ code_august?
202
+ when "september?"
203
+ sig(args)
204
+ code_september?
205
+ when "october?"
206
+ sig(args)
207
+ code_october?
208
+ when "november?"
209
+ sig(args)
210
+ code_november?
211
+ when "december?"
212
+ sig(args)
213
+ code_december?
214
+ when "add"
215
+ sig(args) do
216
+ {
217
+ year: (String | Integer).maybe,
218
+ years: (String | Integer).maybe,
219
+ month: (String | Integer).maybe,
220
+ months: (String | Integer).maybe,
221
+ day: (String | Integer).maybe,
222
+ days: (String | Integer).maybe,
223
+ week_day: (String | Integer).maybe,
224
+ week_days: (String | Integer).maybe,
225
+ week: (String | Integer).maybe,
226
+ weeks: (String | Integer).maybe,
227
+ hour: (String | Integer).maybe,
228
+ hours: (String | Integer).maybe,
229
+ minute: (String | Integer).maybe,
230
+ minutes: (String | Integer).maybe,
231
+ second: (String | Integer).maybe,
232
+ seconds: (String | Integer).maybe
233
+ }
234
+ end
235
+
236
+ if code_value.nothing?
237
+ code_add
238
+ else
239
+ code_add(
240
+ year: code_value.code_get(:year),
241
+ years: code_value.code_get(:years),
242
+ month: code_value.code_get(:month),
243
+ months: code_value.code_get(:months),
244
+ day: code_value.code_get(:day),
245
+ days: code_value.code_get(:days),
246
+ week_day: code_value.code_get(:week_day),
247
+ week_days: code_value.code_get(:week_days),
248
+ week: code_value.code_get(:week),
249
+ weeks: code_value.code_get(:weeks),
250
+ hour: code_value.code_get(:hour),
251
+ hours: code_value.code_get(:hours),
252
+ minute: code_value.code_get(:minute),
253
+ minutes: code_value.code_get(:minutes),
254
+ second: code_value.code_get(:second),
255
+ seconds: code_value.code_get(:seconds)
256
+ )
257
+ end
258
+ when "substract"
259
+ sig(args) do
260
+ {
261
+ year: (String | Integer).maybe,
262
+ years: (String | Integer).maybe,
263
+ month: (String | Integer).maybe,
264
+ months: (String | Integer).maybe,
265
+ day: (String | Integer).maybe,
266
+ days: (String | Integer).maybe,
267
+ week_day: (String | Integer).maybe,
268
+ week_days: (String | Integer).maybe,
269
+ week: (String | Integer).maybe,
270
+ weeks: (String | Integer).maybe,
271
+ hour: (String | Integer).maybe,
272
+ hours: (String | Integer).maybe,
273
+ minute: (String | Integer).maybe,
274
+ minutes: (String | Integer).maybe,
275
+ second: (String | Integer).maybe,
276
+ seconds: (String | Integer).maybe
277
+ }
278
+ end
279
+
280
+ if code_value.nothing?
281
+ code_substract
282
+ else
283
+ code_substract(
284
+ year: code_value.code_get(:year),
285
+ years: code_value.code_get(:years),
286
+ month: code_value.code_get(:month),
287
+ months: code_value.code_get(:months),
288
+ day: code_value.code_get(:day),
289
+ days: code_value.code_get(:days),
290
+ week_day: code_value.code_get(:week_day),
291
+ week_days: code_value.code_get(:week_days),
292
+ week: code_value.code_get(:week),
293
+ weeks: code_value.code_get(:weeks),
294
+ hour: code_value.code_get(:hour),
295
+ hours: code_value.code_get(:hours),
296
+ minute: code_value.code_get(:minute),
297
+ minutes: code_value.code_get(:minutes),
298
+ second: code_value.code_get(:second),
299
+ seconds: code_value.code_get(:seconds)
300
+ )
301
+ end
302
+ when "change"
303
+ sig(args) do
304
+ {
305
+ year: (String | Integer).maybe,
306
+ years: (String | Integer).maybe,
307
+ month: (String | Integer).maybe,
308
+ months: (String | Integer).maybe,
309
+ day: (String | Integer).maybe,
310
+ days: (String | Integer).maybe,
311
+ week_day: (String | Integer).maybe,
312
+ week_days: (String | Integer).maybe,
313
+ week: (String | Integer).maybe,
314
+ weeks: (String | Integer).maybe,
315
+ hour: (String | Integer).maybe,
316
+ hours: (String | Integer).maybe,
317
+ minute: (String | Integer).maybe,
318
+ minutes: (String | Integer).maybe,
319
+ second: (String | Integer).maybe,
320
+ seconds: (String | Integer).maybe
321
+ }
322
+ end
323
+
324
+ if code_value.nothing?
325
+ code_change
326
+ else
327
+ code_change(
328
+ year: code_value.code_get(:year),
329
+ years: code_value.code_get(:years),
330
+ month: code_value.code_get(:month),
331
+ months: code_value.code_get(:months),
332
+ day: code_value.code_get(:day),
333
+ days: code_value.code_get(:days),
334
+ week_day: code_value.code_get(:week_day),
335
+ week_days: code_value.code_get(:week_days),
336
+ week: code_value.code_get(:week),
337
+ weeks: code_value.code_get(:weeks),
338
+ hour: code_value.code_get(:hour),
339
+ hours: code_value.code_get(:hours),
340
+ minute: code_value.code_get(:minute),
341
+ minutes: code_value.code_get(:minutes),
342
+ second: code_value.code_get(:second),
343
+ seconds: code_value.code_get(:seconds)
344
+ )
345
+ end
98
346
  else
99
347
  super
100
348
  end
101
349
  end
102
350
 
103
- def self.code_tomorrow
104
- ::Time.zone ||= DEFAULT_ZONE
105
- new(::Time.zone.tomorrow)
106
- end
107
-
108
- def self.code_yesterday
109
- ::Time.zone ||= DEFAULT_ZONE
110
- new(::Time.zone.yesterday)
111
- end
112
-
113
- def self.code_now
114
- ::Time.zone ||= DEFAULT_ZONE
115
- new(::Time.zone.now)
116
- end
117
-
118
- def self.code_year
119
- code_now.code_year
120
- end
121
-
122
- def self.code_years
123
- code_now.code_years
124
- end
125
-
126
- def self.code_month
127
- code_now.code_month
128
- end
129
-
130
- def self.code_months
131
- code_now.code_months
132
- end
133
-
134
- def self.code_week
135
- code_now.code_week
136
- end
137
-
138
- def self.code_weeks
139
- code_now.code_weeks
140
- end
141
-
142
- def self.code_week_day
143
- code_now.code_week_day
144
- end
145
-
146
- def self.code_week_days
147
- code_now.code_week_days
148
- end
149
-
150
- def self.code_day
151
- code_now.code_day
152
- end
153
-
154
- def self.code_days
155
- code_now.code_days
156
- end
157
-
158
- def self.code_hour
159
- code_now.code_hour
160
- end
161
-
162
- def self.code_hours
163
- code_now.code_hours
164
- end
165
-
166
- def self.code_minute
167
- code_now.code_minute
168
- end
169
-
170
- def self.code_minutes
171
- code_now.code_minutes
172
- end
173
-
174
- def self.code_second
175
- code_now.code_second
176
- end
177
-
178
- def self.code_seconds
179
- code_now.code_seconds
180
- end
181
-
182
- def self.code_monday?
183
- code_week_day.code_one?
184
- end
185
-
186
- def self.code_tuesday?
187
- code_week_day.code_two?
188
- end
189
-
190
- def self.code_wednesday?
191
- code_week_day.code_three?
192
- end
193
-
194
- def self.code_thursday?
195
- code_week_day.code_four?
196
- end
197
-
198
- def self.code_friday?
199
- code_week_day.code_five?
200
- end
201
-
202
- def self.code_saturday?
203
- code_week_day.code_six?
204
- end
205
-
206
- def self.code_sunday?
207
- code_week_day.code_zero?
208
- end
209
-
210
- def self.code_format(format)
211
- code_now.code_format(format)
212
- end
213
-
214
351
  def call(**args)
215
352
  code_operator = args.fetch(:operator, nil).to_code
216
353
  code_arguments = args.fetch(:arguments, []).to_code
@@ -218,11 +355,17 @@ class Code
218
355
 
219
356
  case code_operator.to_s
220
357
  when "after?"
221
- sig(args) { Time.maybe }
358
+ sig(args) { (Date | Time).maybe }
222
359
  code_after?(code_value)
223
360
  when "before?"
224
- sig(args) { Time.maybe }
361
+ sig(args) { (Date | Time).maybe }
225
362
  code_before?(code_value)
363
+ when "tomorrow"
364
+ sig(args)
365
+ code_tomorrow
366
+ when "yesterday"
367
+ sig(args)
368
+ code_yesterday
226
369
  when "past?"
227
370
  sig(args)
228
371
  code_past?
@@ -301,6 +444,174 @@ class Code
301
444
  when "format"
302
445
  sig(args) { String }
303
446
  code_format(code_value)
447
+ when "january?"
448
+ sig(args)
449
+ code_january?
450
+ when "february?"
451
+ sig(args)
452
+ code_february?
453
+ when "march?"
454
+ sig(args)
455
+ code_march?
456
+ when "april?"
457
+ sig(args)
458
+ code_april?
459
+ when "may?"
460
+ sig(args)
461
+ code_may?
462
+ when "june?"
463
+ sig(args)
464
+ code_june?
465
+ when "july?"
466
+ sig(args)
467
+ code_july?
468
+ when "august?"
469
+ sig(args)
470
+ code_august?
471
+ when "september?"
472
+ sig(args)
473
+ code_september?
474
+ when "october?"
475
+ sig(args)
476
+ code_october?
477
+ when "november?"
478
+ sig(args)
479
+ code_november?
480
+ when "december?"
481
+ sig(args)
482
+ code_december?
483
+ when "add"
484
+ sig(args) do
485
+ {
486
+ year: (String | Integer).maybe,
487
+ years: (String | Integer).maybe,
488
+ month: (String | Integer).maybe,
489
+ months: (String | Integer).maybe,
490
+ day: (String | Integer).maybe,
491
+ days: (String | Integer).maybe,
492
+ week_day: (String | Integer).maybe,
493
+ week_days: (String | Integer).maybe,
494
+ week: (String | Integer).maybe,
495
+ weeks: (String | Integer).maybe,
496
+ hour: (String | Integer).maybe,
497
+ hours: (String | Integer).maybe,
498
+ minute: (String | Integer).maybe,
499
+ minutes: (String | Integer).maybe,
500
+ second: (String | Integer).maybe,
501
+ seconds: (String | Integer).maybe
502
+ }
503
+ end
504
+
505
+ if code_value.nothing?
506
+ code_add
507
+ else
508
+ code_add(
509
+ year: code_value.code_get(:year),
510
+ years: code_value.code_get(:years),
511
+ month: code_value.code_get(:month),
512
+ months: code_value.code_get(:months),
513
+ day: code_value.code_get(:day),
514
+ days: code_value.code_get(:days),
515
+ week_day: code_value.code_get(:week_day),
516
+ week_days: code_value.code_get(:week_days),
517
+ week: code_value.code_get(:week),
518
+ weeks: code_value.code_get(:weeks),
519
+ hour: code_value.code_get(:hour),
520
+ hours: code_value.code_get(:hours),
521
+ minute: code_value.code_get(:minute),
522
+ minutes: code_value.code_get(:minutes),
523
+ second: code_value.code_get(:second),
524
+ seconds: code_value.code_get(:seconds)
525
+ )
526
+ end
527
+ when "substract"
528
+ sig(args) do
529
+ {
530
+ year: (String | Integer).maybe,
531
+ years: (String | Integer).maybe,
532
+ month: (String | Integer).maybe,
533
+ months: (String | Integer).maybe,
534
+ day: (String | Integer).maybe,
535
+ days: (String | Integer).maybe,
536
+ week_day: (String | Integer).maybe,
537
+ week_days: (String | Integer).maybe,
538
+ week: (String | Integer).maybe,
539
+ weeks: (String | Integer).maybe,
540
+ hour: (String | Integer).maybe,
541
+ hours: (String | Integer).maybe,
542
+ minute: (String | Integer).maybe,
543
+ minutes: (String | Integer).maybe,
544
+ second: (String | Integer).maybe,
545
+ seconds: (String | Integer).maybe
546
+ }
547
+ end
548
+
549
+ if code_value.nothing?
550
+ code_substract
551
+ else
552
+ code_substract(
553
+ year: code_value.code_get(:year),
554
+ years: code_value.code_get(:years),
555
+ month: code_value.code_get(:month),
556
+ months: code_value.code_get(:months),
557
+ day: code_value.code_get(:day),
558
+ days: code_value.code_get(:days),
559
+ week_day: code_value.code_get(:week_day),
560
+ week_days: code_value.code_get(:week_days),
561
+ week: code_value.code_get(:week),
562
+ weeks: code_value.code_get(:weeks),
563
+ hour: code_value.code_get(:hour),
564
+ hours: code_value.code_get(:hours),
565
+ minute: code_value.code_get(:minute),
566
+ minutes: code_value.code_get(:minutes),
567
+ second: code_value.code_get(:second),
568
+ seconds: code_value.code_get(:seconds)
569
+ )
570
+ end
571
+ when "change"
572
+ sig(args) do
573
+ {
574
+ year: (String | Integer).maybe,
575
+ years: (String | Integer).maybe,
576
+ month: (String | Integer).maybe,
577
+ months: (String | Integer).maybe,
578
+ day: (String | Integer).maybe,
579
+ days: (String | Integer).maybe,
580
+ week_day: (String | Integer).maybe,
581
+ week_days: (String | Integer).maybe,
582
+ week: (String | Integer).maybe,
583
+ weeks: (String | Integer).maybe,
584
+ hour: (String | Integer).maybe,
585
+ hours: (String | Integer).maybe,
586
+ minute: (String | Integer).maybe,
587
+ minutes: (String | Integer).maybe,
588
+ second: (String | Integer).maybe,
589
+ seconds: (String | Integer).maybe
590
+ }
591
+ end
592
+
593
+ if code_value.nothing?
594
+ code_change
595
+ else
596
+ code_change(
597
+ year: code_value.code_get(:year),
598
+ years: code_value.code_get(:years),
599
+ month: code_value.code_get(:month),
600
+ months: code_value.code_get(:months),
601
+ day: code_value.code_get(:day),
602
+ days: code_value.code_get(:days),
603
+ week_day: code_value.code_get(:week_day),
604
+ week_days: code_value.code_get(:week_days),
605
+ week: code_value.code_get(:week),
606
+ weeks: code_value.code_get(:weeks),
607
+ hour: code_value.code_get(:hour),
608
+ hours: code_value.code_get(:hours),
609
+ minute: code_value.code_get(:minute),
610
+ minutes: code_value.code_get(:minutes),
611
+ second: code_value.code_get(:second),
612
+ seconds: code_value.code_get(:seconds)
613
+ )
614
+ end
304
615
  else
305
616
  super
306
617
  end
@@ -420,11 +731,230 @@ class Code
420
731
  code_week_day.code_zero?
421
732
  end
422
733
 
734
+ def code_january?
735
+ code_month.code_one?
736
+ end
737
+
738
+ def code_february?
739
+ code_month.code_two?
740
+ end
741
+
742
+ def code_march?
743
+ code_month.code_three?
744
+ end
745
+
746
+ def code_april?
747
+ code_month.code_four?
748
+ end
749
+
750
+ def code_may?
751
+ code_month.code_five?
752
+ end
753
+
754
+ def code_june?
755
+ code_month.code_six?
756
+ end
757
+
758
+ def code_july?
759
+ code_month.code_seven?
760
+ end
761
+
762
+ def code_august?
763
+ code_month.code_eight?
764
+ end
765
+
766
+ def code_september?
767
+ code_month.code_nine?
768
+ end
769
+
770
+ def code_october?
771
+ code_month.code_ten?
772
+ end
773
+
774
+ def code_november?
775
+ code_month.code_eleven?
776
+ end
777
+
778
+ def code_december?
779
+ code_month.code_twelve?
780
+ end
781
+
423
782
  def code_format(format)
424
783
  code_format = format.to_code
425
784
 
426
785
  String.new(raw.strftime(code_format.raw))
427
786
  end
787
+
788
+ def code_today
789
+ Time.new
790
+ end
791
+
792
+ def code_now
793
+ Time.new
794
+ end
795
+
796
+ def code_current
797
+ Time.new
798
+ end
799
+
800
+ def code_tomorrow
801
+ code_add(day: 1)
802
+ end
803
+
804
+ def code_yesterday
805
+ code_substract(day: 1)
806
+ end
807
+
808
+ def code_add(
809
+ year: nil,
810
+ years: nil,
811
+ month: nil,
812
+ months: nil,
813
+ day: nil,
814
+ days: nil,
815
+ week_day: nil,
816
+ week_days: nil,
817
+ week: nil,
818
+ weeks: nil,
819
+ hour: nil,
820
+ hours: nil,
821
+ minute: nil,
822
+ minutes: nil,
823
+ second: nil,
824
+ seconds: nil
825
+ )
826
+ code_year = year.to_code.nothing? ? years.to_code : year.to_code
827
+ code_month = month.to_code.nothing? ? months.to_code : month.to_code
828
+ code_day = day.to_code.nothing? ? days.to_code : day.to_code
829
+ code_week_day =
830
+ week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
831
+ code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
832
+ code_hour = hour.to_code.nothing? ? hours.to_code : hour.to_code
833
+ code_minute =
834
+ minute.to_code.nothing? ? minutes.to_code : minute.to_code
835
+ code_second =
836
+ second.to_code.nothing? ? seconds.to_code : second.to_code
837
+
838
+ Time.new(
839
+ raw.change(
840
+ year: code_years.code_to_integer.raw + code_year.code_to_integer.raw,
841
+ month:
842
+ code_months.code_to_integer.raw + code_month.code_to_integer.raw,
843
+ day: code_days.code_to_integer.raw + code_day.code_to_integer.raw,
844
+ wday:
845
+ code_week_days.code_to_integer.raw +
846
+ code_week_day.code_to_integer.raw,
847
+ cweek: code_weeks.code_to_integer.raw + code_week.code_to_integer.raw,
848
+ hour: code_hours.code_to_integer.raw + code_hour.code_to_integer.raw,
849
+ min:
850
+ code_minutes.code_to_integer.raw + code_minute.code_to_integer.raw,
851
+ sec:
852
+ code_seconds.code_to_integer.raw + code_second.code_to_integer.raw
853
+ )
854
+ )
855
+ end
856
+
857
+ def code_substract(
858
+ year: nil,
859
+ years: nil,
860
+ month: nil,
861
+ months: nil,
862
+ day: nil,
863
+ days: nil,
864
+ week_day: nil,
865
+ week_days: nil,
866
+ week: nil,
867
+ weeks: nil,
868
+ hour: nil,
869
+ hours: nil,
870
+ minute: nil,
871
+ minutes: nil,
872
+ second: nil,
873
+ seconds: nil
874
+ )
875
+ code_year = year.to_code.nothing? ? years.to_code : year.to_code
876
+ code_month = month.to_code.nothing? ? months.to_code : month.to_code
877
+ code_day = day.to_code.nothing? ? days.to_code : day.to_code
878
+ code_week_day =
879
+ week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
880
+ code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
881
+ code_hour = hour.to_code.nothing? ? hours.to_code : hour.to_code
882
+ code_minute =
883
+ minute.to_code.nothing? ? minutes.to_code : minute.to_code
884
+ code_second =
885
+ second.to_code.nothing? ? seconds.to_code : second.to_code
886
+
887
+ Time.new(
888
+ raw.change(
889
+ year: code_years.code_to_integer.raw - code_year.code_to_integer.raw,
890
+ month:
891
+ code_months.code_to_integer.raw - code_month.code_to_integer.raw,
892
+ day: code_days.code_to_integer.raw - code_day.code_to_integer.raw,
893
+ wday:
894
+ code_week_days.code_to_integer.raw -
895
+ code_week_day.code_to_integer.raw,
896
+ cweek: code_weeks.code_to_integer.raw - code_week.code_to_integer.raw,
897
+ hour: code_hours.code_to_integer.raw - code_hour.code_to_integer.raw,
898
+ min:
899
+ code_minutes.code_to_integer.raw - code_minute.code_to_integer.raw,
900
+ sec:
901
+ code_seconds.code_to_integer.raw - code_second.code_to_integer.raw
902
+ )
903
+ )
904
+ end
905
+
906
+ def code_change(
907
+ year: nil,
908
+ years: nil,
909
+ month: nil,
910
+ months: nil,
911
+ day: nil,
912
+ days: nil,
913
+ week_day: nil,
914
+ week_days: nil,
915
+ week: nil,
916
+ weeks: nil,
917
+ hour: nil,
918
+ hours: nil,
919
+ minute: nil,
920
+ minutes: nil,
921
+ second: nil,
922
+ seconds: nil
923
+ )
924
+ code_year = year.to_code.nothing? ? years.to_code : year.to_code
925
+ code_month = month.to_code.nothing? ? months.to_code : month.to_code
926
+ code_day = day.to_code.nothing? ? days.to_code : day.to_code
927
+ code_week_day =
928
+ week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
929
+ code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
930
+ code_hour = hour.to_code.nothing? ? hours.to_code : hour.to_code
931
+ code_minute =
932
+ minute.to_code.nothing? ? minutes.to_code : minute.to_code
933
+ code_second =
934
+ second.to_code.nothing? ? seconds.to_code : second.to_code
935
+
936
+ if code_year.something? || code_month.something? ||
937
+ code_day.something? || code_week_day.something? ||
938
+ code_week.something? || code_hour.something? ||
939
+ code_minute.something? || code_second.something?
940
+ Time.new(
941
+ raw.change(
942
+ **{
943
+ year: code_year.raw,
944
+ month: code_month.raw,
945
+ day: code_day.raw,
946
+ wday: code_week_day.raw,
947
+ cweek: code_week.raw,
948
+ hour: code_hour.raw,
949
+ min: code_minute.raw,
950
+ sec: code_second.raw
951
+ }.compact
952
+ )
953
+ )
954
+ else
955
+ Time.new(self)
956
+ end
957
+ end
428
958
  end
429
959
  end
430
960
  end