Sha256: 5eafdce809b7b29360ce217244e45bd337b9f849550f006f019b0fdc1fe2fff2
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
# = text_time_parser.rb # # @author Rodrigo Fernández # # == Clase TextTimeParser require 'bigdecimal' module Liri module Common # Esta clase parsea texto en horas, minutos y segundos a un valor decimal en segundos class TextTimeParser class << self def to_seconds(text_time) values = text_time.split(' ') case values.size when 2 # cuando se tiene por ejemplo '15 minutes' text_time_to_seconds(values[0], values[1]) when 4 # cuando se tiene por ejemplo '1 minute 5 seconds' text_time_to_seconds(values[0], values[1]) + text_time_to_seconds(values[2], values[3]) when 6 # cuando se tiene por ejemplo '1 hour 30 minutes 25 seconds' text_time_to_seconds(values[0], values[1]) + text_time_to_seconds(values[2], values[3]) + text_time_to_seconds(values[4], values[5]) end # queda pendiente agregar el caso de dias, horas, minutos y segundos, además hace falta verificar como lo muestra Rspec end private def text_time_to_seconds(number, text) # Se usa BigDecimal porque # En una multiplicación normal: (203.033*3600).to_f = 730918.7999999999 # Con BigDecimal: (BigDecimal('203.033') * 3600).to_f = 730918.8 time = BigDecimal(number) time_in_seconds = case text when 'second', 'seconds' then time when 'minute', 'minutes' then time * 60 when 'hour', 'hours' then time * 3600 when 'day', 'days' then time * 86_400 end time_in_seconds.to_f end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
liri-0.3.1 | lib/common/text_time_parser.rb |