Module: SpreeCmCommissioner::Transit::TripHelper
- Included in:
- MultiLegTripsQuery, SpreeCmCommissioner::Trips::CreateMultiLeg, SpreeCmCommissioner::Trips::CreateSingleLeg
- Defined in:
- app/helpers/spree_cm_commissioner/transit/trip_helper.rb
Instance Method Summary collapse
- #minutes_since_midnight(minutes) ⇒ Object
- #normalize_date(value) ⇒ Object
-
#parse_date(date_obj) ⇒ Object
Helper to parse date strings or return date objects.
- #parse_time(time, timezone = nil) ⇒ Object
Instance Method Details
#minutes_since_midnight(minutes) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 |
# File 'app/helpers/spree_cm_commissioner/transit/trip_helper.rb', line 34 def minutes_since_midnight(minutes) if minutes.instance_of?(Time) || minutes.instance_of?(ActiveSupport::TimeWithZone) (minutes.hour * 60) + minutes.min elsif minutes.instance_of?(String) str = minutes.strip h, m = str.split(':', 2).map(&:to_i) (h * 60) + (m || 0) else raise ArgumentError, "minutes must be a Time, ActiveSupport::TimeWithZone, or String, got #{minutes.class}" end end |
#normalize_date(value) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/helpers/spree_cm_commissioner/transit/trip_helper.rb', line 20 def normalize_date(value) # If already a TimeWithZone, return as-is return value if value.is_a?(ActiveSupport::TimeWithZone) # If Time object, ensure it's in the app's timezone return value.in_time_zone if value.is_a?(Time) # For Date objects or strings, parse as text (results in midnight) parsed = Time.zone.parse(value.to_s) return parsed if parsed raise ArgumentError, "Unable to parse date/time from #{value.inspect}" end |
#parse_date(date_obj) ⇒ Object
Helper to parse date strings or return date objects
12 13 14 15 16 17 18 |
# File 'app/helpers/spree_cm_commissioner/transit/trip_helper.rb', line 12 def parse_date(date_obj) return date_obj if date_obj.is_a?(Date) Date.parse(date_obj.to_s) rescue ArgumentError nil end |
#parse_time(time, timezone = nil) ⇒ Object
4 5 6 7 8 9 |
# File 'app/helpers/spree_cm_commissioner/transit/trip_helper.rb', line 4 def parse_time(time, timezone = nil) return nil if time.blank? formatted_time = Time.zone.parse(time.to_s) timezone ? formatted_time.in_time_zone(timezone) : formatted_time end |