mol_charset_ucf 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/node.deps.json +1 -1
- package/node.js +22 -17
- package/node.js.map +1 -1
- package/node.mjs +22 -17
- package/node.test.js +28 -23
- package/node.test.js.map +1 -1
- package/package.json +1 -1
- package/web.deps.json +1 -1
- package/web.js +22 -17
- package/web.js.map +1 -1
- package/web.mjs +22 -17
- package/web.test.js +6 -6
- package/web.test.js.map +1 -1
package/package.json
CHANGED
package/web.deps.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"files":["mam.ts","LICENSE","README.md","mam.jam.js","tsfmt.json","package.json","tsconfig.json","lang.lang.tree","meta.lang.tree","sandbox.config.json","mol/CNAME","mol/LICENSE","mol/readme.md","mol/mol.meta.tree","mol/CONTRIBUTING.md","mol/CODE_OF_CONDUCT.md","mol/charset/buffer/buffer.ts","mol/charset/ucf/ucf.ts","mol/charset/ucf/readme.md"],"mods":{},"deps_in":{"mol/charset":{"mol/charset/ucf":-999,"mol/charset/buffer":-999},"mol":{"mol/charset":-999},"":{"mol":-999},"mol/charset/buffer":{"mol/charset/ucf":-2}},"deps_out":{"mol/charset/ucf":{"mol/charset":-999,"mol/charset/buffer":-2},"mol/charset":{"mol":-999},"mol":{"":-999},"mol/charset/buffer":{"mol/charset":-999}},"sloc":{"ts":
|
|
1
|
+
{"files":["mam.ts","LICENSE","README.md","mam.jam.js","tsfmt.json","package.json","tsconfig.json","lang.lang.tree","meta.lang.tree","sandbox.config.json","mol/CNAME","mol/LICENSE","mol/readme.md","mol/mol.meta.tree","mol/CONTRIBUTING.md","mol/CODE_OF_CONDUCT.md","mol/charset/buffer/buffer.ts","mol/charset/ucf/ucf.ts","mol/charset/ucf/readme.md"],"mods":{},"deps_in":{"mol/charset":{"mol/charset/ucf":-999,"mol/charset/buffer":-999},"mol":{"mol/charset":-999},"":{"mol":-999},"mol/charset/buffer":{"mol/charset/ucf":-2}},"deps_out":{"mol/charset/ucf":{"mol/charset":-999,"mol/charset/buffer":-2},"mol/charset":{"mol":-999},"mol":{"":-999},"mol/charset/buffer":{"mol/charset":-999}},"sloc":{"ts":134,"LICENSE":113,"md":489,"js":9,"json":82,"tree":41,"CNAME":1},"deps":{"mol/charset/ucf":{"..":-999,"/mol/charset/ucf/encode":-1,"/mol/charset/buffer":-2,"/mol/charset/ucf/encode/to":-1,"/mol/charset/ucf/decode":-1},"mol/charset":{"..":-999},"mol":{"..":-999},"":{},"mol/charset/buffer":{"..":-999,"/mol/charset/buffer":-1}}}
|
package/web.js
CHANGED
|
@@ -71,10 +71,8 @@ var $;
|
|
|
71
71
|
function $mol_charset_ucf_encode_to(str, buf, from = 0) {
|
|
72
72
|
let pos = from;
|
|
73
73
|
let mode = tiny_mode;
|
|
74
|
-
let high_last = mode;
|
|
75
74
|
const write_high = (code) => {
|
|
76
|
-
buf[pos++] = ((code + 128 -
|
|
77
|
-
high_last = code;
|
|
75
|
+
buf[pos++] = ((code + 128 - mode) & 0x7F) | 0x80;
|
|
78
76
|
};
|
|
79
77
|
const write_remap = (code) => {
|
|
80
78
|
const fast = ascii_map[code];
|
|
@@ -83,6 +81,10 @@ var $;
|
|
|
83
81
|
else
|
|
84
82
|
buf[pos++] = code;
|
|
85
83
|
};
|
|
84
|
+
const write_mode = (m) => {
|
|
85
|
+
write_high(m);
|
|
86
|
+
mode = m;
|
|
87
|
+
};
|
|
86
88
|
for (let i = 0; i < str.length; i++) {
|
|
87
89
|
let code = str.charCodeAt(i);
|
|
88
90
|
if (code >= 0xd800 && code < 0xe000)
|
|
@@ -91,7 +93,7 @@ var $;
|
|
|
91
93
|
if (mode !== tiny_mode) {
|
|
92
94
|
const fast = ascii_map[code];
|
|
93
95
|
if (!fast)
|
|
94
|
-
|
|
96
|
+
write_mode(tiny_mode);
|
|
95
97
|
}
|
|
96
98
|
buf[pos++] = code;
|
|
97
99
|
}
|
|
@@ -102,33 +104,33 @@ var $;
|
|
|
102
104
|
const fast = diacr_map[code];
|
|
103
105
|
if (fast) {
|
|
104
106
|
if (mode !== tiny_mode)
|
|
105
|
-
|
|
107
|
+
write_mode(tiny_mode);
|
|
106
108
|
write_high(fast);
|
|
107
109
|
continue;
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
112
|
if (mode !== page)
|
|
111
|
-
|
|
113
|
+
write_mode(page);
|
|
112
114
|
write_remap(code);
|
|
113
115
|
}
|
|
114
116
|
else if (code < wide_limit) {
|
|
115
117
|
code -= wide_offset;
|
|
116
118
|
const page = (code >> 14) + wide_mode;
|
|
117
119
|
if (mode !== page)
|
|
118
|
-
|
|
120
|
+
write_mode(page);
|
|
119
121
|
write_remap(code & 0x7F);
|
|
120
|
-
|
|
122
|
+
write_remap((code >> 7) & 0x7F);
|
|
121
123
|
}
|
|
122
124
|
else {
|
|
123
125
|
if (mode !== full_mode)
|
|
124
|
-
|
|
126
|
+
write_mode(full_mode);
|
|
125
127
|
write_remap(code & 0x7F);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
+
write_remap((code >> 7) & 0x7F);
|
|
129
|
+
write_remap(code >> 14);
|
|
128
130
|
}
|
|
129
131
|
}
|
|
130
132
|
if (mode !== tiny_mode)
|
|
131
|
-
|
|
133
|
+
write_mode(tiny_mode);
|
|
132
134
|
return pos - from;
|
|
133
135
|
}
|
|
134
136
|
$.$mol_charset_ucf_encode_to = $mol_charset_ucf_encode_to;
|
|
@@ -136,11 +138,14 @@ var $;
|
|
|
136
138
|
let text = '';
|
|
137
139
|
let pos = 0;
|
|
138
140
|
let page_offset = 0;
|
|
139
|
-
|
|
140
|
-
while (pos < buffer.length) {
|
|
141
|
+
const read_remap = () => {
|
|
141
142
|
let code = buffer[pos++];
|
|
142
143
|
if (code > 0x80)
|
|
143
|
-
code =
|
|
144
|
+
code = ((mode + code) & 0x7F) | 0x80;
|
|
145
|
+
return code;
|
|
146
|
+
};
|
|
147
|
+
while (pos < buffer.length) {
|
|
148
|
+
let code = read_remap();
|
|
144
149
|
if (code < full_mode) {
|
|
145
150
|
if (mode === tiny_mode) {
|
|
146
151
|
if (code > 0x80) {
|
|
@@ -151,9 +156,9 @@ var $;
|
|
|
151
156
|
if (code >= 0x80)
|
|
152
157
|
code = ascii_set[code - 0x80];
|
|
153
158
|
if (mode < tiny_mode)
|
|
154
|
-
code |=
|
|
159
|
+
code |= read_remap() << 7;
|
|
155
160
|
if (mode === full_mode)
|
|
156
|
-
code |=
|
|
161
|
+
code |= read_remap() << 14;
|
|
157
162
|
code += page_offset;
|
|
158
163
|
}
|
|
159
164
|
text += String.fromCodePoint(code);
|
package/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["-","../../../../mam.ts","../../../../mol/charset/buffer/buffer.ts","../../../../mol/charset/ucf/ucf.ts"],"names":[],"mappings":"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","sourcesContent":[null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {\n\t\tstatic $: $\n\t}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\t\n\tlet buf = new Uint8Array( 2**12 ) // 4KB Mem Page\n\t\n\t/** Temporary buffer. Recursive usage isn't supported. */\n\texport function $mol_charset_buffer( size: number ) {\n\t\tif( buf.byteLength < size ) buf = new Uint8Array( size )\n\t\treturn buf\n\t}\n\t\n}\n","namespace $ {\n\t\n\tconst ascii_set = [ ... `0123456789.,:;()'\"- \\n` ].map( c => c.charCodeAt(0) )\n\tconst ascii_map = new Array< number >( 0x80 ).fill( 0 )\n\tfor( let i = 0; i < ascii_set.length; ++i ) ascii_map[ ascii_set[ i ] ] = i | 0x80\n\t\n\tconst diacr_set = [\n\t\t0x00, 0x01, 0x0F, 0x0B, 0x07, 0x08, 0x12, 0x13, // up\n\t\t0x02, 0x0C, 0x06, 0x11, 0x03, 0x09, 0x0A, 0x04, // up\n\t\t0x28, 0x31, 0x27, 0x26, 0x23, // down\n\t]\n\tconst diacr_map = new Array< number >( 0x80 ).fill( 0 )\n\tfor( let i = 0; i < diacr_set.length; ++i ) diacr_map[ diacr_set[ i ] ] = i | 0x80\n\t\n\tconst wide_offset = 0x0E_00\n\tconst wide_limit = 128 * 128 * 8 + wide_offset\n\tconst tine_limit = 128 * 98\n\t\n\tconst full_mode = 0x95\n\tconst wide_mode = 0x96\n\tconst tiny_mode = 0x9E\n\t\n\t/** Encode text to Unicode Compact Format. */\n\texport function $mol_charset_ucf_encode( str: string ) {\n\t\tconst buf = $mol_charset_buffer( str.length * 3 )\n\t\treturn buf.slice( 0, $mol_charset_ucf_encode_to( str, buf ) )\n\t}\t\n\t\n\texport function $mol_charset_ucf_encode_to( str: string, buf: Uint8Array< ArrayBuffer >, from = 0 ) {\n\n\t\tlet pos = from\n\t\tlet mode = tiny_mode\n\t\tlet high_last = mode\n\t\t\n\t\tconst write_high = ( code: number )=> {\n\t\t\tbuf[ pos ++ ] = ( ( code + 128 - high_last ) & 0x7F ) | 0x80\n\t\t\thigh_last = code\n\t\t}\n\t\t\n\t\tconst write_remap = ( code: number )=> {\n\t\t\tconst fast = ascii_map[ code ]\n\t\t\tif( fast ) write_high( fast )\n\t\t\telse buf[ pos ++ ] = code\n\t\t}\n\t\t\n\t\tfor( let i = 0; i < str.length; i++ ) {\n\t\t\t\n\t\t\tlet code = str.charCodeAt( i )\n\t\t\tif( code >= 0xd800 && code < 0xe000 ) code = ( ( code - 0xd800 ) << 10 ) + str.charCodeAt( ++ i ) + 0x2400\n\t\t\t\n\t\t\tif( code < 0x80 ) { // ASCII\n\t\t\t\t\n\t\t\t\tif( mode !== tiny_mode ) {\n\t\t\t\t\tconst fast = ascii_map[ code ]\n\t\t\t\t\tif( !fast ) write_high( mode = tiny_mode )\n\t\t\t\t}\n\t\t\t\tbuf[ pos ++ ] = code\n\t\t\t\t\n\t\t\t} else if( code < tine_limit ) { // Tiny\n\t\t\t\t\n\t\t\t\tconst page = ( code >> 7 ) + tiny_mode\n\t\t\t\tcode &= 0x7F\n\t\t\t\t\n\t\t\t\tif( page === 164 ) { // diacritics\n\t\t\t\t\tconst fast = diacr_map[ code ]\n\t\t\t\t\tif( fast ) {\n\t\t\t\t\t\tif( mode !== tiny_mode ) write_high( mode = tiny_mode )\n\t\t\t\t\t\twrite_high( fast )\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( mode !== page ) write_high( mode = page )\n\t\t\t\twrite_remap( code )\n\t\t\t\t\n\t\t\t} else if( code < wide_limit ) { // Wide\n\t\t\t\t\n\t\t\t\tcode -= wide_offset\n\t\t\t\tconst page = ( code >> 14 ) + wide_mode\n\t\t\t\tif( mode !== page ) write_high( mode = page )\n\t\t\t\twrite_remap( code & 0x7F )\n\t\t\t\tbuf[ pos ++ ] = ( code >> 7 ) & 0x7F\n\t\t\t\t\n\t\t\t} else { // Full\n\t\t\t\t\n\t\t\t\tif( mode !== full_mode ) write_high( mode = full_mode )\n\t\t\t\t write_remap( code & 0x7F )\n\t\t\t\tbuf[ pos ++ ] = ( code >> 7 ) & 0x7F\n\t\t\t\tbuf[ pos ++ ] = code >> 14\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\t\t\n\t\tif( mode !== tiny_mode ) write_high( tiny_mode )\n\n\t\treturn pos - from\n\t}\n\t\n\t/** Decode text from Unicode Compact Format. */\n\texport function $mol_charset_ucf_decode( buffer: Uint8Array< ArrayBuffer >, mode = tiny_mode ) {\n\t\t\n\t\tlet text = ''\n\t\tlet pos = 0\n\t\tlet page_offset = 0\n\t\tlet ext_last = mode\n\t\t\n\t\twhile( pos < buffer.length ) {\n\t\t\t\n\t\t\tlet code = buffer[ pos ++ ]\n\t\t\t\n\t\t\tif( code > 0x80 ) code = ext_last = ( ( ext_last + code ) & 0x7F ) | 0x80\n\t\t\t\n\t\t\tif( code < full_mode ) { // Char Code\n\t\t\t\t\n\t\t\t\tif( mode === tiny_mode ) {\n\t\t\t\t\tif( code > 0x80 ) {\n\t\t\t\t\t\tcode = diacr_set[ code - 0x080 ] | ( 6 << 7 )\n\t\t\t\t\t}\n\t\t\t\t} else if( !ascii_map[ code ] ) {\n\t\t\t\t\tif( code >= 0x80 ) code = ascii_set[ code - 0x80 ]\n\t\t\t\t\tif( mode < tiny_mode ) code |= buffer[ pos ++ ] << 7\n\t\t\t\t\tif( mode === full_mode ) code |= buffer[ pos ++ ] << 14\n\t\t\t\t\tcode += page_offset\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttext += String.fromCodePoint( code )\n\t\t\t\t\n\t\t\t} else if( code >= tiny_mode ) { // Tiny Set\n\t\t\t\t\n\t\t\t\tmode = code\n\t\t\t\tpage_offset = ( mode - tiny_mode ) << 7\n\t\t\t\t\n\t\t\t} else if( code === full_mode ) { // Full Set\n\t\t\t\t\n\t\t\t\tmode = code\n\t\t\t\tpage_offset = 0\n\t\t\t\t\n\t\t\t} else { // Wide Set\n\t\t\t\t\n\t\t\t\tmode = code\n\t\t\t\tpage_offset = ( ( mode - wide_mode ) << 14 ) + wide_offset\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\treturn text\n\t}\n\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["-","../../../../mam.ts","../../../../mol/charset/buffer/buffer.ts","../../../../mol/charset/ucf/ucf.ts"],"names":[],"mappings":"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","sourcesContent":[null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {\n\t\tstatic $: $\n\t}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\t\n\tlet buf = new Uint8Array( 2**12 ) // 4KB Mem Page\n\t\n\t/** Temporary buffer. Recursive usage isn't supported. */\n\texport function $mol_charset_buffer( size: number ) {\n\t\tif( buf.byteLength < size ) buf = new Uint8Array( size )\n\t\treturn buf\n\t}\n\t\n}\n","namespace $ {\n\t\n\tconst ascii_set = [ ... `0123456789.,:;()'\"- \\n` ].map( c => c.charCodeAt(0) )\n\tconst ascii_map = new Array< number >( 0x80 ).fill( 0 )\n\tfor( let i = 0; i < ascii_set.length; ++i ) ascii_map[ ascii_set[ i ] ] = i | 0x80\n\t\n\tconst diacr_set = [\n\t\t0x00, 0x01, 0x0F, 0x0B, 0x07, 0x08, 0x12, 0x13, // up\n\t\t0x02, 0x0C, 0x06, 0x11, 0x03, 0x09, 0x0A, 0x04, // up\n\t\t0x28, 0x31, 0x27, 0x26, 0x23, // down\n\t]\n\tconst diacr_map = new Array< number >( 0x80 ).fill( 0 )\n\tfor( let i = 0; i < diacr_set.length; ++i ) diacr_map[ diacr_set[ i ] ] = i | 0x80\n\t\n\tconst wide_offset = 0x0E_00\n\tconst wide_limit = 128 * 128 * 8 + wide_offset\n\tconst tine_limit = 128 * 98\n\t\n\tconst full_mode = 0x95\n\tconst wide_mode = 0x96\n\tconst tiny_mode = 0x9E\n\t\n\t/** Encode text to Unicode Compact Format. */\n\texport function $mol_charset_ucf_encode( str: string ) {\n\t\tconst buf = $mol_charset_buffer( str.length * 3 )\n\t\treturn buf.slice( 0, $mol_charset_ucf_encode_to( str, buf ) )\n\t}\t\n\t\n\texport function $mol_charset_ucf_encode_to( str: string, buf: Uint8Array< ArrayBuffer >, from = 0 ) {\n\n\t\tlet pos = from\n\t\tlet mode = tiny_mode\n\t\t\n\t\tconst write_high = ( code: number )=> {\n\t\t\tbuf[ pos ++ ] = ( ( code + 128 - mode ) & 0x7F ) | 0x80\n\t\t}\n\t\t\n\t\tconst write_remap = ( code: number )=> {\n\t\t\tconst fast = ascii_map[ code ]\n\t\t\tif( fast ) write_high( fast )\n\t\t\telse buf[ pos ++ ] = code\n\t\t}\n\t\t\n\t\tconst write_mode = ( m: number )=> {\n\t\t\twrite_high( m )\n\t\t\tmode = m\n\t\t}\n\t\t\n\t\tfor( let i = 0; i < str.length; i++ ) {\n\t\t\t\n\t\t\tlet code = str.charCodeAt( i )\n\t\t\tif( code >= 0xd800 && code < 0xe000 ) code = ( ( code - 0xd800 ) << 10 ) + str.charCodeAt( ++ i ) + 0x2400\n\t\t\t\n\t\t\tif( code < 0x80 ) { // ASCII\n\t\t\t\t\n\t\t\t\tif( mode !== tiny_mode ) {\n\t\t\t\t\tconst fast = ascii_map[ code ]\n\t\t\t\t\tif( !fast ) write_mode( tiny_mode )\n\t\t\t\t}\n\t\t\t\tbuf[ pos ++ ] = code\n\t\t\t\t\n\t\t\t} else if( code < tine_limit ) { // Tiny\n\t\t\t\t\n\t\t\t\tconst page = ( code >> 7 ) + tiny_mode\n\t\t\t\tcode &= 0x7F\n\t\t\t\t\n\t\t\t\tif( page === 164 ) { // diacritics\n\t\t\t\t\tconst fast = diacr_map[ code ]\n\t\t\t\t\tif( fast ) {\n\t\t\t\t\t\tif( mode !== tiny_mode ) write_mode( tiny_mode )\n\t\t\t\t\t\twrite_high( fast )\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif( mode !== page ) write_mode( page )\n\t\t\t\twrite_remap( code )\n\t\t\t\t\n\t\t\t} else if( code < wide_limit ) { // Wide\n\t\t\t\t\n\t\t\t\tcode -= wide_offset\n\t\t\t\tconst page = ( code >> 14 ) + wide_mode\n\t\t\t\tif( mode !== page ) write_mode( page )\n\t\t\t\twrite_remap( code & 0x7F )\n\t\t\t\twrite_remap( ( code >> 7 ) & 0x7F )\n\t\t\t\t\n\t\t\t} else { // Full\n\t\t\t\t\n\t\t\t\tif( mode !== full_mode ) write_mode( full_mode )\n\t\t\t\twrite_remap( code & 0x7F )\n\t\t\t\twrite_remap( ( code >> 7 ) & 0x7F )\n\t\t\t\twrite_remap( code >> 14 )\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\t\t\n\t\tif( mode !== tiny_mode ) write_mode( tiny_mode )\n\n\t\treturn pos - from\n\t}\n\t\n\t/** Decode text from Unicode Compact Format. */\n\texport function $mol_charset_ucf_decode( buffer: Uint8Array< ArrayBuffer >, mode = tiny_mode ) {\n\t\t\n\t\tlet text = ''\n\t\tlet pos = 0\n\t\tlet page_offset = 0\n\t\t\n\t\tconst read_remap = ()=> {\n\t\t\tlet code = buffer[ pos ++ ]\n\t\t\tif( code > 0x80 ) code = ( ( mode + code ) & 0x7F ) | 0x80\n\t\t\treturn code\n\t\t}\n\t\t\n\t\twhile( pos < buffer.length ) {\n\t\t\t\n\t\t\tlet code = read_remap()\n\t\t\t\n\t\t\tif( code < full_mode ) { // Char Code\n\t\t\t\t\n\t\t\t\tif( mode === tiny_mode ) {\n\t\t\t\t\tif( code > 0x80 ) {\n\t\t\t\t\t\tcode = diacr_set[ code - 0x080 ] | ( 6 << 7 )\n\t\t\t\t\t}\n\t\t\t\t} else if( !ascii_map[ code ] ) {\n\t\t\t\t\tif( code >= 0x80 ) code = ascii_set[ code - 0x80 ]\n\t\t\t\t\tif( mode < tiny_mode ) code |= read_remap() << 7\n\t\t\t\t\tif( mode === full_mode ) code |= read_remap() << 14\n\t\t\t\t\tcode += page_offset\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttext += String.fromCodePoint( code )\n\t\t\t\t\n\t\t\t} else if( code >= tiny_mode ) { // Tiny Set\n\t\t\t\t\n\t\t\t\tmode = code\n\t\t\t\tpage_offset = ( mode - tiny_mode ) << 7\n\t\t\t\t\n\t\t\t} else if( code === full_mode ) { // Full Set\n\t\t\t\t\n\t\t\t\tmode = code\n\t\t\t\tpage_offset = 0\n\t\t\t\t\n\t\t\t} else { // Wide Set\n\t\t\t\t\n\t\t\t\tmode = code\n\t\t\t\tpage_offset = ( ( mode - wide_mode ) << 14 ) + wide_offset\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\treturn text\n\t}\n\n}\n"]}
|
package/web.mjs
CHANGED
|
@@ -71,10 +71,8 @@ var $;
|
|
|
71
71
|
function $mol_charset_ucf_encode_to(str, buf, from = 0) {
|
|
72
72
|
let pos = from;
|
|
73
73
|
let mode = tiny_mode;
|
|
74
|
-
let high_last = mode;
|
|
75
74
|
const write_high = (code) => {
|
|
76
|
-
buf[pos++] = ((code + 128 -
|
|
77
|
-
high_last = code;
|
|
75
|
+
buf[pos++] = ((code + 128 - mode) & 0x7F) | 0x80;
|
|
78
76
|
};
|
|
79
77
|
const write_remap = (code) => {
|
|
80
78
|
const fast = ascii_map[code];
|
|
@@ -83,6 +81,10 @@ var $;
|
|
|
83
81
|
else
|
|
84
82
|
buf[pos++] = code;
|
|
85
83
|
};
|
|
84
|
+
const write_mode = (m) => {
|
|
85
|
+
write_high(m);
|
|
86
|
+
mode = m;
|
|
87
|
+
};
|
|
86
88
|
for (let i = 0; i < str.length; i++) {
|
|
87
89
|
let code = str.charCodeAt(i);
|
|
88
90
|
if (code >= 0xd800 && code < 0xe000)
|
|
@@ -91,7 +93,7 @@ var $;
|
|
|
91
93
|
if (mode !== tiny_mode) {
|
|
92
94
|
const fast = ascii_map[code];
|
|
93
95
|
if (!fast)
|
|
94
|
-
|
|
96
|
+
write_mode(tiny_mode);
|
|
95
97
|
}
|
|
96
98
|
buf[pos++] = code;
|
|
97
99
|
}
|
|
@@ -102,33 +104,33 @@ var $;
|
|
|
102
104
|
const fast = diacr_map[code];
|
|
103
105
|
if (fast) {
|
|
104
106
|
if (mode !== tiny_mode)
|
|
105
|
-
|
|
107
|
+
write_mode(tiny_mode);
|
|
106
108
|
write_high(fast);
|
|
107
109
|
continue;
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
112
|
if (mode !== page)
|
|
111
|
-
|
|
113
|
+
write_mode(page);
|
|
112
114
|
write_remap(code);
|
|
113
115
|
}
|
|
114
116
|
else if (code < wide_limit) {
|
|
115
117
|
code -= wide_offset;
|
|
116
118
|
const page = (code >> 14) + wide_mode;
|
|
117
119
|
if (mode !== page)
|
|
118
|
-
|
|
120
|
+
write_mode(page);
|
|
119
121
|
write_remap(code & 0x7F);
|
|
120
|
-
|
|
122
|
+
write_remap((code >> 7) & 0x7F);
|
|
121
123
|
}
|
|
122
124
|
else {
|
|
123
125
|
if (mode !== full_mode)
|
|
124
|
-
|
|
126
|
+
write_mode(full_mode);
|
|
125
127
|
write_remap(code & 0x7F);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
+
write_remap((code >> 7) & 0x7F);
|
|
129
|
+
write_remap(code >> 14);
|
|
128
130
|
}
|
|
129
131
|
}
|
|
130
132
|
if (mode !== tiny_mode)
|
|
131
|
-
|
|
133
|
+
write_mode(tiny_mode);
|
|
132
134
|
return pos - from;
|
|
133
135
|
}
|
|
134
136
|
$.$mol_charset_ucf_encode_to = $mol_charset_ucf_encode_to;
|
|
@@ -136,11 +138,14 @@ var $;
|
|
|
136
138
|
let text = '';
|
|
137
139
|
let pos = 0;
|
|
138
140
|
let page_offset = 0;
|
|
139
|
-
|
|
140
|
-
while (pos < buffer.length) {
|
|
141
|
+
const read_remap = () => {
|
|
141
142
|
let code = buffer[pos++];
|
|
142
143
|
if (code > 0x80)
|
|
143
|
-
code =
|
|
144
|
+
code = ((mode + code) & 0x7F) | 0x80;
|
|
145
|
+
return code;
|
|
146
|
+
};
|
|
147
|
+
while (pos < buffer.length) {
|
|
148
|
+
let code = read_remap();
|
|
144
149
|
if (code < full_mode) {
|
|
145
150
|
if (mode === tiny_mode) {
|
|
146
151
|
if (code > 0x80) {
|
|
@@ -151,9 +156,9 @@ var $;
|
|
|
151
156
|
if (code >= 0x80)
|
|
152
157
|
code = ascii_set[code - 0x80];
|
|
153
158
|
if (mode < tiny_mode)
|
|
154
|
-
code |=
|
|
159
|
+
code |= read_remap() << 7;
|
|
155
160
|
if (mode === full_mode)
|
|
156
|
-
code |=
|
|
161
|
+
code |= read_remap() << 14;
|
|
157
162
|
code += page_offset;
|
|
158
163
|
}
|
|
159
164
|
text += String.fromCodePoint(code);
|
package/web.test.js
CHANGED
|
@@ -1461,8 +1461,8 @@ var $;
|
|
|
1461
1461
|
function check(text, bytes) {
|
|
1462
1462
|
const ideal = new Uint8Array(bytes);
|
|
1463
1463
|
const actual = $mol_charset_ucf_encode(text);
|
|
1464
|
-
$mol_assert_equal($mol_charset_ucf_decode(actual), text);
|
|
1465
1464
|
$mol_assert_equal(actual, ideal);
|
|
1465
|
+
$mol_assert_equal($mol_charset_ucf_decode(actual), text);
|
|
1466
1466
|
}
|
|
1467
1467
|
$mol_test({
|
|
1468
1468
|
"Full ASCII compatible"($) {
|
|
@@ -1472,7 +1472,7 @@ var $;
|
|
|
1472
1472
|
check('allo\u0302', [0x61, 0x6C, 0x6C, 0x6F, 0xEA]);
|
|
1473
1473
|
},
|
|
1474
1474
|
"1B Cyrillic"($) {
|
|
1475
|
-
check('мир', [0x88, 0x3C, 0xE2, 0x40,
|
|
1475
|
+
check('мир', [0x88, 0x3C, 0xE2, 0x40, 0xF8]);
|
|
1476
1476
|
},
|
|
1477
1477
|
"1B Cyrillic with nummbers and punctuation"($) {
|
|
1478
1478
|
check('м.1', [0x88, 0x3C, 0x2E, 0x31, 0xF8]);
|
|
@@ -1488,15 +1488,15 @@ var $;
|
|
|
1488
1488
|
},
|
|
1489
1489
|
"2B Emoji with 1B modifiers"($) {
|
|
1490
1490
|
check('🏴', [0xFF, 0x74, 0x4B, 0x81]);
|
|
1491
|
-
check('🏴☠', [0xFF, 0x74, 0x4B, 0xC1, 0x0D, 0x8C, 0xA9,
|
|
1491
|
+
check('🏴☠', [0xFF, 0x74, 0x4B, 0xC1, 0x0D, 0x8C, 0xA9, 0xB4]);
|
|
1492
1492
|
},
|
|
1493
1493
|
"Mixed scripts"($) {
|
|
1494
1494
|
check('allô 美しい мир, 🏴☠\n', [
|
|
1495
1495
|
0x61, 0x6C, 0x6C, 0x6F, 0xEA, 0x20,
|
|
1496
|
-
|
|
1496
|
+
0xF9, 0x0E, 0x63, 0xE7, 0x57, 0x44, 0x20,
|
|
1497
1497
|
0xA8, 0x3C, 0xE2, 0x40, 0x2C, 0x20,
|
|
1498
|
-
|
|
1499
|
-
|
|
1498
|
+
0xF7, 0x74, 0x4B, 0xC1, 0x0D, 0x8C, 0xA9, 0x0A,
|
|
1499
|
+
0xB4,
|
|
1500
1500
|
]);
|
|
1501
1501
|
},
|
|
1502
1502
|
});
|