version bump 1.3.5: codepage bin supports stdin
This commit is contained in:
parent
21a55bdc3b
commit
67d9bedc14
@ -25,31 +25,38 @@ if(program.list) {
|
||||
process.exit();
|
||||
}
|
||||
|
||||
if(!fs.existsSync(program.args[0])) {
|
||||
console.error('codepage: must specify a filename');
|
||||
process.exit(13);
|
||||
}
|
||||
|
||||
var fr = program.fromCode || 65001;
|
||||
var to = program.toCode || 65001;
|
||||
var f = program.args[0];
|
||||
var o = program.output;
|
||||
var text = fs.readFileSync(f);
|
||||
var dec = codepage.utils.decode(fr, text);
|
||||
|
||||
var bom = {
|
||||
1200: new Buffer([0xFF, 0xFE]),
|
||||
1201: new Buffer([0xFE, 0xFF]),
|
||||
12000: new Buffer([0xFF, 0xFE, 0x00, 0x00]),
|
||||
12001: new Buffer([0x00, 0x00, 0xFE, 0xFF]),
|
||||
16969: new Buffer([0x69, 0x69]),
|
||||
65000: new Buffer([0x2B, 0x2F, 0x76, 0x2B]),
|
||||
65001: new Buffer([0xEF, 0xBB, 0xBF])
|
||||
if(!process.stdin.isTTY) f = f || "-";
|
||||
|
||||
if(f !== "-" && !fs.existsSync(f)) {
|
||||
console.error('codepage: must specify a filename');
|
||||
process.exit(13);
|
||||
}
|
||||
|
||||
if(!program.toCode && !o) console.log(dec.toString('utf8'));
|
||||
else if(!program.bom || !bom[fr]) fs.writeFileSync(o || (f + "." + to), codepage.utils.encode(to, dec));
|
||||
else {
|
||||
fs.writeFileSync(o || (f + "." + to), bom[fr]);
|
||||
fs.appendFileSync(o || (f + "." + to), codepage.utils.encode(to, dec));
|
||||
if(f === "-") process.stdin.pipe(require('concat-stream')(process_text));
|
||||
else process_text(fs.readFileSync(f));
|
||||
|
||||
function process_text(text) {
|
||||
var dec = codepage.utils.decode(fr, text);
|
||||
|
||||
var bom = {
|
||||
1200: new Buffer([0xFF, 0xFE]),
|
||||
1201: new Buffer([0xFE, 0xFF]),
|
||||
12000: new Buffer([0xFF, 0xFE, 0x00, 0x00]),
|
||||
12001: new Buffer([0x00, 0x00, 0xFE, 0xFF]),
|
||||
16969: new Buffer([0x69, 0x69]),
|
||||
65000: new Buffer([0x2B, 0x2F, 0x76, 0x2B]),
|
||||
65001: new Buffer([0xEF, 0xBB, 0xBF])
|
||||
}
|
||||
|
||||
if(!program.toCode && !o) console.log(dec.toString('utf8'));
|
||||
else if(!program.bom || !bom[fr]) fs.writeFileSync(o || (f + "." + to), codepage.utils.encode(to, dec));
|
||||
else {
|
||||
fs.writeFileSync(o || (f + "." + to), bom[fr]);
|
||||
fs.appendFileSync(o || (f + "." + to), codepage.utils.encode(to, dec));
|
||||
}
|
||||
}
|
||||
|
13
codepage.md
13
codepage.md
@ -489,7 +489,7 @@ describe('consistency', function() {
|
||||
cptable = require('./');
|
||||
U = cptable.utils;
|
||||
var chk = function(cptable, cacheit) { return function(x) {
|
||||
it('should consistently process CP ' + x + ' ' + cacheit, function() {
|
||||
it('should consistently process CP ' + x, function() {
|
||||
var cp = cptable[x], D = cp.dec, E = cp.enc;
|
||||
if(cacheit) cptable.utils.cache.encache();
|
||||
else cptable.utils.cache.decache();
|
||||
@ -513,8 +513,12 @@ describe('consistency', function() {
|
||||
cptable.utils.cache.encache();
|
||||
});
|
||||
}; };
|
||||
Object.keys(cptable).filter(function(w) { return w == +w; }).forEach(chk(cptable, true));
|
||||
Object.keys(cptable).filter(function(w) { return w == +w; }).forEach(chk(cptable, false));
|
||||
describe('cached', function() {
|
||||
Object.keys(cptable).filter(function(w) { return w == +w; }).forEach(chk(cptable, true));
|
||||
});
|
||||
describe('direct', function() {
|
||||
Object.keys(cptable).filter(function(w) { return w == +w; }).forEach(chk(cptable, false));
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
@ -715,7 +719,7 @@ describe('failures', function() {
|
||||
```json>package.json
|
||||
{
|
||||
"name": "codepage",
|
||||
"version": "1.3.4",
|
||||
"version": "1.3.5",
|
||||
"author": "SheetJS",
|
||||
"description": "pure-JS library to handle codepages",
|
||||
"keywords": [ "codepage", "iconv", "convert", "strings" ],
|
||||
@ -733,6 +737,7 @@ describe('failures', function() {
|
||||
"main": "cputils.js",
|
||||
"dependencies": {
|
||||
"voc":"",
|
||||
"concat-stream":"",
|
||||
"commander":""
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* cpexcel.js (C) 2013-2014 SheetJS -- http://sheetjs.com */
|
||||
/*jshint -W100 */
|
||||
var cptable = {version:"1.3.4"};
|
||||
var cptable = {version:"1.3.5"};
|
||||
cptable[874] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€<7F><E282AC><EFBFBD><EFBFBD>…<EFBFBD><E280A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>‘’“”•–—<E28093><E28094><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู<E0B8B9><E0B8BA><EFBFBD><EFBFBD>฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛<E0B99A><E0B99B><EFBFBD><EFBFBD>", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
|
||||
cptable[932] = (function(){ var d = [], e = {}, D = [], j;
|
||||
D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚<EFBE9E><EFBE9F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>".split("");
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* cptable.js (C) 2013-2014 SheetJS -- http://sheetjs.com */
|
||||
/*jshint -W100 */
|
||||
var cptable = {version:"1.3.4"};
|
||||
var cptable = {version:"1.3.5"};
|
||||
cptable[37] = (function(){ var d = "\u0000\u0001\u0002\u0003\t\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013
\b\u0018\u0019\u001c\u001d\u001e\u001f\n\u0017\u001b\u0005\u0006\u0007\u0016\u0004\u0014\u0015\u001a âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHIôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
|
||||
cptable[437] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
|
||||
cptable[500] = (function(){ var d = "\u0000\u0001\u0002\u0003\t\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013
\b\u0018\u0019\u001c\u001d\u001e\u001f\n\u0017\u001b\u0005\u0006\u0007\u0016\u0004\u0014\u0015\u001a âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHIôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "codepage",
|
||||
"version": "1.3.4",
|
||||
"version": "1.3.5",
|
||||
"author": "SheetJS",
|
||||
"description": "pure-JS library to handle codepages",
|
||||
"keywords": [ "codepage", "iconv", "convert", "strings" ],
|
||||
@ -18,6 +18,7 @@
|
||||
"main": "cputils.js",
|
||||
"dependencies": {
|
||||
"voc":"",
|
||||
"concat-stream":"",
|
||||
"commander":""
|
||||
},
|
||||
"devDependencies": {
|
||||
|
2
sbcs.js
2
sbcs.js
@ -1,6 +1,6 @@
|
||||
/* sbcs.js (C) 2013-2014 SheetJS -- http://sheetjs.com */
|
||||
/*jshint -W100 */
|
||||
var cptable = {version:"1.3.4"};
|
||||
var cptable = {version:"1.3.5"};
|
||||
cptable[37] = (function(){ var d = "\u0000\u0001\u0002\u0003\t\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013
\b\u0018\u0019\u001c\u001d\u001e\u001f\n\u0017\u001b\u0005\u0006\u0007\u0016\u0004\u0014\u0015\u001a âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHIôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
|
||||
cptable[437] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
|
||||
cptable[500] = (function(){ var d = "\u0000\u0001\u0002\u0003\t\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013
\b\u0018\u0019\u001c\u001d\u001e\u001f\n\u0017\u001b\u0005\u0006\u0007\u0016\u0004\u0014\u0015\u001a âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHIôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d[i]] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })();
|
||||
|
10
test.js
10
test.js
@ -45,7 +45,7 @@ describe('consistency', function() {
|
||||
cptable = require('./');
|
||||
U = cptable.utils;
|
||||
var chk = function(cptable, cacheit) { return function(x) {
|
||||
it('should consistently process CP ' + x + ' ' + cacheit, function() {
|
||||
it('should consistently process CP ' + x, function() {
|
||||
var cp = cptable[x], D = cp.dec, E = cp.enc;
|
||||
if(cacheit) cptable.utils.cache.encache();
|
||||
else cptable.utils.cache.decache();
|
||||
@ -69,8 +69,12 @@ describe('consistency', function() {
|
||||
cptable.utils.cache.encache();
|
||||
});
|
||||
}; };
|
||||
Object.keys(cptable).filter(function(w) { return w == +w; }).forEach(chk(cptable, true));
|
||||
Object.keys(cptable).filter(function(w) { return w == +w; }).forEach(chk(cptable, false));
|
||||
describe('cached', function() {
|
||||
Object.keys(cptable).filter(function(w) { return w == +w; }).forEach(chk(cptable, true));
|
||||
});
|
||||
describe('direct', function() {
|
||||
Object.keys(cptable).filter(function(w) { return w == +w; }).forEach(chk(cptable, false));
|
||||
});
|
||||
});
|
||||
describe('entry conditions', function() {
|
||||
it('should fail to load utils if cptable unavailable', function() {
|
||||
|
Loading…
Reference in New Issue
Block a user