File: textfile.py

package info (click to toggle)
texlive-bin 2025.20250727.75242%2Bds-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 209,764 kB
  • sloc: ansic: 893,576; cpp: 156,185; perl: 101,166; sh: 37,697; python: 13,679; javascript: 9,754; makefile: 8,930; xml: 8,361; lex: 5,176; pascal: 3,814; java: 3,569; yacc: 2,935; tcl: 2,903; exp: 2,031; ruby: 712; lisp: 687; sed: 375; asm: 140; csh: 46; awk: 30
file content (59 lines) | stat: -rw-r--r-- 1,675 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

def _src_to_xml(text):
    return text.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt")

def decodes(text):
    if not text: return text
    try:
        return text.decode("utf-8")
    except:
        try:
            return text.decode("latin-1")
        except:
            return str(text)

class TextFile:
    def __init__(self, filename = None):
        self.filename = filename
        self.src_text = None
        self.xml_text = None
    def parse(self, filename = None):
        if filename is not None:
            self.filename = filename
        if self.filename is None:
            return False
        try:
            fd = open(self.filename, "rb")
            self.src_text = decodes(fd.read())
            fd.close()
            return True
        except IOError as e:
            pass
        return False
    def assert_src_text(self):
        if self.src_text: return True
        return self.parse()
    def assert_xml_text(self):
        if self.xml_text: return True
        if not self.assert_src_text(): return False
        self.xml_text = _src_to_xml(self.src_text)
    def get_src_text(self):
        self.assert_src_text()
        return self.src_text
    def get_xml_text(self):
        self.assert_xml_text()
        return self.xml_text
    def get_filename(self):
        return self.filename
    def line_xml_text(self, offset):
        self._line(self.xml_text, offset)
    def line_src_text(self, offset):
        self._line(self.src_text, offset)
    def _line(self, text, offset):
        line = 1
        for x in xrange(0,offset):
            if x == "\n":
                line += 1
        return line