py/gadict.py
changeset 400 aa03182d2e26
parent 399 a6a7036f3c6f
child 402 b47698d5ccab
equal deleted inserted replaced
399:a6a7036f3c6f 400:aa03182d2e26
    36     def readline(self):
    36     def readline(self):
    37         self.line = self.stream.readline()
    37         self.line = self.stream.readline()
    38         self.eof = len(self.line) == 0
    38         self.eof = len(self.line) == 0
    39         if not self.eof:
    39         if not self.eof:
    40             self.lineno += 1
    40             self.lineno += 1
       
    41         if self.TRAILING_SPACES_RE.search(self.line):
       
    42             raise ParseException("Traling spaces detected...\n")
    41 
    43 
    42     def parse(self, stream):
    44     def parse(self, stream):
    43         self.lineno = 0
    45         self.lineno = 0
    44         self.stream = stream
    46         self.stream = stream
    45         self.dom = []
    47         self.dom = []
    46         try:
    48         try:
    47             self.parse_prelude()
    49             self.parse_prelude()
    48             while not self.eof:
    50             while not self.eof:
    49                 self.parse_article()
    51                 self.parse_article()
    50         except ParseException as ex:
    52         except ParseException as ex:
    51             if self.TRAILING_SPACES_RE.match(self.line):
       
    52                 raise ParseException("Traling spaces detected...\n", self.lineno, self.line) from ex
       
    53             raise ParseException(ex.msg, self.lineno, self.line) from ex
    53             raise ParseException(ex.msg, self.lineno, self.line) from ex
    54         return self.dom
    54         return self.dom
    55 
    55 
    56     def parse_prelude(self):
    56     def parse_prelude(self):
    57         """Read dictionary prelude until first "__" delimiter."""
    57         """Read dictionary prelude until first "__" delimiter."""
   109                 continue
   109                 continue
   110             m = self.HEADWORD_VAR_RE.match(self.line)
   110             m = self.HEADWORD_VAR_RE.match(self.line)
   111             if m is not None:
   111             if m is not None:
   112                 attrs.add(m.group(1))
   112                 attrs.add(m.group(1))
   113                 continue
   113                 continue
   114             raise ParseException("""Line is not headword or translation or headword attribute...""")
   114             raise ParseException("""Line is not a headword or translation or headword attribute...""")
   115         self.words[word] = (pron, attrs)
   115         self.words[word] = (pron, attrs)
   116 
   116 
   117     def parse_translation(self):
   117     def parse_translation(self):
   118         senses = []
   118         senses = []
   119         pos = None
   119         pos = None