class Subdelayer::Delayer
Public Class Methods
new(delay:, filename:)
click to toggle source
# File lib/subdelayer.rb, line 20 def initialize(delay:, filename:) @delay = delay @filename = filename end
Public Instance Methods
perform()
click to toggle source
# File lib/subdelayer.rb, line 25 def perform r = chunks.map do |(index, time, *text)| raise NotASubtitleFileError unless time&.include?('-->') [index, delay_time(time), *text].join("\n") end.join("\n\n") end
Private Instance Methods
chunks()
click to toggle source
# File lib/subdelayer.rb, line 49 def chunks lines.split("").reject(&:blank?) end
delay_time(time)
click to toggle source
# File lib/subdelayer.rb, line 35 def delay_time(time) start, finish = time.split('-->').map(&:strip) [delay_value(start), delay_value(finish)].join(' --> ') end
delay_value(value)
click to toggle source
# File lib/subdelayer.rb, line 41 def delay_value(value) parsed_time = Time.parse(value) new_time = parsed_time + @delay raise DelayError if parsed_time.to_date != new_time.to_date new_time.strftime('%H:%M:%S,%3N') end
lines()
click to toggle source
# File lib/subdelayer.rb, line 53 def lines File.readlines(@filename).map(&:strip) end