home *** CD-ROM | disk | FTP | other *** search
/ Freelog 116 / FreelogNo116-JuilletSeptembre2013.iso / Bureautique / gImageReader / gimagereader_0.9-1_win32.exe / bin / enchant / checker / CmdLineChecker.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2011-03-24  |  6KB  |  194 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. '''
  5.  
  6.     enchant.checker.CmdLineChecker:  Command-Line spell checker
  7.     
  8.     This module provides the class CmdLineChecker, which interactively
  9.     spellchecks a piece of text by interacting with the user on the
  10.     command line.  It can also be run as a script to spellcheck a file.
  11.  
  12. '''
  13. import sys
  14. from enchant.checker import SpellChecker
  15. from enchant.utils import printf
  16.  
  17. class CmdLineChecker:
  18.     '''A simple command-line spell checker.
  19.     
  20.     This class implements a simple command-line spell checker.  It must
  21.     be given a SpellChecker instance to operate on, and interacts with
  22.     the user by printing instructions on stdout and reading commands from
  23.     stdin.
  24.     '''
  25.     _DOC_ERRORS = [
  26.         'stdout',
  27.         'stdin']
  28.     
  29.     def __init__(self):
  30.         self._stop = False
  31.         self._checker = None
  32.  
  33.     
  34.     def set_checker(self, chkr):
  35.         self._checker = chkr
  36.  
  37.     
  38.     def get_checker(self, chkr):
  39.         return self._checker
  40.  
  41.     
  42.     def run(self):
  43.         '''Run the spellchecking loop.'''
  44.         self._stop = False
  45.         for err in self._checker:
  46.             self.error = err
  47.             printf([
  48.                 'ERROR:',
  49.                 err.word])
  50.             printf([
  51.                 'HOW ABOUT:',
  52.                 err.suggest()])
  53.             status = self.read_command()
  54.             while not status and not (self._stop):
  55.                 status = self.read_command()
  56.             if self._stop:
  57.                 break
  58.                 continue
  59.  
  60.     
  61.     def print_help(self):
  62.         printf([
  63.             '0..N:    replace with the numbered suggestion'])
  64.         printf([
  65.             'R0..rN:  always replace with the numbered suggestion'])
  66.         printf([
  67.             'i:       ignore this word'])
  68.         printf([
  69.             'I:       always ignore this word'])
  70.         printf([
  71.             'a:       add word to personal dictionary'])
  72.         printf([
  73.             'e:       edit the word'])
  74.         printf([
  75.             'q:       quit checking'])
  76.         printf([
  77.             'h:       print this help message'])
  78.         printf([
  79.             '----------------------------------------------------'])
  80.         printf([
  81.             'HOW ABOUT:',
  82.             self.error.suggest()])
  83.  
  84.     
  85.     def read_command(self):
  86.         cmd = raw_input('>> ')
  87.         cmd = cmd.strip()
  88.         if cmd.isdigit():
  89.             repl = int(cmd)
  90.             suggs = self.error.suggest()
  91.             if repl >= len(suggs):
  92.                 printf([
  93.                     'No suggestion number',
  94.                     repl])
  95.                 return False
  96.             None([
  97.                 "Replacing '%s' with '%s'" % (self.error.word, suggs[repl])])
  98.             self.error.replace(suggs[repl])
  99.             return True
  100.         if None[0] == 'R':
  101.             if not cmd[1:].isdigit():
  102.                 printf([
  103.                     "Badly formatted command (try 'help')"])
  104.                 return False
  105.             repl = None(cmd[1:])
  106.             suggs = self.error.suggest()
  107.             if repl >= len(suggs):
  108.                 printf([
  109.                     'No suggestion number',
  110.                     repl])
  111.                 return False
  112.             None.error.replace_always(suggs[repl])
  113.             return True
  114.         if None == 'i':
  115.             return True
  116.         if None == 'I':
  117.             self.error.ignore_always()
  118.             return True
  119.         if None == 'a':
  120.             self.error.add()
  121.             return True
  122.         if None == 'e':
  123.             repl = raw_input('New Word: ')
  124.             self.error.replace(repl.strip())
  125.             return True
  126.         if None == 'q':
  127.             self._stop = True
  128.             return True
  129.         if None.startswith(cmd.lower()):
  130.             self.print_help()
  131.             return False
  132.         None([
  133.             "Badly formatted command (try 'help')"])
  134.         return False
  135.  
  136.     
  137.     def run_on_file(self, infile, outfile = None, enc = None):
  138.         '''Run spellchecking on the named file.
  139.         This method can be used to run the spellchecker over the named file.
  140.         If <outfile> is not given, the corrected contents replace the contents
  141.         of <infile>.  If <outfile> is given, the corrected contents will be
  142.         written to that file.  Use "-" to have the contents written to stdout.
  143.         If <enc> is given, it specifies the encoding used to read the
  144.         file\'s contents into a unicode string.  The output will be written
  145.         in the same encoding.
  146.         '''
  147.         inStr = ''.join(file(infile, 'r').readlines())
  148.         if enc is not None:
  149.             inStr = inStr.decode(enc)
  150.         self._checker.set_text(inStr)
  151.         self.run()
  152.         outStr = self._checker.get_text()
  153.         if enc is not None:
  154.             outStr = outStr.encode(enc)
  155.         if outfile is None:
  156.             outF = file(infile, 'w')
  157.         elif outfile == '-':
  158.             outF = sys.stdout
  159.         else:
  160.             outF = file(outfile, 'w')
  161.         outF.write(outStr)
  162.         outF.close()
  163.  
  164.     run_on_file._DOC_ERRORS = [
  165.         'outfile',
  166.         'infile',
  167.         'outfile',
  168.         'stdout']
  169.  
  170.  
  171. def _run_as_script():
  172.     '''Run the command-line spellchecker as a script.
  173.     This function allows the spellchecker to be invoked from the command-line
  174.     to check spelling in a file.
  175.     '''
  176.     OptionParser = OptionParser
  177.     import optparse
  178.     op = OptionParser()
  179.     op.add_option('-o', '--output', dest = 'outfile', metavar = 'FILE', help = 'write changes into FILE')
  180.     op.add_option('-l', '--lang', dest = 'lang', metavar = 'TAG', default = 'en_US', help = 'use language idenfified by TAG')
  181.     op.add_option('-e', '--encoding', dest = 'enc', metavar = 'ENC', help = 'file is unicode with encoding ENC')
  182.     (opts, args) = op.parse_args()
  183.     if len(args) < 1:
  184.         raise ValueError('Must name a file to check')
  185.     if len(args) > 1:
  186.         raise ValueError('Can only check a single file')
  187.     chkr = SpellChecker(opts.lang)
  188.     cmdln = CmdLineChecker()
  189.     cmdln.set_checker(chkr)
  190.     cmdln.run_on_file(args[0], opts.outfile, opts.enc)
  191.  
  192. if __name__ == '__main__':
  193.     _run_as_script()
  194.