lib/scissor/chunk.rb in youpy-scissor-0.0.17 vs lib/scissor/chunk.rb in youpy-scissor-0.0.18

- old
+ new

@@ -1,10 +1,9 @@ require 'digest/md5' require 'pathname' require 'open4' require 'logger' -require 'bigdecimal' module Scissor class Chunk @logger = Logger.new(STDOUT) @logger.level = Logger::INFO @@ -41,19 +40,18 @@ add_fragment(fragment) end end def duration - BigDecimal( - @fragments.inject(0) do |memo, fragment| - memo += fragment.duration - end.to_s).round(3).to_f + @fragments.inject(0) do |memo, fragment| + memo += fragment.duration + end end def slice(start, length) if start + length > duration - raise OutOfDuration + length = duration - start end new_instance = self.class.new remaining_start = start.to_f remaining_length = length.to_f @@ -121,19 +119,20 @@ end remain = filled_duration new_instance = self.class.new - while filled_duration > new_instance.duration + while !remain.zero? && filled_duration > new_instance.duration if remain < duration added = slice(0, remain) else added = self end new_instance += added remain -= added.duration end + new_instance end def replace(start, length, replaced)