123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- import { inRange } from './text_decoder_utils.js'
- import Indexes from './encoding-indexes.js'
- export function indexCodePointFor(pointer, i) {
- if (!i) return null
- return i[pointer] || null
- }
- export function indexPointerFor(code_point, i) {
- var pointer = i.indexOf(code_point)
- return pointer === -1 ? null : pointer
- }
- export default function index(name) {
- return Indexes[name]
- }
- export function indexGB18030RangesCodePointFor(pointer) {
-
-
- if ((pointer > 39419 && pointer < 189000) || (pointer > 1237575))
- return null
-
- if (pointer === 7457) return 0xE7C7
-
-
-
- var offset = 0
- var code_point_offset = 0
- var idx = index('gb18030-ranges')
- var i
- for (i = 0; i < idx.length; ++i) {
-
- var entry = idx[i]
- if (entry[0] <= pointer) {
- offset = entry[0]
- code_point_offset = entry[1]
- } else {
- break
- }
- }
-
-
- return code_point_offset + pointer - offset
- }
- export function indexGB18030RangesPointerFor(code_point) {
-
- if (code_point === 0xE7C7) return 7457
-
-
-
- var offset = 0
- var pointer_offset = 0
- var idx = index('gb18030-ranges')
- var i
- for (i = 0; i < idx.length; ++i) {
-
- var entry = idx[i]
- if (entry[1] <= code_point) {
- offset = entry[1]
- pointer_offset = entry[0]
- } else {
- break
- }
- }
-
-
- return pointer_offset + code_point - offset
- }
- export function indexShiftJISPointerFor(code_point) {
-
-
- shift_jis_index = shift_jis_index ||
- index('jis0208').map((cp, pointer) => {
- return inRange(pointer, 8272, 8835) ? null : cp
- })
- const index_ = shift_jis_index
-
- return index_.indexOf(code_point)
- }
- var shift_jis_index
- export function indexBig5PointerFor(code_point) {
-
- big5_index_no_hkscs = big5_index_no_hkscs ||
- index('big5').map((cp, pointer) => {
- return (pointer < (0xA1 - 0x81) * 157) ? null : cp
- })
- var index_ = big5_index_no_hkscs
-
-
-
- if (code_point === 0x2550 || code_point === 0x255E ||
- code_point === 0x2561 || code_point === 0x256A ||
- code_point === 0x5341 || code_point === 0x5345) {
- return index_.lastIndexOf(code_point)
- }
-
- return indexPointerFor(code_point, index_)
- }
- var big5_index_no_hkscs
|