Class: CloudinarySubtitlesEmbedder::SubtitleTime

Inherits:
Object
  • Object
show all
Defined in:
lib/cloudinary_subtitles_embedder/subtitle_time.rb

Class Method Summary collapse

Class Method Details

.multipliersObject



4
5
6
# File 'lib/cloudinary_subtitles_embedder/subtitle_time.rb', line 4

def multipliers
  [1, 60, 3600]
end

.to_seconds(duration_string) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/cloudinary_subtitles_embedder/subtitle_time.rb', line 8

def to_seconds(duration_string)
  validate_duration_format(duration_string)
  time_parts = duration_string.split('.')[0].split(':')
  seconds = time_parts
              .reverse.map(&:to_i)
              .zip(multipliers[0..time_parts.length])
              .map {|(time_part, seconds_multiplier)| time_part * seconds_multiplier}
              .reduce(&:+)
  return seconds unless duration_string.include? '.'
  milliseconds = duration_string.split('.')[-1]
  "#{seconds}.#{milliseconds}".to_f
end

.validate_duration_format(duration_string) ⇒ Object



21
22
23
24
25
# File 'lib/cloudinary_subtitles_embedder/subtitle_time.rb', line 21

def validate_duration_format(duration_string)
  valid = duration_string =~ /^([0-9]+:)?([0-5]?[0-9]:)?([0-5]?[0-9])(\.[0-9]?[0-9])?$/
  exception = ArgumentError.new('time format supports only format hours:minutes:seconds.milliseconds')
  raise exception unless valid
end