######################## BEGIN LICENSE BLOCK ######################## # The Original Code is mozilla.org code. # # The Initial Developer of the Original Code is # Netscape Communications Corporation. # Portions created by the Initial Developer are Copyright (C) 1998 # the Initial Developer. All Rights Reserved. # # Contributor(s): # Mark Pilgrim - port to Python # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA # 02110-1301 USA ######################### END LICENSE BLOCK ######################### from .enums import ProbingState, MachineState from .mbcharsetprober import MultiByteCharSetProber from .codingstatemachine import CodingStateMachine from .chardistribution import EUCJPDistributionAnalysis from .jpcntx import EUCJPContextAnalysis from .mbcssm import EUCJP_SM_MODEL class EUCJPProber(MultiByteCharSetProber): def __init__(self): super(EUCJPProber, self).__init__() self.coding_sm = CodingStateMachine(EUCJP_SM_MODEL) self.distribution_analyzer = EUCJPDistributionAnalysis() self.context_analyzer = EUCJPContextAnalysis() self.reset() def reset(self): super(EUCJPProber, self).reset() self.context_analyzer.reset() @property def charset_name(self): return "EUC-JP" @property def language(self): return "Japanese" def feed(self, byte_str): for i in range(len(byte_str)): # PY3K: byte_str is a byte array, so byte_str[i] is an int, not a byte coding_state = self.coding_sm.next_state(byte_str[i]) if coding_state == MachineState.ERROR: self.logger.debug('%s %s prober hit error at byte %s', self.charset_name, self.language, i) self._state = ProbingState.NOT_ME break elif coding_state == MachineState.ITS_ME: self._state = ProbingState.FOUND_IT break elif coding_state == MachineState.START: char_len = self.coding_sm.get_current_charlen() if i == 0: self._last_char[1] = byte_str[0] self.context_analyzer.feed(self._last_char, char_len) self.distribution_analyzer.feed(self._last_char, char_len) else: self.context_analyzer.feed(byte_str[i - 1:i + 1], char_len) self.distribution_analyzer.feed(byte_str[i - 1:i + 1], char_len) self._last_char[0] = byte_str[-1] if self.state == ProbingState.DETECTING: if (self.context_analyzer.got_enough_data() and (self.get_confidence() > self.SHORTCUT_THRESHOLD)): self._state = ProbingState.FOUND_IT return self.state def get_confidence(self): context_conf = self.context_analyzer.get_confidence() distrib_conf = self.distribution_analyzer.get_confidence() return max(context_conf, distrib_conf)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
cli | Folder | 0755 |
|
|
__init__.py | File | 1.52 KB | 0644 |
|
__init__.pyc | File | 994 B | 0644 |
|
__init__.pyo | File | 994 B | 0644 |
|
big5freq.py | File | 30.52 KB | 0644 |
|
big5freq.pyc | File | 53.42 KB | 0644 |
|
big5freq.pyo | File | 53.42 KB | 0644 |
|
big5prober.py | File | 1.72 KB | 0644 |
|
big5prober.pyc | File | 1.33 KB | 0644 |
|
big5prober.pyo | File | 1.33 KB | 0644 |
|
chardistribution.py | File | 9.19 KB | 0644 |
|
chardistribution.pyc | File | 7.67 KB | 0644 |
|
chardistribution.pyo | File | 7.67 KB | 0644 |
|
charsetgroupprober.py | File | 3.7 KB | 0644 |
|
charsetgroupprober.pyc | File | 2.81 KB | 0644 |
|
charsetgroupprober.pyo | File | 2.81 KB | 0644 |
|
charsetprober.py | File | 4.99 KB | 0644 |
|
charsetprober.pyc | File | 4.05 KB | 0644 |
|
charsetprober.pyo | File | 4.05 KB | 0644 |
|
codingstatemachine.py | File | 3.51 KB | 0644 |
|
codingstatemachine.pyc | File | 3.28 KB | 0644 |
|
codingstatemachine.pyo | File | 3.28 KB | 0644 |
|
compat.py | File | 1.11 KB | 0644 |
|
compat.pyc | File | 404 B | 0644 |
|
compat.pyo | File | 404 B | 0644 |
|
cp949prober.py | File | 1.81 KB | 0644 |
|
cp949prober.pyc | File | 1.33 KB | 0644 |
|
cp949prober.pyo | File | 1.33 KB | 0644 |
|
enums.py | File | 1.62 KB | 0644 |
|
enums.pyc | File | 3.06 KB | 0644 |
|
enums.pyo | File | 3.06 KB | 0644 |
|
escprober.py | File | 3.86 KB | 0644 |
|
escprober.pyc | File | 3.16 KB | 0644 |
|
escprober.pyo | File | 3.16 KB | 0644 |
|
escsm.py | File | 10.26 KB | 0644 |
|
escsm.pyc | File | 7.83 KB | 0644 |
|
escsm.pyo | File | 7.83 KB | 0644 |
|
eucjpprober.py | File | 3.66 KB | 0644 |
|
eucjpprober.pyc | File | 2.97 KB | 0644 |
|
eucjpprober.pyo | File | 2.97 KB | 0644 |
|
euckrfreq.py | File | 13.23 KB | 0644 |
|
euckrfreq.pyc | File | 23.52 KB | 0644 |
|
euckrfreq.pyo | File | 23.52 KB | 0644 |
|
euckrprober.py | File | 1.71 KB | 0644 |
|
euckrprober.pyc | File | 1.33 KB | 0644 |
|
euckrprober.pyo | File | 1.33 KB | 0644 |
|
euctwfreq.py | File | 30.88 KB | 0644 |
|
euctwfreq.pyc | File | 53.43 KB | 0644 |
|
euctwfreq.pyo | File | 53.43 KB | 0644 |
|
euctwprober.py | File | 1.71 KB | 0644 |
|
euctwprober.pyc | File | 1.33 KB | 0644 |
|
euctwprober.pyo | File | 1.33 KB | 0644 |
|
gb2312freq.py | File | 20.23 KB | 0644 |
|
gb2312freq.pyc | File | 37.45 KB | 0644 |
|
gb2312freq.pyo | File | 37.45 KB | 0644 |
|
gb2312prober.py | File | 1.71 KB | 0644 |
|
gb2312prober.pyc | File | 1.34 KB | 0644 |
|
gb2312prober.pyo | File | 1.34 KB | 0644 |
|
hebrewprober.py | File | 13.51 KB | 0644 |
|
hebrewprober.pyc | File | 3.72 KB | 0644 |
|
hebrewprober.pyo | File | 3.72 KB | 0644 |
|
jisfreq.py | File | 25.17 KB | 0644 |
|
jisfreq.pyc | File | 43.45 KB | 0644 |
|
jisfreq.pyo | File | 43.45 KB | 0644 |
|
jpcntx.py | File | 19.18 KB | 0644 |
|
jpcntx.pyc | File | 24.74 KB | 0644 |
|
jpcntx.pyo | File | 24.74 KB | 0644 |
|
langbulgarianmodel.py | File | 12.54 KB | 0644 |
|
langbulgarianmodel.pyc | File | 24.38 KB | 0644 |
|
langbulgarianmodel.pyo | File | 24.38 KB | 0644 |
|
langcyrillicmodel.py | File | 17.53 KB | 0644 |
|
langcyrillicmodel.pyc | File | 29.96 KB | 0644 |
|
langcyrillicmodel.pyo | File | 29.96 KB | 0644 |
|
langgreekmodel.py | File | 12.39 KB | 0644 |
|
langgreekmodel.pyc | File | 24.06 KB | 0644 |
|
langgreekmodel.pyo | File | 24.06 KB | 0644 |
|
langhebrewmodel.py | File | 11.08 KB | 0644 |
|
langhebrewmodel.pyc | File | 22.9 KB | 0644 |
|
langhebrewmodel.pyo | File | 22.9 KB | 0644 |
|
langhungarianmodel.py | File | 12.3 KB | 0644 |
|
langhungarianmodel.pyc | File | 24.35 KB | 0644 |
|
langhungarianmodel.pyo | File | 24.35 KB | 0644 |
|
langthaimodel.py | File | 11.03 KB | 0644 |
|
langthaimodel.pyc | File | 22.88 KB | 0644 |
|
langthaimodel.pyo | File | 22.88 KB | 0644 |
|
langturkishmodel.py | File | 10.84 KB | 0644 |
|
langturkishmodel.pyc | File | 22.9 KB | 0644 |
|
langturkishmodel.pyo | File | 22.9 KB | 0644 |
|
latin1prober.py | File | 5.24 KB | 0644 |
|
latin1prober.pyc | File | 3.65 KB | 0644 |
|
latin1prober.pyo | File | 3.65 KB | 0644 |
|
mbcharsetprober.py | File | 3.33 KB | 0644 |
|
mbcharsetprober.pyc | File | 2.73 KB | 0644 |
|
mbcharsetprober.pyo | File | 2.73 KB | 0644 |
|
mbcsgroupprober.py | File | 1.96 KB | 0644 |
|
mbcsgroupprober.pyc | File | 1.3 KB | 0644 |
|
mbcsgroupprober.pyo | File | 1.3 KB | 0644 |
|
mbcssm.py | File | 24.88 KB | 0644 |
|
mbcssm.pyc | File | 18.67 KB | 0644 |
|
mbcssm.pyo | File | 18.67 KB | 0644 |
|
sbcharsetprober.py | File | 5.52 KB | 0644 |
|
sbcharsetprober.pyc | File | 3.59 KB | 0644 |
|
sbcharsetprober.pyo | File | 3.59 KB | 0644 |
|
sbcsgroupprober.py | File | 3.46 KB | 0644 |
|
sbcsgroupprober.pyc | File | 1.88 KB | 0644 |
|
sbcsgroupprober.pyo | File | 1.88 KB | 0644 |
|
sjisprober.py | File | 3.69 KB | 0644 |
|
sjisprober.pyc | File | 3 KB | 0644 |
|
sjisprober.pyo | File | 3 KB | 0644 |
|
universaldetector.py | File | 12.19 KB | 0644 |
|
universaldetector.pyc | File | 6.95 KB | 0644 |
|
universaldetector.pyo | File | 6.95 KB | 0644 |
|
utf8prober.py | File | 2.7 KB | 0644 |
|
utf8prober.pyc | File | 2.46 KB | 0644 |
|
utf8prober.pyo | File | 2.46 KB | 0644 |
|
version.py | File | 242 B | 0644 |
|
version.pyc | File | 431 B | 0644 |
|
version.pyo | File | 431 B | 0644 |
|