Class: Nero::Rails::DurationTag

Inherits:
BaseTag
  • Object
show all
Defined in:
lib/nero/rails/duration_tag.rb

Constant Summary collapse

UNITS =
%w[seconds minutes hours days weeks months years].freeze

Instance Method Summary collapse

Instance Method Details

#resolve(args, context:) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/nero/rails/duration_tag.rb', line 8

def resolve(args, context:)
  amount = args[0]
  unit = args[1]&.to_s

  unless amount.is_a?(Numeric)
    context.add_error("duration requires a numeric amount, got #{amount.inspect}")
    return nil
  end

  unless UNITS.include?(unit)
    context.add_error("duration unknown unit #{unit.inspect}, expected one of: #{UNITS.join(", ")}")
    return nil
  end

  amount.public_send(unit)
end