shivabhusal/subjuster

View on GitHub
lib/subjuster/adjuster.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Subjuster
  class Adjuster
    attr_reader :data, :inputs
    
    def initialize(data:, inputs:)
      @data   = data
      @inputs = inputs
    end
    
    def run
      # new_data = data.clone
      data.map do |paragraph|
        paragraph[:start_time] = process_on(paragraph[:start_time])
        paragraph[:end_time]   = process_on(paragraph[:end_time])
        paragraph
      end
    end
    
    private
    
    # TODO: Refactoring needed
    def process_on(date)
      _, hrs, min, sec, milli =  /(..):(..):(..),(...)/.match(date).to_a.map(&:to_i)
      timestamp_in_msec = milli + sec*1000 + min*60000 + hrs*3600000 + (inputs.adjustment_in_sec*1000).to_i
      rim = ""

      hr = timestamp_in_msec / 3600000
      rim << ("%02i" % hr) << ":" 
      
      min = timestamp_in_msec / 60000
      timestamp_in_msec -= min*60000
      rim << ("%02i" % min) << ":" 
      
      
      sec = timestamp_in_msec / 1000
      timestamp_in_msec -= sec*1000
      rim << ("%02i" % sec) << ":" 
      
      rim.slice!(-1)
      rim << "," << "#{timestamp_in_msec}00"[0..2]  << date[12..-1]
    end
  end
end