home *** CD-ROM | disk | FTP | other *** search
/ Freelog 116 / FreelogNo116-JuilletSeptembre2013.iso / Bureautique / gImageReader / gimagereader_0.9-1_win32.exe / bin / json / scanner.pyc (.txt) < prev   
Python Compiled Bytecode  |  2011-03-24  |  2KB  |  70 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. '''JSON token scanner
  5. '''
  6. import re
  7.  
  8. try:
  9.     from _json import make_scanner as c_make_scanner
  10. except ImportError:
  11.     c_make_scanner = None
  12.  
  13. __all__ = [
  14.     'make_scanner']
  15. NUMBER_RE = re.compile('(-?(?:0|[1-9]\\d*))(\\.\\d+)?([eE][-+]?\\d+)?', re.VERBOSE | re.MULTILINE | re.DOTALL)
  16.  
  17. def py_make_scanner(context):
  18.     parse_object = context.parse_object
  19.     parse_array = context.parse_array
  20.     parse_string = context.parse_string
  21.     match_number = NUMBER_RE.match
  22.     encoding = context.encoding
  23.     strict = context.strict
  24.     parse_float = context.parse_float
  25.     parse_int = context.parse_int
  26.     parse_constant = context.parse_constant
  27.     object_hook = context.object_hook
  28.     object_pairs_hook = context.object_pairs_hook
  29.     
  30.     def _scan_once(string, idx):
  31.         
  32.         try:
  33.             nextchar = string[idx]
  34.         except IndexError:
  35.             raise StopIteration
  36.  
  37.         if nextchar == '"':
  38.             return parse_string(string, idx + 1, encoding, strict)
  39.         if None == '{':
  40.             return parse_object((string, idx + 1), encoding, strict, _scan_once, object_hook, object_pairs_hook)
  41.         if None == '[':
  42.             return parse_array((string, idx + 1), _scan_once)
  43.         if None == 'n' and string[idx:idx + 4] == 'null':
  44.             return (None, idx + 4)
  45.         if None == 't' and string[idx:idx + 4] == 'true':
  46.             return (True, idx + 4)
  47.         if None == 'f' and string[idx:idx + 5] == 'false':
  48.             return (False, idx + 5)
  49.         m = None(string, idx)
  50.         if m is not None:
  51.             (integer, frac, exp) = m.groups()
  52.             if frac or exp:
  53.                 res = None(parse_float + integer + '' if not frac else '')
  54.             else:
  55.                 res = parse_int(integer)
  56.             return (res, m.end())
  57.         if None == 'N' and string[idx:idx + 3] == 'NaN':
  58.             return (parse_constant('NaN'), idx + 3)
  59.         if None == 'I' and string[idx:idx + 8] == 'Infinity':
  60.             return (parse_constant('Infinity'), idx + 8)
  61.         if None == '-' and string[idx:idx + 9] == '-Infinity':
  62.             return (parse_constant('-Infinity'), idx + 9)
  63.         raise None
  64.  
  65.     return _scan_once
  66.  
  67. if not c_make_scanner:
  68.     pass
  69. make_scanner = py_make_scanner
  70.