code-ruby 1.6.0 → 1.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c056c67f03842581b5c4a106cb6147d2cfb4eefea75c2bb187112e04adc44851
4
- data.tar.gz: 1c61bb7ccb9b0a1b29a76cf9405c70ba94d740f77db9c9003662b4401e4d4293
3
+ metadata.gz: af47589cc6afaaec99b2aba7ed43af665f20de7bba2b5d3bc377eab281094cd6
4
+ data.tar.gz: 9203c5dbd24e58a1111ddc9505d429065c9a31210cd9e71e5e7d7fc9f49ef467
5
5
  SHA512:
6
- metadata.gz: 7d45064357034d4232410e47bf5edb5bbfda2ea51be5596aabea466ecd796a011abfc7d850761319deb37e7d2f391852ca0cd8699c82c8a4e9b0f38e2dc6904b
7
- data.tar.gz: 65580e08bae19b1e190a49b44e7d67c2ad05ceb18cda8b4e90efa9a02333fa1bc6216beeefd62d777178a88632562cb737076be7273c4cb500ef3783f7bb9b72
6
+ metadata.gz: b44776a7dc3bd70b03ae61fe921101b00ecd6ed084dfb674d403cf3fc55fc1d4d7890b0d9ef4147d970936716ceb568e8c91cd25adb08460c785c3b5b076ba94
7
+ data.tar.gz: f0331a5566bb8232444a02136612e1ad72ec47cbe588440d2d6bcfe42e8bc00649c4bfe3590f71c34d1f802055bd50a5e8b289c827cadc47ff46ea12a737106f
data/.rubocop.yml CHANGED
@@ -30,6 +30,8 @@ Lint/MissingSuper:
30
30
  Enabled: false
31
31
  Lint/PercentStringArray:
32
32
  Enabled: false
33
+ Lint/SafeNavigationChain:
34
+ Enabled: false
33
35
  Lint/ShadowingOuterLocalVariable:
34
36
  Enabled: false
35
37
  Lint/SuppressedException:
@@ -120,8 +122,6 @@ Style/StringLiterals:
120
122
  Enabled: false
121
123
  Style/StringLiteralsInInterpolation:
122
124
  Enabled: false
123
- Lint/SafeNavigationChain:
124
- Enabled: false
125
125
  plugins:
126
126
  - rubocop-factory_bot
127
127
  - rubocop-performance
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- code-ruby (1.6.0)
4
+ code-ruby (1.6.2)
5
5
  activesupport
6
6
  base64
7
7
  bigdecimal
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.6.0
1
+ 1.6.2
@@ -7,6 +7,9 @@ class Code
7
7
 
8
8
  class << self
