def parse(self, io): """Parses a 2da file. """ io = io.replace('\t', ' ') lines = [l.strip() for l in iter(io.splitlines()) if len(l.strip())] if len(lines) == 0: raise ValueError("Invalid 2da file!") if not re.match("2DA\s+V2.0", lines[0]): raise ValueError("Invalid 2da file, no 2DA header!") col_line = 1 m = self.DEFAULT_RE.match(lines[1]) if m: self.default = m.group(1) col_line += 1 csvreader = csv.reader(lines[col_line:], delimiter=' ', skipinitialspace=True) count = None for row in csvreader: if count is None: count = len(row) + 1 else: if count != len(row): print(count, len(row), row) assert (False) self.rows.append(row) self.columns = [''] + self.rows[0] self.rows = self.rows[1:]
def parse(self, io): """Parses a 2da file. """ io = io.replace('\t', ' ') lines = [l.strip() for l in iter(io.splitlines()) if len(l.strip())] if len(lines) == 0: raise ValueError("Invalid 2da file!") if not re.match("2DA\s+V2.0", lines[0]): raise ValueError("Invalid 2da file, no 2DA header!") col_line = 1 m = self.DEFAULT_RE.match(lines[1]) if m: self.default = m.group(1) col_line += 1 csvreader = csv.reader(lines[col_line:], delimiter=' ', skipinitialspace=True) count = None for row in csvreader: if count is None: count = len(row) + 1 else: if count != len(row): print(count, len(row), row) assert(False) self.rows.append(row) self.columns = [''] + self.rows[0] self.rows = self.rows[1:]
def parse(self, io): """Parses a 2dx file. """ lines = [l.strip() for l in iter(io.splitlines()) if len(l.strip())] if len(lines) == 0: raise ValueError("Invalid 2dx file!") if not re.match("2DX\s+V2.0", lines[0]): raise ValueError("Invalid 2dx file, no 2DX header!") col_line = 1 i = 1 while True: m = self.TLK_RE.match(lines[i]) if m: self.tlk_offset = m.group(1) self.tlk_columns = m.group(2) if self.tlk_columns: self.tlk_columns = [s.strip() for s in self.tlk_columns.split(',')] i += 1 continue m = self.DESC_RE.match(lines[i]) if m: self.description = m.group(1) i += 1 continue break col_line = i csvreader = csv.reader(lines[col_line:], delimiter=' ', skipinitialspace=True) for row in csvreader: self.rows.append(row) self.columns = [''] + self.rows[0] self.rows = self.rows[1:] if self.tlk_columns and len(self.tlk_columns): self.update_tlks()