Method: Code::Object::Date#call

Defined in:
lib/code/object/date.rb

#call(**args) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/code/object/date.rb', line 68

def call(**args)
  code_operator = args.fetch(:operator, nil).to_code
  code_arguments = args.fetch(:arguments, []).to_code
  code_value = code_arguments.code_first

  case code_operator.to_s
  when "hour"
    sig(args)
    code_hour
  when "hours"
    sig(args)
    code_hours
  when "minute"
    sig(args)
    code_minute
  when "minutes"
    sig(args)
    code_minutes
  when "second"
    sig(args)
    code_second
  when "seconds"
    sig(args)
    code_seconds
  when "change"
    sig(args) do
      {
        year: (String | Integer).maybe,
        month: (String | Integer).maybe,
        day: (String | Integer).maybe
      }
    end

    if code_value.nothing?
      code_change
    else
      code_change(
        year: code_value.code_get(:year),
        month: code_value.code_get(:month),
        day: code_value.code_get(:day)
      )
    end
  else
    super
  end
end