9
9
  delegate(
10
+ :code_format,
11
+ :code_past?,
12
+ :code_future?,
10
13
  :code_add,
11
14
  :code_substract,
12
15
  :code_before?,
@@ -76,8 +79,25 @@ class Code
76
79
 
77
80
  def self.call(**args)
78
81
  code_operator = args.fetch(:operator, nil).to_code
82
+ code_arguments = args.fetch(:arguments, []).to_code
83
+ code_value = code_arguments.code_first
79
84
 
80
85
  case code_operator.to_s
86
+ when "after?"
87
+ sig(args) { (Date | Time).maybe }
88
+ code_after?(code_value)
89
+ when "before?"
90
+ sig(args) { (Date | Time).maybe }
91
+ code_before?(code_value)
92
+ when "past?"
93
+ sig(args)
94
+ code_past?
95
+ when "future?"
96
+ sig(args)
97
+ code_future?
98
+ when "format"
99
+ sig(args) { String }
100
+ code_format(code_value)
81
101
  when "tomorrow"
82
102
  sig(args)
83
103
  code_tomorrow
@@ -276,10 +296,10 @@ class Code
276
296
 
277
297
  case code_operator.to_s
278
298
  when "after?"
279
- sig(args) { Time.maybe }
299
+ sig(args) { (Date | Time).maybe }
280
300
  code_after?(code_value)
281
301
  when "before?"
282
- sig(args) { Time.maybe }
302
+ sig(args) { (Date | Time).maybe }
283
303
  code_before?(code_value)
284
304
  when "past?"
285
305
  sig(args)
@@ -468,14 +488,14 @@ class Code
468
488
 
469
489
  def code_after?(other = nil)
470
490
  code_other = other.to_code
471
- code_other = Date.code_now if code_other.nothing?
491
+ code_other = Date.new if code_other.nothing?
472
492
 
473
493
  Boolean.new(raw.after?(code_other.raw))
474
494
  end
475
495
 
476
496
  def code_before?(other = nil)
477
497
  code_other = other.to_code
478
- code_other = Date.code_now if code_other.nothing?
498
+ code_other = Date.new if code_other.nothing?
479
499
 
480
500
  Boolean.new(raw.before?(code_other.raw))
481
501
  end
@@ -673,18 +693,14 @@ class Code
673
693
  week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
674
694
  code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
675
695
 
676
- Date.new(
677
- raw.change(
678
- year: code_years.code_to_integer.raw + code_year.code_to_integer.raw,
679
- month:
680
- code_months.code_to_integer.raw + code_month.code_to_integer.raw,
681
- day: code_days.code_to_integer.raw + code_day.code_to_integer.raw,
682
- wday:
683
- code_week_days.code_to_integer.raw +
684
- code_week_day.code_to_integer.raw,
685
- cweek: code_weeks.code_to_integer.raw + code_week.code_to_integer.raw
686
- )
687
- )
696
+ year = code_years.code_to_integer.raw + code_year.code_to_integer.raw
697
+ month = code_months.code_to_integer.raw + code_month.code_to_integer.raw
698
+ day = code_days.code_to_integer.raw + code_day.code_to_integer.raw
699
+ week_day =
700
+ code_week_days.code_to_integer.raw + code_week_day.code_to_integer.raw
701
+ week = code_weeks.code_to_integer.raw + code_week.code_to_integer.raw
702
+
703
+ code_change(year:, month:, day:, week_day:, week:)
688
704
  end
689
705
 
690
706
  def code_substract(
@@ -706,18 +722,14 @@ class Code
706
722
  week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
707
723
  code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
708
724
 
709
- Date.new(
710
- raw.change(
711
- year: code_years.code_to_integer.raw - code_year.code_to_integer.raw,
712
- month:
713
- code_months.code_to_integer.raw - code_month.code_to_integer.raw,
714
- day: code_days.code_to_integer.raw - code_day.code_to_integer.raw,
715
- wday:
716
- code_week_days.code_to_integer.raw -
717
- code_week_day.code_to_integer.raw,
718
- cweek: code_weeks.code_to_integer.raw - code_week.code_to_integer.raw
719
- )
720
- )
725
+ year = code_years.code_to_integer.raw - code_year.code_to_integer.raw
726
+ month = code_months.code_to_integer.raw - code_month.code_to_integer.raw
727
+ day = code_days.code_to_integer.raw - code_day.code_to_integer.raw
728
+ week_day =
729
+ code_week_days.code_to_integer.raw - code_week_day.code_to_integer.raw
730
+ week = code_weeks.code_to_integer.raw - code_week.code_to_integer.raw
731
+
732
+ code_change(year:, month:, day:, week_day:, week:)
721
733
  end
722
734
 
723
735
  def code_change(
@@ -739,23 +751,20 @@ class Code
739
751
  week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
740
752
  code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
741
753
 
742
- if code_year.something? || code_month.something? ||
743
- code_day.something? || code_week_day.something? ||
744
- code_week.something?
745
- Date.new(
746
- raw.change(
747
- **{
748
- year: code_year.raw,
749
- month: code_month.raw,
750
- day: code_day.raw,
751
- wday: code_week_day.raw,
752
- cweek: code_week.raw
753
- }.compact
754
- )
755
- )
756
- else
757
- Date.new(self)
758
- end
754
+ year = code_year.raw || code_years.raw
755
+ month = code_month.raw || code_months.raw
756
+ day = code_day.raw || code_days.raw
757
+ wday = code_week_day.raw || code_week_days.raw
758
+ cweek = code_week.raw || code_weeks.raw
759
+
760
+ dup = raw.dup
761
+ dup += (year - raw.year).years
762
+ dup += (month - raw.month).months
763
+ dup += (day - raw.day).days
764
+ dup += (wday - raw.wday).days
765
+ dup += (cweek - raw.to_date.cweek).weeks
766
+
767
+ Date.new(dup)
759
768
  end
760
769
  end
761
770
  end
@@ -5,7 +5,7 @@ class Code
5
5
  class Dictionary < ::Code::Object
6
6
  delegate(
7
7
  :code_many?,
8
- :code_postive?,
8
+ :code_positive?,
9
9
  :code_negative?,
10
10
  :code_zero?,
11
11
  :code_one?,
@@ -202,7 +202,7 @@ class Code
202
202
  code = response.code.to_i
203
203
  status = STATUS_CODES.key(code) || :ok
204
204
 
205
- Dictionary.new(code: code, status: status, body: response.body)
205
+ Dictionary.new(code: code, status: status, body: response.body.to_s)
206
206
  end
207
207
  end
208
208
  end
@@ -5,7 +5,7 @@ class Code
5
5
  class List < Object
6
6
  delegate(
7
7
  :code_many?,
8
- :code_postive?,
8
+ :code_positive?,
9
9
  :code_negative?,
10
10
  :code_zero?,
11
11
  :code_one?,
@@ -7,6 +7,7 @@ class Code
7
7
 
8
8
  class << self
9
9
  delegate(
10
+ :code_format,
10
11
  :code_add,
11
12
  :code_substract,
12
13
  :code_past?,
@@ -619,14 +620,14 @@ class Code
619
620
 
620
621
  def code_after?(other = nil)
621
622
  code_other = other.to_code
622
- code_other = Time.code_now if code_other.nothing?
623
+ code_other = Time.new if code_other.nothing?
623
624
 
624
625
  Boolean.new(raw.after?(code_other.raw))
625
626
  end
626
627
 
627
628
  def code_before?(other = nil)
628
629
  code_other = other.to_code
629
- code_other = Time.code_now if code_other.nothing?
630
+ code_other = Time.new if code_other.nothing?
630
631
 
631
632
  Boolean.new(raw.before?(code_other.raw))
632
633
  end
@@ -830,27 +831,30 @@ class Code
830
831
  week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
831
832
  code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
832
833
  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
- )
834
+ code_minute = minute.to_code.nothing? ? minutes.to_code : minute.to_code
835
+ code_second = second.to_code.nothing? ? seconds.to_code : second.to_code
836
+
837
+ year = code_years.code_to_integer.raw + code_year.code_to_integer.raw
838
+ month = code_months.code_to_integer.raw + code_month.code_to_integer.raw
839
+ day = code_days.code_to_integer.raw + code_day.code_to_integer.raw
840
+ week_day =
841
+ code_week_days.code_to_integer.raw + code_week_day.code_to_integer.raw
842
+ week = code_weeks.code_to_integer.raw + code_week.code_to_integer.raw
843
+ hour = code_hours.code_to_integer.raw + code_hour.code_to_integer.raw
844
+ minute =
845
+ code_minutes.code_to_integer.raw + code_minute.code_to_integer.raw
846
+ second =
847
+ code_seconds.code_to_integer.raw + code_second.code_to_integer.raw
848
+
849
+ code_change(
850
+ year:,
851
+ month:,
852
+ day:,
853
+ week_day:,
854
+ week:,
855
+ hour:,
856
+ minute:,
857
+ second:
854
858
  )
855
859
  end
856
860
 
@@ -879,27 +883,30 @@ class Code
879
883
  week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
880
884
  code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
881
885
  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
- )
886
+ code_minute = minute.to_code.nothing? ? minutes.to_code : minute.to_code
887
+ code_second = second.to_code.nothing? ? seconds.to_code : second.to_code
888
+
889
+ year = code_years.code_to_integer.raw - code_year.code_to_integer.raw
890
+ month = code_months.code_to_integer.raw - code_month.code_to_integer.raw
891
+ day = code_days.code_to_integer.raw - code_day.code_to_integer.raw
892
+ week_day =
893
+ code_week_days.code_to_integer.raw - code_week_day.code_to_integer.raw
894
+ week = code_weeks.code_to_integer.raw - code_week.code_to_integer.raw
895
+ hour = code_hours.code_to_integer.raw - code_hour.code_to_integer.raw
896
+ minute =
897
+ code_minutes.code_to_integer.raw - code_minute.code_to_integer.raw
898
+ second =
899
+ code_seconds.code_to_integer.raw - code_second.code_to_integer.raw
900
+
901
+ code_change(
902
+ year:,
903
+ month:,
904
+ day:,
905
+ week_day:,
906
+ week:,
907
+ hour:,
908
+ minute:,
909
+ second:
903
910
  )
904
911
  end
905
912
 
@@ -928,32 +935,29 @@ class Code
928
935
  week_day.to_code.nothing? ? week_days.to_code : week_day.to_code
929
936
  code_week = week.to_code.nothing? ? weeks.to_code : week.to_code
930
937
  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
938
+ code_minute = minute.to_code.nothing? ? minutes.to_code : minute.to_code
939
+ code_second = second.to_code.nothing? ? seconds.to_code : second.to_code
940
+
941
+ year = code_year.raw || code_years.raw
942
+ month = code_month.raw || code_months.raw
943
+ day = code_day.raw || code_days.raw
944
+ wday = code_week_day.raw || code_week_days.raw
945
+ cweek = code_week.raw || code_weeks.raw
946
+ hour = code_hour.raw || code_hours.raw
947
+ min = code_minute.raw || code_minutes.raw
948
+ sec = code_second.raw || code_seconds.raw
949
+
950
+ dup = raw.dup
951
+ dup += (year - raw.year).years
952
+ dup += (month - raw.month).months
953
+ dup += (day - raw.day).days
954
+ dup += (wday - raw.wday).days
955
+ dup += (cweek - raw.to_date.cweek).weeks
956
+ dup += (hour - raw.hour).hours
957
+ dup += (min - raw.min).minutes
958
+ dup += (sec - raw.sec).seconds
959
+
960
+ Time.new(dup)
957
961
  end
958
962
  end
959
963
  end
data/lib/code-ruby.rb CHANGED
@@ -14,6 +14,7 @@ require "stringio"
14
14
  require "timeout"
15
15
  require "uri"
16
16
  require "zeitwerk"
17
+ require "date"
17
18
 
18
19
  loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
19
20
  loader.ignore("#{__dir__}/code-ruby.rb")
data/spec/code_spec.rb CHANGED
@@ -268,8 +268,8 @@ RSpec.describe Code do
268
268
  ["Class(true, 1)", "Boolean"],
269
269
  ["Class.new(Boolean, Time)", "Boolean"],
270
270
  ["Class.new(Time, Boolean)", "Time"],
271
- ['Date("2024-3-2").to_string', ":2024-03-02"],
272
- ['Date("2024-3-2").to_string', ":2024-03-02"],
271
+ %w[Date("2024-3-2").to_string :2024-03-02],
272
+ %w[Date("2024-3-2").to_string :2024-03-02],
273
273
  ["Decimal(1, :2)", "100"],
274
274
  ["Decimal(:1, 2)", "100.0"],
275
275
  ["Decimal.new(1, :2)", "100"],
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié