about summary refs log tree commit homepage
path: root/lib/dtas/cue_index.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dtas/cue_index.rb')
-rw-r--r--lib/dtas/cue_index.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/dtas/cue_index.rb b/lib/dtas/cue_index.rb
new file mode 100644
index 0000000..09c3709
--- /dev/null
+++ b/lib/dtas/cue_index.rb
@@ -0,0 +1,39 @@
+# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
+# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
+require_relative '../dtas'
+class DTAS::CueIndex
+  attr_reader :offset
+  attr_reader :index
+
+  def initialize(index, offset)
+    @index = index.to_i
+
+    # must be compatible with the sox "trim" effect
+    @offset = offset # "#{INTEGER}s" (samples) or HH:MM:SS:FRAC
+  end
+
+  def to_hash
+    { "index" => @index, "offset" => @offset }
+  end
+
+  def offset_samples(format)
+    case @offset
+    when /\A(\d+)s\z/
+      $1.to_i
+    else
+      format.hhmmss_to_samples(@offset)
+    end
+  end
+
+  def pregap?
+    @index == 0
+  end
+
+  def track?
+    @index == 1
+  end
+
+  def subindex?
+    @index > 1
+  end
+end