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)