######################## 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 .mbcharsetprober import MultiByteCharSetProber from .codingstatemachine import CodingStateMachine from .chardistribution import SJISDistributionAnalysis from .jpcntx import SJISContextAnalysis from .mbcssm import SJIS_SM_MODEL from .enums import ProbingState, MachineState class SJISProber(MultiByteCharSetProber): def __init__(self): super(SJISProber, self).__init__() self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) self.distribution_analyzer = SJISDistributionAnalysis() self.context_analyzer = SJISContextAnalysis() self.reset() def reset(self): super(SJISProber, self).reset() self.context_analyzer.reset() @property def charset_name(self): return self.context_analyzer.charset_name @property def language(self): return "Japanese" def feed(self, byte_str): for i in range(len(byte_str)): 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[2 - char_len:], char_len) self.distribution_analyzer.feed(self._last_char, char_len) else: self.context_analyzer.feed(byte_str[i + 1 - char_len:i + 3 - char_len], 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 |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
cli | Folder | 0755 |
|
|
.__init__.pyo.40009 | File | 1020 B | 0644 |
|
.big5freq.pyo.40009 | File | 53.43 KB | 0644 |
|
.big5prober.pyo.40009 | File | 1.39 KB | 0644 |
|
.chardistribution.pyo.40009 | File | 8 KB | 0644 |
|
.charsetgroupprober.pyo.40009 | File | 2.91 KB | 0644 |
|
.charsetprober.pyo.40009 | File | 4.19 KB | 0644 |
|
.codingstatemachine.pyo.40009 | File | 3.38 KB | 0644 |
|
.compat.pyo.40009 | File | 417 B | 0644 |
|
.cp949prober.pyo.40009 | File | 1.4 KB | 0644 |
|
.enums.pyo.40009 | File | 3.16 KB | 0644 |
|
.escprober.pyo.40009 | File | 3.26 KB | 0644 |
|
.escsm.pyo.40009 | File | 7.84 KB | 0644 |
|
.eucjpprober.pyo.40009 | File | 3.08 KB | 0644 |
|
.euckrfreq.pyo.40009 | File | 23.54 KB | 0644 |
|
.euckrprober.pyo.40009 | File | 1.4 KB | 0644 |
|
.euctwfreq.pyo.40009 | File | 53.44 KB | 0644 |
|
.euctwprober.pyo.40009 | File | 1.4 KB | 0644 |
|
.gb2312freq.pyo.40009 | File | 37.47 KB | 0644 |
|
.gb2312prober.pyo.40009 | File | 1.41 KB | 0644 |
|
.hebrewprober.pyo.40009 | File | 3.86 KB | 0644 |
|
.jisfreq.pyo.40009 | File | 43.47 KB | 0644 |
|
.jpcntx.pyo.40009 | File | 24.91 KB | 0644 |
|
.langbulgarianmodel.pyo.40009 | File | 24.39 KB | 0644 |
|
.langcyrillicmodel.pyo.40009 | File | 29.98 KB | 0644 |
|
.langgreekmodel.pyo.40009 | File | 24.07 KB | 0644 |
|
.langhebrewmodel.pyo.40009 | File | 22.91 KB | 0644 |
|
.langhungarianmodel.pyo.40009 | File | 24.36 KB | 0644 |
|
.langthaimodel.pyo.40009 | File | 22.89 KB | 0644 |
|
.langturkishmodel.pyo.40009 | File | 22.91 KB | 0644 |
|
.latin1prober.pyo.40009 | File | 3.75 KB | 0644 |
|
.mbcharsetprober.pyo.40009 | File | 2.83 KB | 0644 |
|
.mbcsgroupprober.pyo.40009 | File | 1.34 KB | 0644 |
|
.mbcssm.pyo.40009 | File | 18.69 KB | 0644 |
|
.sbcharsetprober.pyo.40009 | File | 3.69 KB | 0644 |
|
.sbcsgroupprober.pyo.40009 | File | 1.92 KB | 0644 |
|
.sjisprober.pyo.40009 | File | 3.1 KB | 0644 |
|
.universaldetector.pyo.40009 | File | 7.03 KB | 0644 |
|
.utf8prober.pyo.40009 | File | 2.56 KB | 0644 |
|
.version.pyo.40009 | File | 444 B | 0644 |
|
__init__.py | File | 1.52 KB | 0644 |
|
__init__.pyc | File | 1020 B | 0644 |
|
__init__.pyo | File | 1020 B | 0644 |
|
big5freq.py | File | 30.52 KB | 0644 |
|
big5freq.pyc | File | 53.43 KB | 0644 |
|
big5freq.pyo | File | 53.43 KB | 0644 |
|
big5prober.py | File | 1.72 KB | 0644 |
|
big5prober.pyc | File | 1.39 KB | 0644 |
|
big5prober.pyo | File | 1.39 KB | 0644 |
|
chardistribution.py | File | 9.19 KB | 0644 |
|
chardistribution.pyc | File | 8 KB | 0644 |
|
chardistribution.pyo | File | 8 KB | 0644 |
|
charsetgroupprober.py | File | 3.7 KB | 0644 |
|
charsetgroupprober.pyc | File | 2.91 KB | 0644 |
|
charsetgroupprober.pyo | File | 2.91 KB | 0644 |
|
charsetprober.py | File | 4.99 KB | 0644 |
|
charsetprober.pyc | File | 4.19 KB | 0644 |
|
charsetprober.pyo | File | 4.19 KB | 0644 |
|
codingstatemachine.py | File | 3.51 KB | 0644 |
|
codingstatemachine.pyc | File | 3.38 KB | 0644 |
|
codingstatemachine.pyo | File | 3.38 KB | 0644 |
|
compat.py | File | 1.11 KB | 0644 |
|
compat.pyc | File | 417 B | 0644 |
|
compat.pyo | File | 417 B | 0644 |
|
cp949prober.py | File | 1.81 KB | 0644 |
|
cp949prober.pyc | File | 1.4 KB | 0644 |
|
cp949prober.pyo | File | 1.4 KB | 0644 |
|
enums.py | File | 1.62 KB | 0644 |
|
enums.pyc | File | 3.16 KB | 0644 |
|
enums.pyo | File | 3.16 KB | 0644 |
|
escprober.py | File | 3.86 KB | 0644 |
|
escprober.pyc | File | 3.26 KB | 0644 |
|
escprober.pyo | File | 3.26 KB | 0644 |
|
escsm.py | File | 10.26 KB | 0644 |
|
escsm.pyc | File | 7.84 KB | 0644 |
|
escsm.pyo | File | 7.84 KB | 0644 |
|
eucjpprober.py | File | 3.66 KB | 0644 |
|
eucjpprober.pyc | File | 3.08 KB | 0644 |
|
eucjpprober.pyo | File | 3.08 KB | 0644 |
|
euckrfreq.py | File | 13.23 KB | 0644 |
|
euckrfreq.pyc | File | 23.54 KB | 0644 |
|
euckrfreq.pyo | File | 23.54 KB | 0644 |
|
euckrprober.py | File | 1.71 KB | 0644 |
|
euckrprober.pyc | File | 1.4 KB | 0644 |
|
euckrprober.pyo | File | 1.4 KB | 0644 |
|
euctwfreq.py | File | 30.88 KB | 0644 |
|
euctwfreq.pyc | File | 53.44 KB | 0644 |
|
euctwfreq.pyo | File | 53.44 KB | 0644 |
|
euctwprober.py | File | 1.71 KB | 0644 |
|
euctwprober.pyc | File | 1.4 KB | 0644 |
|
euctwprober.pyo | File | 1.4 KB | 0644 |
|
gb2312freq.py | File | 20.23 KB | 0644 |
|
gb2312freq.pyc | File | 37.47 KB | 0644 |
|
gb2312freq.pyo | File | 37.47 KB | 0644 |
|
gb2312prober.py | File | 1.71 KB | 0644 |
|
gb2312prober.pyc | File | 1.41 KB | 0644 |
|
gb2312prober.pyo | File | 1.41 KB | 0644 |
|
hebrewprober.py | File | 13.51 KB | 0644 |
|
hebrewprober.pyc | File | 3.86 KB | 0644 |
|
hebrewprober.pyo | File | 3.86 KB | 0644 |
|
jisfreq.py | File | 25.17 KB | 0644 |
|
jisfreq.pyc | File | 43.47 KB | 0644 |
|
jisfreq.pyo | File | 43.47 KB | 0644 |
|
jpcntx.py | File | 19.18 KB | 0644 |
|
jpcntx.pyc | File | 24.91 KB | 0644 |
|
jpcntx.pyo | File | 24.91 KB | 0644 |
|
langbulgarianmodel.py | File | 12.54 KB | 0644 |
|
langbulgarianmodel.pyc | File | 24.39 KB | 0644 |
|
langbulgarianmodel.pyo | File | 24.39 KB | 0644 |
|
langcyrillicmodel.py | File | 17.53 KB | 0644 |
|
langcyrillicmodel.pyc | File | 29.98 KB | 0644 |
|
langcyrillicmodel.pyo | File | 29.98 KB | 0644 |
|
langgreekmodel.py | File | 12.39 KB | 0644 |
|
langgreekmodel.pyc | File | 24.07 KB | 0644 |
|
langgreekmodel.pyo | File | 24.07 KB | 0644 |
|
langhebrewmodel.py | File | 11.08 KB | 0644 |
|
langhebrewmodel.pyc | File | 22.91 KB | 0644 |
|
langhebrewmodel.pyo | File | 22.91 KB | 0644 |
|
langhungarianmodel.py | File | 12.3 KB | 0644 |
|
langhungarianmodel.pyc | File | 24.36 KB | 0644 |
|
langhungarianmodel.pyo | File | 24.36 KB | 0644 |
|
langthaimodel.py | File | 11.03 KB | 0644 |
|
langthaimodel.pyc | File | 22.89 KB | 0644 |
|
langthaimodel.pyo | File | 22.89 KB | 0644 |
|
langturkishmodel.py | File | 10.84 KB | 0644 |
|
langturkishmodel.pyc | File | 22.91 KB | 0644 |
|
langturkishmodel.pyo | File | 22.91 KB | 0644 |
|
latin1prober.py | File | 5.24 KB | 0644 |
|
latin1prober.pyc | File | 3.75 KB | 0644 |
|
latin1prober.pyo | File | 3.75 KB | 0644 |
|
mbcharsetprober.py | File | 3.33 KB | 0644 |
|
mbcharsetprober.pyc | File | 2.83 KB | 0644 |
|
mbcharsetprober.pyo | File | 2.83 KB | 0644 |
|
mbcsgroupprober.py | File | 1.96 KB | 0644 |
|
mbcsgroupprober.pyc | File | 1.34 KB | 0644 |
|
mbcsgroupprober.pyo | File | 1.34 KB | 0644 |
|
mbcssm.py | File | 24.88 KB | 0644 |
|
mbcssm.pyc | File | 18.69 KB | 0644 |
|
mbcssm.pyo | File | 18.69 KB | 0644 |
|
sbcharsetprober.py | File | 5.52 KB | 0644 |
|
sbcharsetprober.pyc | File | 3.69 KB | 0644 |
|
sbcharsetprober.pyo | File | 3.69 KB | 0644 |
|
sbcsgroupprober.py | File | 3.46 KB | 0644 |
|
sbcsgroupprober.pyc | File | 1.92 KB | 0644 |
|
sbcsgroupprober.pyo | File | 1.92 KB | 0644 |
|
sjisprober.py | File | 3.69 KB | 0644 |
|
sjisprober.pyc | File | 3.1 KB | 0644 |
|
sjisprober.pyo | File | 3.1 KB | 0644 |
|
universaldetector.py | File | 12.19 KB | 0644 |
|
universaldetector.pyc | File | 7.03 KB | 0644 |
|
universaldetector.pyo | File | 7.03 KB | 0644 |
|
utf8prober.py | File | 2.7 KB | 0644 |
|
utf8prober.pyc | File | 2.56 KB | 0644 |
|
utf8prober.pyo | File | 2.56 KB | 0644 |
|
version.py | File | 242 B | 0644 |
|
version.pyc | File | 444 B | 0644 |
|
version.pyo | File | 444 B | 0644 |
|