Module: Quby::Compiler::Entities::Questions::Concerns::SplitToUnits
- Extended by:
- ActiveSupport::Concern
- Included in:
- IntegerQuestion
- Defined in:
- lib/quby/compiler/entities/questions/concerns/split_to_units.rb
Constant Summary collapse
- DEFAULT_SPLIT_TO_UNIT_CONVERSIONS =
{ minutes: { hours: 60, days: 1440, weeks: 10080 }, seconds: { minutes: 60, hours: 3600, days: 86400 }, m: { km: 1000 }, cm: { m: 100 }, mm: { cm: 10, m: 1000 }, g: { kg: 1000 } }.freeze
Instance Method Summary collapse
- #after_build ⇒ Object
- #default_split_to_units_conversions ⇒ Object
- #validate_split_to_units ⇒ Object
Instance Method Details
#after_build ⇒ Object
37 38 39 40 41 42 |
# File 'lib/quby/compiler/entities/questions/concerns/split_to_units.rb', line 37 def after_build super return unless as == :split_to_units @unit = units&.last (@conversions ||= {}).reverse_merge!(default_split_to_units_conversions) end |
#default_split_to_units_conversions ⇒ Object
44 45 46 |
# File 'lib/quby/compiler/entities/questions/concerns/split_to_units.rb', line 44 def default_split_to_units_conversions (DEFAULT_SPLIT_TO_UNIT_CONVERSIONS[unit] || {}).slice(*units) end |
#validate_split_to_units ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/quby/compiler/entities/questions/concerns/split_to_units.rb', line 48 def validate_split_to_units return unless units.present? && conversions.present? (units - [unit]).each do |unit_to_convert| if conversions[unit_to_convert].nil? errors.add(:conversions, "should contain a conversion for unit #{unit_to_convert}") end end end |