Changeset 414 for pkpgcounter/trunk

Show
Ignore:
Timestamp:
09/15/06 00:47:15 (18 years ago)
Author:
jerome
Message:

Make the plain text parser automatically fail when the file doesn't
seem to be plain text.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pkpgcounter/trunk/pkpgpdls/plain.py

    r412 r414  
    3535    """A parser for plain text documents.""" 
    3636    def isValid(self) :     
    37         """Returns True if data is plain text, else False.""" 
    38         return True 
     37        """Returns True if data is plain text, else False. 
     38         
     39           It's hard to detect a plain text file, so we just 
     40           read the first line, and if it doesn't end in CR or LF 
     41           we consider it's not plain text. 
     42        """    
     43        line = self.infile.readline() 
     44        self.infile.seek(0) 
     45        if line.endswith("\n") or line.endswith("\r") : 
     46            self.logdebug("DEBUG: Input file seems to be in the plain text format.") 
     47            return True 
     48        else :     
     49            return False 
    3950             
    4051    def getJobSize(self) : 
     
    4556        linecount = 0 
    4657        for line in self.infile : 
    47             linecount += 1     
    48             if (linecount > pagesize) \ 
    49                or (line.find(chr(12)) != -1) : 
    50                 pagecount += 1 
    51                 linecount = 0 
    52         return pagecount + 1 
     58            if line.endswith("\n") or line.endswith("\r") : 
     59                linecount += 1     
     60                if (linecount > pagesize) \ 
     61                   or (line.find("\f") != -1) : 
     62                    pagecount += 1 
     63                    linecount = 0 
     64            else :         
     65                raise pdlparser.PDLParserError, "Unsupported file format. Please send the file to %s" % version.__authoremail__ 
     66        return pagecount + 1    # NB : empty files are catched in isValid() 
    5367         
    54 def test() :         
    55     """Test function.""" 
    56     if (len(sys.argv) < 2) or ((not sys.stdin.isatty()) and ("-" not in sys.argv[1:])) : 
    57         sys.argv.append("-") 
    58     totalsize = 0     
    59     for arg in sys.argv[1:] : 
    60         if arg == "-" : 
    61             infile = sys.stdin 
    62             mustclose = 0 
    63         else :     
    64             infile = open(arg, "rb") 
    65             mustclose = 1 
    66         try : 
    67             parser = Parser(infile, debug=1) 
    68             totalsize += parser.getJobSize() 
    69         except pdlparser.PDLParserError, msg :     
    70             sys.stderr.write("ERROR: %s\n" % msg) 
    71             sys.stderr.flush() 
    72         if mustclose :     
    73             infile.close() 
    74     print "%s" % totalsize 
    75      
    7668if __name__ == "__main__" :     
    77     test() 
     69    pdlparser.test(Parser)