home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2344 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  4.5 KB  |  112 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import re
  5. import operator
  6.  
  7. def str_find_all(str, ch):
  8.     result = []
  9.     index = 0
  10.     while index >= 0:
  11.         index = str.find(ch, index)
  12.         if index >= 0:
  13.             result.append(index)
  14.             index += 1
  15.             continue
  16.     return result
  17.  
  18. word_pattern = re.compile('(x*)')
  19.  
  20. def markwords(str, iswordfun):
  21.     markers = {
  22.         True: 'x',
  23.         False: 'o' }
  24.     return []([ markers[iswordfun(ch)] for ch in str ])
  25.  
  26.  
  27. def split_words(str, iswordfun):
  28.     return _[1]
  29.  
  30.  
  31. def mark_start_segment(str, is_segment):
  32.     
  33.     def mark_start(s):
  34.         if s[0:1] == 'x':
  35.             return 's' + s[1:]
  36.         return s
  37.  
  38.     return ''.join(map(mark_start, split_words(str, is_segment)))
  39.  
  40.  
  41. def mark_end_segment(str, is_segment):
  42.     
  43.     def mark_start(s):
  44.         if s[0:1] == 'x':
  45.             return s[:-1] + 's'
  46.         return s
  47.  
  48.     return ''.join(map(mark_start, split_words(str, is_segment)))
  49.  
  50.  
  51. def mark_start_segment_index(str, is_segment):
  52.     return str_find_all(mark_start_segment(str, is_segment), 's')
  53.  
  54.  
  55. def mark_end_segment_index(str, is_segment):
  56.     return [ x + 1 for x in str_find_all(mark_end_segment(str, is_segment), 's') ]
  57.  
  58.  
  59. def is_word_token(str):
  60.     return not is_non_word_token(str)
  61.  
  62.  
  63. def is_non_word_token(str):
  64.     if len(str) != 1 or str in ' \t\n':
  65.         return True
  66.     return False
  67.  
  68.  
  69. def next_start_segment(str, is_segment):
  70.     str = ''.join(str)
  71.     result = []
  72.     for start in mark_start_segment_index(str, is_segment):
  73.         result[len(result):start] = [ start for x in range(start - len(result)) ]
  74.     
  75.     result[len(result):len(str)] = [ len(str) for x in range((len(str) - len(result)) + 1) ]
  76.     return result
  77.  
  78.  
  79. def next_end_segment(str, is_segment):
  80.     str = ''.join(str)
  81.     result = []
  82.     for start in mark_end_segment_index(str, is_segment):
  83.         result[len(result):start] = [ start for x in range(start - len(result)) ]
  84.     
  85.     result[len(result):len(str)] = [ len(str) for x in range((len(str) - len(result)) + 1) ]
  86.     return result
  87.  
  88.  
  89. def prev_start_segment(str, is_segment):
  90.     str = ''.join(str)
  91.     result = []
  92.     prev = 0
  93.     for start in mark_start_segment_index(str, is_segment):
  94.         result[len(result):start + 1] = [ prev for x in range((start - len(result)) + 1) ]
  95.         prev = start
  96.     
  97.     result[len(result):len(str)] = [ prev for x in range((len(str) - len(result)) + 1) ]
  98.     return result
  99.  
  100.  
  101. def prev_end_segment(str, is_segment):
  102.     str = ''.join(str)
  103.     result = []
  104.     prev = 0
  105.     for start in mark_end_segment_index(str, is_segment):
  106.         result[len(result):start + 1] = [ prev for x in range((start - len(result)) + 1) ]
  107.         prev = start
  108.     
  109.     result[len(result):len(str)] = [ len(str) for x in range((len(str) - len(result)) + 1) ]
  110.     return result
  111.  
  112.