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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import constants
  5. from euctwfreq import EUCTWCharToFreqOrder, EUCTW_TABLE_SIZE, EUCTW_TYPICAL_DISTRIBUTION_RATIO
  6. from euckrfreq import EUCKRCharToFreqOrder, EUCKR_TABLE_SIZE, EUCKR_TYPICAL_DISTRIBUTION_RATIO
  7. from gb2312freq import GB2312CharToFreqOrder, GB2312_TABLE_SIZE, GB2312_TYPICAL_DISTRIBUTION_RATIO
  8. from big5freq import Big5CharToFreqOrder, BIG5_TABLE_SIZE, BIG5_TYPICAL_DISTRIBUTION_RATIO
  9. from jisfreq import JISCharToFreqOrder, JIS_TABLE_SIZE, JIS_TYPICAL_DISTRIBUTION_RATIO
  10. ENOUGH_DATA_THRESHOLD = 1024
  11. SURE_YES = 0.99
  12. SURE_NO = 0.01
  13.  
  14. class CharDistributionAnalysis:
  15.     
  16.     def __init__(self):
  17.         self._mCharToFreqOrder = None
  18.         self._mTableSize = None
  19.         self._mTypicalDistributionRatio = None
  20.         self.reset()
  21.  
  22.     
  23.     def reset(self):
  24.         self._mDone = constants.False
  25.         self._mTotalChars = 0
  26.         self._mFreqChars = 0
  27.  
  28.     
  29.     def feed(self, aStr, aCharLen):
  30.         if aCharLen == 2:
  31.             order = self.get_order(aStr)
  32.         else:
  33.             order = -1
  34.         if order >= 0:
  35.             self._mTotalChars += 1
  36.             if order < self._mTableSize:
  37.                 if 512 > self._mCharToFreqOrder[order]:
  38.                     self._mFreqChars += 1
  39.                 
  40.             
  41.         
  42.  
  43.     
  44.     def get_confidence(self):
  45.         if self._mTotalChars <= 0:
  46.             return SURE_NO
  47.         return SURE_YES
  48.  
  49.     
  50.     def got_enough_data(self):
  51.         return self._mTotalChars > ENOUGH_DATA_THRESHOLD
  52.  
  53.     
  54.     def get_order(self, aStr):
  55.         return -1
  56.  
  57.  
  58.  
  59. class EUCTWDistributionAnalysis(CharDistributionAnalysis):
  60.     
  61.     def __init__(self):
  62.         CharDistributionAnalysis.__init__(self)
  63.         self._mCharToFreqOrder = EUCTWCharToFreqOrder
  64.         self._mTableSize = EUCTW_TABLE_SIZE
  65.         self._mTypicalDistributionRatio = EUCTW_TYPICAL_DISTRIBUTION_RATIO
  66.  
  67.     
  68.     def get_order(self, aStr):
  69.         if aStr[0] >= '\xc4':
  70.             return 94 * (ord(aStr[0]) - 196) + ord(aStr[1]) - 161
  71.         return -1
  72.  
  73.  
  74.  
  75. class EUCKRDistributionAnalysis(CharDistributionAnalysis):
  76.     
  77.     def __init__(self):
  78.         CharDistributionAnalysis.__init__(self)
  79.         self._mCharToFreqOrder = EUCKRCharToFreqOrder
  80.         self._mTableSize = EUCKR_TABLE_SIZE
  81.         self._mTypicalDistributionRatio = EUCKR_TYPICAL_DISTRIBUTION_RATIO
  82.  
  83.     
  84.     def get_order(self, aStr):
  85.         if aStr[0] >= '\xb0':
  86.             return 94 * (ord(aStr[0]) - 176) + ord(aStr[1]) - 161
  87.         return -1
  88.  
  89.  
  90.  
  91. class GB2312DistributionAnalysis(CharDistributionAnalysis):
  92.     
  93.     def __init__(self):
  94.         CharDistributionAnalysis.__init__(self)
  95.         self._mCharToFreqOrder = GB2312CharToFreqOrder
  96.         self._mTableSize = GB2312_TABLE_SIZE
  97.         self._mTypicalDistributionRatio = GB2312_TYPICAL_DISTRIBUTION_RATIO
  98.  
  99.     
  100.     def get_order(self, aStr):
  101.         if aStr[0] >= '\xb0' and aStr[1] >= '\xa1':
  102.             return 94 * (ord(aStr[0]) - 176) + ord(aStr[1]) - 161
  103.         return -1
  104.  
  105.  
  106.  
  107. class Big5DistributionAnalysis(CharDistributionAnalysis):
  108.     
  109.     def __init__(self):
  110.         CharDistributionAnalysis.__init__(self)
  111.         self._mCharToFreqOrder = Big5CharToFreqOrder
  112.         self._mTableSize = BIG5_TABLE_SIZE
  113.         self._mTypicalDistributionRatio = BIG5_TYPICAL_DISTRIBUTION_RATIO
  114.  
  115.     
  116.     def get_order(self, aStr):
  117.         if aStr[0] >= '\xa4':
  118.             if aStr[1] >= '\xa1':
  119.                 return (157 * (ord(aStr[0]) - 164) + ord(aStr[1]) - 161) + 63
  120.             return 157 * (ord(aStr[0]) - 164) + ord(aStr[1]) - 64
  121.         aStr[0] >= '\xa4'
  122.         return -1
  123.  
  124.  
  125.  
  126. class SJISDistributionAnalysis(CharDistributionAnalysis):
  127.     
  128.     def __init__(self):
  129.         CharDistributionAnalysis.__init__(self)
  130.         self._mCharToFreqOrder = JISCharToFreqOrder
  131.         self._mTableSize = JIS_TABLE_SIZE
  132.         self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
  133.  
  134.     
  135.     def get_order(self, aStr):
  136.         if aStr[0] >= '\x81' and aStr[0] <= '\x9f':
  137.             order = 188 * (ord(aStr[0]) - 129)
  138.         elif aStr[0] >= '\xe0' and aStr[0] <= '\xef':
  139.             order = 188 * ((ord(aStr[0]) - 224) + 31)
  140.         else:
  141.             return -1
  142.         order = (aStr[0] <= '\xef') + ord(aStr[1]) - 64
  143.         if aStr[1] > '\x7f':
  144.             order = -1
  145.         
  146.         return order
  147.  
  148.  
  149.  
  150. class EUCJPDistributionAnalysis(CharDistributionAnalysis):
  151.     
  152.     def __init__(self):
  153.         CharDistributionAnalysis.__init__(self)
  154.         self._mCharToFreqOrder = JISCharToFreqOrder
  155.         self._mTableSize = JIS_TABLE_SIZE
  156.         self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
  157.  
  158.     
  159.     def get_order(self, aStr):
  160.         if aStr[0] >= '\xa0':
  161.             return 94 * (ord(aStr[0]) - 161) + ord(aStr[1]) - 161
  162.         return -1
  163.  
  164.  
  165.