refactor: extract command line splitting to separate method
This commit is contained in:
parent
ce07b6f0db
commit
279a6ff004
1 changed files with 16 additions and 18 deletions
34
merge_srt.py
34
merge_srt.py
|
@ -50,44 +50,42 @@ class SRTMerger:
|
||||||
errors.append(f"Error reading {filename}: {e}")
|
errors.append(f"Error reading {filename}: {e}")
|
||||||
return commands, errors
|
return commands, errors
|
||||||
for line_number, line in enumerate(lines, start=1):
|
for line_number, line in enumerate(lines, start=1):
|
||||||
line = line.strip()
|
parts = SRTMerger.split_line(line)
|
||||||
if not line:
|
command = parts[0].upper()
|
||||||
continue
|
|
||||||
if line.startswith('#'):
|
|
||||||
continue
|
|
||||||
parts = shlex.split(line)
|
|
||||||
command_parts = []
|
|
||||||
for part in parts:
|
|
||||||
if part.startswith('#'):
|
|
||||||
break
|
|
||||||
command_parts.append(part)
|
|
||||||
if not command_parts:
|
|
||||||
continue
|
|
||||||
command = command_parts[0].upper()
|
|
||||||
if command not in ['COPY', 'MAP', 'SYNC', 'PUT']:
|
if command not in ['COPY', 'MAP', 'SYNC', 'PUT']:
|
||||||
errors.append(f"Line {line_number}: unknown command '{command}'.")
|
errors.append(f"Line {line_number}: unknown command '{command}'.")
|
||||||
continue
|
continue
|
||||||
parsed = None
|
parsed = None
|
||||||
if command == 'COPY':
|
if command == 'COPY':
|
||||||
parsed = self.parse_copy(command_parts)
|
parsed = self.parse_copy(parts)
|
||||||
if parsed is None:
|
if parsed is None:
|
||||||
errors.append(f"Line {line_number}: invalid COPY command.")
|
errors.append(f"Line {line_number}: invalid COPY command.")
|
||||||
elif command == 'MAP':
|
elif command == 'MAP':
|
||||||
parsed = self.parse_map(command_parts)
|
parsed = self.parse_map(parts)
|
||||||
if parsed is None:
|
if parsed is None:
|
||||||
errors.append(f"Line {line_number}: invalid MAP command.")
|
errors.append(f"Line {line_number}: invalid MAP command.")
|
||||||
elif command == 'SYNC':
|
elif command == 'SYNC':
|
||||||
parsed = self.parse_sync(command_parts)
|
parsed = self.parse_sync(parts)
|
||||||
if parsed is None:
|
if parsed is None:
|
||||||
errors.append(f"Line {line_number}: invalid SYNC command.")
|
errors.append(f"Line {line_number}: invalid SYNC command.")
|
||||||
elif command == 'PUT':
|
elif command == 'PUT':
|
||||||
parsed = self.parse_put(command_parts)
|
parsed = self.parse_put(parts)
|
||||||
if parsed is None:
|
if parsed is None:
|
||||||
errors.append(f"Line {line_number}: invalid PUT command.")
|
errors.append(f"Line {line_number}: invalid PUT command.")
|
||||||
if parsed is not None:
|
if parsed is not None:
|
||||||
commands.append(parsed)
|
commands.append(parsed)
|
||||||
return commands, errors
|
return commands, errors
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def split_line(line):
|
||||||
|
line = line.strip()
|
||||||
|
parts = []
|
||||||
|
for part in shlex.split(line):
|
||||||
|
if part.startswith('#'):
|
||||||
|
break
|
||||||
|
parts.append(part)
|
||||||
|
return parts
|
||||||
|
|
||||||
def parse_copy(self, parts):
|
def parse_copy(self, parts):
|
||||||
if len(parts) != 3:
|
if len(parts) != 3:
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue