示例#1
0
    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:]
示例#2
0
文件: twoda.py 项目: rmilne/pynwn
    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:]
示例#3
0
文件: twodx.py 项目: rmilne/pynwn
    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()