Class: Lita::Handlers::Timezone
- Inherits:
-
Handler
- Object
- Handler
- Lita::Handlers::Timezone
- Defined in:
- lib/lita/handlers/timezone.rb
Instance Method Summary collapse
-
#initialize(robot) ⇒ Timezone
constructor
A new instance of Timezone.
- #list_timezones(response) ⇒ Object
- #time_between_locations(response) ⇒ Object
- #time_in_other_timezone(response) ⇒ Object
Constructor Details
#initialize(robot) ⇒ Timezone
Returns a new instance of Timezone.
21 22 23 24 25 |
# File 'lib/lita/handlers/timezone.rb', line 21 def initialize(robot) super Time.zone = config.default_zone @all_zones = ActiveSupport::TimeZone.zones_map.keys + TZInfo::Timezone.all_identifiers end |
Instance Method Details
#list_timezones(response) ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/lita/handlers/timezone.rb', line 64 def list_timezones(response) zone_filter = (response.match_data[:filter] rescue nil) zones = zone_filter ? @all_zones.select { |name| name.include? zone_filter } : @all_zones if zones.empty? response.reply t('messages.no_zones_found', zone: zone_filter) else response.reply render_template('available_timezones', zones: zones) end end |
#time_between_locations(response) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/lita/handlers/timezone.rb', line 41 def time_between_locations(response) requested_time = time_from_response(response) first_zone = ActiveSupport::TimeZone[response.match_data[:zone1]] second_zone = ActiveSupport::TimeZone[response.match_data[:zone2]] if requested_time.blank? response.reply t('messages.invalid_time') elsif first_zone.blank? response.reply t('messages.invalid_first_zone') elsif second_zone.blank? response.reply t('messages.invalid_second_zone') else original_time = first_zone.parse(requested_time.asctime) time_in_new_time_zone = original_time.in_time_zone(second_zone) response.reply t('messages.response_from_to_zone', time: format_time(time_in_new_time_zone), zone1: first_zone.name, zone2: second_zone.name ) end end |
#time_in_other_timezone(response) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/lita/handlers/timezone.rb', line 27 def time_in_other_timezone(response) requested_time = time_from_response(response) requested_zone = ActiveSupport::TimeZone[response.match_data[:zone1]] if requested_time.blank? response.reply t('messages.invalid_time') elsif requested_zone.blank? response.reply t('messages.invalid_zone') else time_in_new_time_zone = requested_time.in_time_zone(requested_zone) response.reply t('messages.response_in_zone', time: format_time(time_in_new_time_zone)) end end |