From bcd350f7686a0bf866d98999d1f5c9bacca7471d Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Tue, 20 Aug 2013 00:38:40 +0200 Subject: [PATCH] use a common _index method for all cases --- morituri/image/toc.py | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/morituri/image/toc.py b/morituri/image/toc.py index 62c5c52..c83e940 100644 --- a/morituri/image/toc.py +++ b/morituri/image/toc.py @@ -144,6 +144,24 @@ class TocFile(object, log.Loggable): self._sources = Sources() + def _index(self, currentTrack, i, absoluteOffset, trackOffset): + absolute = absoluteOffset + trackOffset + # this may be in a new source, so calculate relative + c, o, s = self._sources.get(absolute) + self.debug('at abs offset %d, we are in source %r' % ( + absolute, s)) + counterStart = self._sources.getCounterStart(c) + relative = absolute - counterStart + + currentTrack.index(i, path=s.path, + absolute=absolute, + relative=relative, + counter=c) + self.debug( + '[track %02d index %02d] trackOffset %r, added %r', + currentTrack.number, i, trackOffset, + currentTrack.getIndex(i)) + def parse(self): # these two objects start as None then get set as real objects, @@ -208,14 +226,7 @@ class TocFile(object, log.Loggable): # set index 1 of previous track if there was one, using # pregapLength if applicable if currentTrack: - currentTrack.index(1, path=currentFile.path, - absolute=absoluteOffset + pregapLength, - relative=currentFile.start + pregapLength, - counter=counter) - self.debug( - '[track %02d index 01] pregapLength %r, added %r', - currentTrack.number, pregapLength, - currentTrack.getIndex(1)) + self._index(currentTrack, 1, absoluteOffset, pregapLength) # create a new track to be filled by later lines trackNumber += 1 @@ -349,19 +360,11 @@ class TocFile(object, log.Loggable): indexNumber += 1 offset = common.msfToFrames(m.group('offset')) - currentTrack.index(indexNumber, path=currentFile.path, - relative=offset, counter=counter) - self.debug('[track %02d index %02d] added %r', - currentTrack.number, indexNumber, - currentTrack.getIndex(indexNumber)) + self._index(currentTrack, indexNumber, absoluteOffset, offset) # handle index 1 of final track, if any if currentTrack: - currentTrack.index(1, path=currentFile.path, - absolute=absoluteOffset + pregapLength, - relative=currentFile.start, counter=counter) - self.debug('[track %02d index 01] last track, added %r', - currentTrack.number, currentTrack.getIndex(1)) + self._index(currentTrack, 1, absoluteOffset, pregapLength) # totalLength was added up to the penultimate track self.table.leadout = totalLength + currentLength