class Subber::Formatter::Vtt
Constants
- CRLF
- LF_REGEX
Public Class Methods
format(subtitles)
click to toggle source
@param subtitles [Array<Subber::Subtitle>] @return [String]
# File lib/subber/formatter/vtt.rb, line 10 def format(subtitles) cues = subtitles.map do |subtitle| convert_subtitle_to_cue(subtitle) end file_content = cues.join file_content = add_webvtt_header(file_content) file_content = add_window_line_break(file_content) file_content end
Private Class Methods
add_webvtt_header(file_content)
click to toggle source
@param file_content [String] @return [String]
# File lib/subber/formatter/vtt.rb, line 27 def add_webvtt_header(file_content) "WEBVTT\n\n#{file_content}" end
add_window_line_break(file_content)
click to toggle source
@param file_content [String] @return [String]
# File lib/subber/formatter/vtt.rb, line 34 def add_window_line_break(file_content) file_content.gsub(LF_REGEX, CRLF) end
build_content(subtitle)
click to toggle source
@param subtitle [Subber::Subtitle] @return [String]
# File lib/subber/formatter/vtt.rb, line 71 def build_content(subtitle) subtitle.content end
build_counter(subtitle)
click to toggle source
@param subtitle [Subber::Subtitle] @return [String]
# File lib/subber/formatter/vtt.rb, line 54 def build_counter(subtitle) subtitle.counter.to_s end
build_time_range(subtitle)
click to toggle source
@param subtitle [Subber::Subtitle] @return [String]
# File lib/subber/formatter/vtt.rb, line 61 def build_time_range(subtitle) start_time = convert_ms_to_time(subtitle.start_time) end_time = convert_ms_to_time(subtitle.end_time) "#{start_time} --> #{end_time}" end
convert_ms_to_time(ms_time)
click to toggle source
@param ms_time [Integer] Time in milliseconds @return [String] Formatted time
# File lib/subber/formatter/vtt.rb, line 78 def convert_ms_to_time(ms_time) seconds = ms_time / 1000.0 Time.at(seconds).utc.strftime("%H:%M:%S.%L") end
convert_subtitle_to_cue(subtitle)
click to toggle source
@param subtitle [Subber::Subtitle] @return [String]
# File lib/subber/formatter/vtt.rb, line 41 def convert_subtitle_to_cue(subtitle) cue = [ build_counter(subtitle), build_time_range(subtitle), build_content(subtitle), ].join("\n") "#{cue}\n\n" end