version bump 1.0.1: typings
- typescript definitions and types - flowtype definition refinement
This commit is contained in:
parent
4838519c2c
commit
ed55a202b3
@ -2,7 +2,6 @@
|
||||
.*/node_modules/.*
|
||||
.*/dist/.*
|
||||
.*/test.js
|
||||
.*/printj.js
|
||||
|
||||
.*/bits/.*
|
||||
.*/ctest/.*
|
||||
@ -13,6 +12,8 @@
|
||||
.*/demo/browser.js
|
||||
.*/shim.js
|
||||
|
||||
.*/printj.js
|
||||
|
||||
[include]
|
||||
printj.flow.js
|
||||
.*/bin/.*.njs
|
||||
|
4
Makefile
4
Makefile
@ -84,6 +84,10 @@ old-lint: $(TARGET) ## Run jshint and jscs checks
|
||||
@jscs lib/*.js
|
||||
if [ -e $(CLOSURE) ]; then java -jar $(CLOSURE) $(FLOWTARGET) --jscomp_warning=reportUnknownTypes >/dev/null; fi
|
||||
|
||||
.PHONY: tslint
|
||||
tslint: $(TARGET) ## Run typescript checks
|
||||
#@npm install dtslint typescript
|
||||
@npm run-script dtslint
|
||||
|
||||
.PHONY: flow
|
||||
flow: lint ## Run flow checker
|
||||
|
@ -33,11 +33,11 @@ function help() {
|
||||
}
|
||||
|
||||
function parse_arg(arg/*:string*/)/*:any*/ {
|
||||
var m = arg.substr(2), p/*:number*/;
|
||||
if(arg.charCodeAt(1) == 58) switch((p = arg.charCodeAt(0))) {
|
||||
case /*n*/ 110: return parseInt(m);
|
||||
var m = arg.substr(2), p/*:number*/ = 0;
|
||||
if(arg.charCodeAt(1) === 58) switch((p = arg.charCodeAt(0))) {
|
||||
case /*n*/ 110: return parseInt(m, 10);
|
||||
case /*f*/ 102: return parseFloat(m);
|
||||
case /*b*/ 98: return !(m.toUpperCase() == "FALSE" || m == "0");
|
||||
case /*b*/ 98: return !(m.toUpperCase() === "FALSE" || m === "0");
|
||||
case /*j*/ 106: return JSON.parse(m);
|
||||
case /*e*/ 101: return eval(m);
|
||||
case /*s*/ 115: return m;
|
||||
@ -56,7 +56,7 @@ for(var i = 2; i < argv.length; ++i) switch(argv[i]) {
|
||||
console.log(X.vsprintf(fmt, args));
|
||||
process.exit(0);
|
||||
|
||||
function dump(fmt) {
|
||||
function dump(fmt/*:string*/)/*:number*/ {
|
||||
if(!fmt) { console.error("printj: missing format argument"); return 1; }
|
||||
X._tokenize(fmt).forEach(function(x){console.log(x);});
|
||||
return 0;
|
||||
|
@ -2,9 +2,9 @@
|
||||
/* vim: set ts=2: */
|
||||
/*jshint sub:true, eqnull:true */
|
||||
/*exported PRINTJ */
|
||||
/*:: declare var DO_NOT_EXPORT_PRINTJ: any; */
|
||||
/*:: declare var define: any; */
|
||||
var PRINTJ/*:any*/;
|
||||
/*:: declare var DO_NOT_EXPORT_PRINTJ:?boolean; */
|
||||
/*:: declare function define(cb:()=>any):void; */
|
||||
var PRINTJ/*:PRINTJModule*/;
|
||||
(function (factory/*:(a:any)=>void*/)/*:void*/ {
|
||||
/*jshint ignore:start */
|
||||
if(typeof DO_NOT_EXPORT_PRINTJ === 'undefined') {
|
||||
@ -12,16 +12,16 @@ var PRINTJ/*:any*/;
|
||||
factory(exports);
|
||||
} else if ('function' === typeof define && define.amd) {
|
||||
define(function () {
|
||||
var module/*:any*/ = {};
|
||||
var module/*:PRINTJModule*/ = /*::(*/{}/*:: :any)*/;
|
||||
factory(module);
|
||||
return module;
|
||||
});
|
||||
} else {
|
||||
factory(PRINTJ = {});
|
||||
factory(PRINTJ = /*::(*/{}/*:: :any)*/);
|
||||
}
|
||||
} else {
|
||||
factory(PRINTJ = {});
|
||||
factory(PRINTJ = /*::(*/{}/*:: :any)*/);
|
||||
}
|
||||
/*jshint ignore:end */
|
||||
}(function(PRINTJ) {
|
||||
}(function(PRINTJ/*:PRINTJModule*/) {
|
||||
#include "01_version.js"
|
||||
|
@ -1 +1 @@
|
||||
PRINTJ.version = '1.0.0';
|
||||
PRINTJ.version = '1.0.1';
|
||||
|
@ -1,6 +1,6 @@
|
||||
#define isnan isNaN
|
||||
//#define PAD_(x,c) (x >= 0 ? new Array(((x)|0) + 1).join((c)) : "")
|
||||
var padstr = {
|
||||
var padstr/*:{[s:string]:string}*/ = {
|
||||
" ": " ",
|
||||
"0": "000000000000000000000000000000000",
|
||||
"7": "777777777777777777777777777777777",
|
||||
@ -37,7 +37,7 @@ function pads(x/*:number*/, c/*:string*/)/*:string*/ { return PAD_(x,c); }
|
||||
#error SIZEOF_WCHAR_T must be 1, 2, or 4
|
||||
#endif
|
||||
|
||||
#define CHAR_TO_STR(O,cc) cc &= MASK_CHAR; O = String.fromCharCode(cc);
|
||||
#define CHAR_TO_STR(O,cc) { cc &= MASK_CHAR; O = String.fromCharCode(cc); }
|
||||
|
||||
#if SIZEOF_SIZE_T > 4 /* TODO: negative ptrs? */
|
||||
#define CONV_SIZE_T(x) x = Math.abs(x);
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include "30_ctypes.js"
|
||||
#include "40_macros.js"
|
||||
/*:: declare var util:any; */
|
||||
/*:: declare var require: any; */
|
||||
/*:: var util = require('util'); */
|
||||
/*global process:true, util:true, require:true */
|
||||
if(typeof process !== 'undefined' && !!process.versions && !!process.versions.node) util=require("util");
|
||||
var u_inspect/*:(o:any)=>string*/ = (typeof util != 'undefined') ? util.inspect : JSON.stringify;
|
||||
@ -12,8 +11,8 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
var argidx/*:number*/ = 0, idx/*:number*/ = 0;
|
||||
var Vnum/*:number*/ = 0;
|
||||
var pad/*:string*/ = "";
|
||||
for(var i = 0; i < t.length; ++i) {
|
||||
var m/*:Array<any>*/ = t[i], c/*:number*/ = (m[0]/*:string*/).charCodeAt(0);
|
||||
for(var i/*:number*/ = 0; i < t.length; ++i) {
|
||||
var m/*:ParsedEntry*/ = t[i], c/*:number*/ = (m[0]/*:string*/).charCodeAt(0);
|
||||
/* m order: conv full param flags width prec length */
|
||||
|
||||
if(c === /*L*/ 76) { o.push(m[1]); continue; }
|
||||
@ -24,7 +23,7 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
|
||||
/* flags */
|
||||
var flags/*:string*/ = m[IDX_FLAGS]||"";
|
||||
var alt = flags.indexOf("#") > -1;
|
||||
var alt/*:boolean*/ = flags.indexOf("#") > -1;
|
||||
|
||||
/* position */
|
||||
if(m[IDX_POS]) argidx = parseInt(m[IDX_POS])-1;
|
||||
|
@ -15,7 +15,7 @@
|
||||
if(c == 67 || len.charCodeAt(0) === /*l*/ 108) WCHAR_TO_STR(O, cc)
|
||||
else CHAR_TO_STR(O, cc)
|
||||
break;
|
||||
case "string": O = arg.charAt(0); break;
|
||||
case "string": O = /*::(*/arg/*:: :string)*/.charAt(0); break;
|
||||
default: O = String(arg).charAt(0);
|
||||
}
|
||||
WIDTH(O, width, flags)
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
/* store length in the `len` key */
|
||||
case /*n*/ 110:
|
||||
if(arg) { arg.len=0; for(var oo = 0; oo < o.length; ++oo) arg.len += o[oo].length; }
|
||||
if(arg) { arg.len=0; for(var oo/*:number*/ = 0; oo < o.length; ++oo) arg.len += o[oo].length; }
|
||||
continue;
|
||||
|
||||
/* process error */
|
||||
|
@ -31,7 +31,7 @@
|
||||
} else {
|
||||
Vnum = (-Vnum) % 1e16;
|
||||
var d1/*:Array<number>*/ = [1,8,4,4,6,7,4,4,0,7,3,7,0,9,5,5,1,6,1,6];
|
||||
var di = d1.length - 1;
|
||||
var di/*:number*/ = d1.length - 1;
|
||||
while(Vnum > 0) {
|
||||
if((d1[di] -= (Vnum % 10)) < 0) { d1[di] += 10; d1[di-1]--; }
|
||||
--di; Vnum = Math.floor(Vnum / 10);
|
||||
|
@ -1,7 +1,7 @@
|
||||
Vnum = Number(arg);
|
||||
if(arg === null) Vnum = 0/0;
|
||||
if(len == "L") bytes = 12;
|
||||
var isf = isFinite(Vnum);
|
||||
var isf/*:boolean*/ = isFinite(Vnum);
|
||||
if(!isf) { /* Infinity or NaN */
|
||||
if(Vnum < 0) O = "-";
|
||||
else if(flags.indexOf("+") > -1) O = "+";
|
||||
@ -94,7 +94,7 @@
|
||||
O = Vnum.toString(16);
|
||||
if(O.length > 1) {
|
||||
if(O.length > prec+2 && O.charCodeAt(prec+2) >= 56) {
|
||||
var _f = O.charCodeAt(0) == 102;
|
||||
var _f/*:boolean*/ = O.charCodeAt(0) == 102;
|
||||
O = (Vnum + 8 * Math.pow(16, -prec-1)).toString(16);
|
||||
if(_f && O.charCodeAt(0) == 49) E += 4;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
function vsprintf(fmt/*:string*/, args/*:Array<any>*/) { return doit(tokenize(fmt), args); }
|
||||
function vsprintf(fmt/*:string*/, args/*:Args*/)/*:string*/ { return doit(tokenize(fmt), args); }
|
||||
|
||||
function sprintf()/*:string*/ {
|
||||
function sprintf(/*:: ...argz*/)/*:string*/ {
|
||||
var args/*:Array<any>*/ = new Array(arguments.length - 1);
|
||||
for(var i = 0; i < args.length; ++i) args[i] = arguments[i+1];
|
||||
for(var i/*:number*/ = 0; i < args.length; ++i) args[i] = arguments[i+1];
|
||||
return doit(tokenize(arguments[0]), args);
|
||||
}
|
||||
|
12
bits/flow.js
12
bits/flow.js
@ -1,12 +1,14 @@
|
||||
/*::
|
||||
type ParsedFmt = Array<Array<any>>;
|
||||
type ParsedEntry = Array<string>;
|
||||
type ParsedFmt = Array<ParsedEntry>;
|
||||
type Args = Array<any>;
|
||||
declare module "exit-on-epipe" { };
|
||||
declare class PRINTJModule {
|
||||
sprintf(fmt:string, ...args:any):string;
|
||||
vsprintf(fmt:string, args:Args):string;
|
||||
_doit(t:ParsedFmt, args:Args):string;
|
||||
_tokenize(fmt:string):ParsedFmt;
|
||||
version:string;
|
||||
sprintf:(fmt:string, ...args:any)=>string;
|
||||
vsprintf:(fmt:string, args:Args)=>string;
|
||||
_doit:(t:ParsedFmt, args:Args)=>string;
|
||||
_tokenize:(fmt:string)=>ParsedFmt;
|
||||
};
|
||||
declare module "./" { declare var exports:PRINTJModule };
|
||||
declare module "../" { declare var exports:PRINTJModule };
|
||||
|
@ -23,7 +23,7 @@ var PRINTJ;
|
||||
/*jshint ignore:end */
|
||||
}(function(PRINTJ) {
|
||||
|
||||
PRINTJ.version = '1.0.0';
|
||||
PRINTJ.version = '1.0.1';
|
||||
|
||||
function tokenize(fmt) {
|
||||
var out = [];
|
||||
@ -216,7 +216,7 @@ function doit(t, args) {
|
||||
case "number":
|
||||
var cc = arg;
|
||||
if(c == 67 || len.charCodeAt(0) === /*l*/ 108) { cc &= 0xFFFFFFFF; O = String.fromCharCode( cc); }
|
||||
else cc &= 0xFF; O = String.fromCharCode( cc);
|
||||
else { cc &= 0xFF; O = String.fromCharCode( cc); }
|
||||
break;
|
||||
case "string": O = arg.charAt(0); break;
|
||||
default: O = String(arg).charAt(0);
|
||||
|
4
dist/printj.js
vendored
4
dist/printj.js
vendored
@ -23,7 +23,7 @@ var PRINTJ;
|
||||
/*jshint ignore:end */
|
||||
}(function(PRINTJ) {
|
||||
|
||||
PRINTJ.version = '1.0.0';
|
||||
PRINTJ.version = '1.0.1';
|
||||
|
||||
function tokenize(fmt) {
|
||||
var out = [];
|
||||
@ -216,7 +216,7 @@ function doit(t, args) {
|
||||
case "number":
|
||||
var cc = arg;
|
||||
if(c == 67 || len.charCodeAt(0) === /*l*/ 108) { cc &= 0xFFFFFFFF; O = String.fromCharCode( cc); }
|
||||
else cc &= 0xFF; O = String.fromCharCode( cc);
|
||||
else { cc &= 0xFF; O = String.fromCharCode( cc); }
|
||||
break;
|
||||
case "string": O = arg.charAt(0); break;
|
||||
default: O = String(arg).charAt(0);
|
||||
|
2
dist/printj.min.js
vendored
2
dist/printj.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/printj.min.map
vendored
2
dist/printj.min.map
vendored
File diff suppressed because one or more lines are too long
13
package.json
13
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "printj",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"author": "sheetjs",
|
||||
"description": "Pure-JS printf",
|
||||
"keywords": [ "printf", "sprintf", "format", "string" ],
|
||||
@ -8,22 +8,27 @@
|
||||
"printj": "./bin/printj.njs"
|
||||
},
|
||||
"main": "./printj",
|
||||
"types": "types",
|
||||
"dependencies": {
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha":"",
|
||||
"uglify-js":""
|
||||
"@sheetjs/uglify-js":"",
|
||||
"@types/node":"",
|
||||
"dtslint": "^0.1.2",
|
||||
"typescript": "2.2.0"
|
||||
},
|
||||
"repository": { "type":"git", "url":"git://github.com/SheetJS/printj.git" },
|
||||
"scripts": {
|
||||
"test": "make test"
|
||||
"test": "make test",
|
||||
"dtslint": "dtslint types"
|
||||
},
|
||||
"config": {
|
||||
"blanket": {
|
||||
"pattern": "printj.js"
|
||||
}
|
||||
},
|
||||
"homepage": "https://oss.sheetjs.com/printj/",
|
||||
"homepage": "http://sheetjs.com/opensource",
|
||||
"files": ["printj.js", "bin/printj.njs", "LICENSE", "README.md", "dist/*.js", "dist/*.map", "dist/LICENSE"],
|
||||
"bugs": { "url": "https://github.com/SheetJS/printj/issues" },
|
||||
"license": "Apache-2.0",
|
||||
|
@ -2,9 +2,9 @@
|
||||
/* vim: set ts=2: */
|
||||
/*jshint sub:true, eqnull:true */
|
||||
/*exported PRINTJ */
|
||||
/*:: declare var DO_NOT_EXPORT_PRINTJ: any; */
|
||||
/*:: declare var define: any; */
|
||||
var PRINTJ/*:any*/;
|
||||
/*:: declare var DO_NOT_EXPORT_PRINTJ:?boolean; */
|
||||
/*:: declare function define(cb:()=>any):void; */
|
||||
var PRINTJ/*:PRINTJModule*/;
|
||||
(function (factory/*:(a:any)=>void*/)/*:void*/ {
|
||||
/*jshint ignore:start */
|
||||
if(typeof DO_NOT_EXPORT_PRINTJ === 'undefined') {
|
||||
@ -12,20 +12,20 @@ var PRINTJ/*:any*/;
|
||||
factory(exports);
|
||||
} else if ('function' === typeof define && define.amd) {
|
||||
define(function () {
|
||||
var module/*:any*/ = {};
|
||||
var module/*:PRINTJModule*/ = /*::(*/{}/*:: :any)*/;
|
||||
factory(module);
|
||||
return module;
|
||||
});
|
||||
} else {
|
||||
factory(PRINTJ = {});
|
||||
factory(PRINTJ = /*::(*/{}/*:: :any)*/);
|
||||
}
|
||||
} else {
|
||||
factory(PRINTJ = {});
|
||||
factory(PRINTJ = /*::(*/{}/*:: :any)*/);
|
||||
}
|
||||
/*jshint ignore:end */
|
||||
}(function(PRINTJ) {
|
||||
}(function(PRINTJ/*:PRINTJModule*/) {
|
||||
|
||||
PRINTJ.version = '1.0.0';
|
||||
PRINTJ.version = '1.0.1';
|
||||
|
||||
function tokenize(fmt/*:string*/)/*:ParsedFmt*/ {
|
||||
var out/*:ParsedFmt*/ = [];
|
||||
@ -150,15 +150,14 @@ function tokenize(fmt/*:string*/)/*:ParsedFmt*/ {
|
||||
}
|
||||
|
||||
//#define PAD_(x,c) (x >= 0 ? new Array(((x)|0) + 1).join((c)) : "")
|
||||
var padstr = {
|
||||
var padstr/*:{[s:string]:string}*/ = {
|
||||
" ": " ",
|
||||
"0": "000000000000000000000000000000000",
|
||||
"7": "777777777777777777777777777777777",
|
||||
"f": "fffffffffffffffffffffffffffffffff"
|
||||
};
|
||||
|
||||
/*:: declare var util:any; */
|
||||
/*:: declare var require: any; */
|
||||
/*:: var util = require('util'); */
|
||||
/*global process:true, util:true, require:true */
|
||||
if(typeof process !== 'undefined' && !!process.versions && !!process.versions.node) util=require("util");
|
||||
var u_inspect/*:(o:any)=>string*/ = (typeof util != 'undefined') ? util.inspect : JSON.stringify;
|
||||
@ -168,8 +167,8 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
var argidx/*:number*/ = 0, idx/*:number*/ = 0;
|
||||
var Vnum/*:number*/ = 0;
|
||||
var pad/*:string*/ = "";
|
||||
for(var i = 0; i < t.length; ++i) {
|
||||
var m/*:Array<any>*/ = t[i], c/*:number*/ = (m[0]/*:string*/).charCodeAt(0);
|
||||
for(var i/*:number*/ = 0; i < t.length; ++i) {
|
||||
var m/*:ParsedEntry*/ = t[i], c/*:number*/ = (m[0]/*:string*/).charCodeAt(0);
|
||||
/* m order: conv full param flags width prec length */
|
||||
|
||||
if(c === /*L*/ 76) { o.push(m[1]); continue; }
|
||||
@ -180,7 +179,7 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
|
||||
/* flags */
|
||||
var flags/*:string*/ = m[3]||"";
|
||||
var alt = flags.indexOf("#") > -1;
|
||||
var alt/*:boolean*/ = flags.indexOf("#") > -1;
|
||||
|
||||
/* position */
|
||||
if(m[2]) argidx = parseInt(m[2])-1;
|
||||
@ -220,9 +219,9 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
case "number":
|
||||
var cc/*:number*/ = arg;
|
||||
if(c == 67 || len.charCodeAt(0) === /*l*/ 108) { cc &= 0xFFFFFFFF; O = String.fromCharCode( cc); }
|
||||
else cc &= 0xFF; O = String.fromCharCode( cc);
|
||||
else { cc &= 0xFF; O = String.fromCharCode( cc); }
|
||||
break;
|
||||
case "string": O = arg.charAt(0); break;
|
||||
case "string": O = /*::(*/arg/*:: :string)*/.charAt(0); break;
|
||||
default: O = String(arg).charAt(0);
|
||||
}
|
||||
if( width > O.length || - width > O.length) { if(( flags.indexOf("-") == -1 || width < 0) && flags.indexOf("0") != -1) { pad = ( width - O.length >= 0 ? padstr["0"].substr(0, width - O.length) : ""); O = pad + O; } else { pad = ( width - O.length >= 0 ? padstr[" "].substr(0, width - O.length) : ""); O = flags.indexOf("-") > -1 ? O + pad : pad + O; } }
|
||||
@ -286,7 +285,7 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
|
||||
/* store length in the `len` key */
|
||||
case /*n*/ 110:
|
||||
if(arg) { arg.len=0; for(var oo = 0; oo < o.length; ++oo) arg.len += o[oo].length; }
|
||||
if(arg) { arg.len=0; for(var oo/*:number*/ = 0; oo < o.length; ++oo) arg.len += o[oo].length; }
|
||||
continue;
|
||||
|
||||
/* process error */
|
||||
@ -386,7 +385,7 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
} else {
|
||||
Vnum = (-Vnum) % 1e16;
|
||||
var d1/*:Array<number>*/ = [1,8,4,4,6,7,4,4,0,7,3,7,0,9,5,5,1,6,1,6];
|
||||
var di = d1.length - 1;
|
||||
var di/*:number*/ = d1.length - 1;
|
||||
while(Vnum > 0) {
|
||||
if((d1[di] -= (Vnum % 10)) < 0) { d1[di] += 10; d1[di-1]--; }
|
||||
--di; Vnum = Math.floor(Vnum / 10);
|
||||
@ -446,7 +445,7 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
Vnum = Number(arg);
|
||||
if(arg === null) Vnum = 0/0;
|
||||
if(len == "L") bytes = 12;
|
||||
var isf = isFinite(Vnum);
|
||||
var isf/*:boolean*/ = isFinite(Vnum);
|
||||
if(!isf) { /* Infinity or NaN */
|
||||
if(Vnum < 0) O = "-";
|
||||
else if(flags.indexOf("+") > -1) O = "+";
|
||||
@ -538,7 +537,7 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
O = Vnum.toString(16);
|
||||
if(O.length > 1) {
|
||||
if(O.length > prec+2 && O.charCodeAt(prec+2) >= 56) {
|
||||
var _f = O.charCodeAt(0) == 102;
|
||||
var _f/*:boolean*/ = O.charCodeAt(0) == 102;
|
||||
O = (Vnum + 8 * Math.pow(16, -prec-1)).toString(16);
|
||||
if(_f && O.charCodeAt(0) == 49) E += 4;
|
||||
}
|
||||
@ -588,11 +587,11 @@ function doit(t/*:ParsedFmt*/, args/*:Array<any>*/)/*:string*/ {
|
||||
return o.join("");
|
||||
}
|
||||
|
||||
function vsprintf(fmt/*:string*/, args/*:Array<any>*/) { return doit(tokenize(fmt), args); }
|
||||
function vsprintf(fmt/*:string*/, args/*:Args*/)/*:string*/ { return doit(tokenize(fmt), args); }
|
||||
|
||||
function sprintf()/*:string*/ {
|
||||
function sprintf(/*:: ...argz*/)/*:string*/ {
|
||||
var args/*:Array<any>*/ = new Array(arguments.length - 1);
|
||||
for(var i = 0; i < args.length; ++i) args[i] = arguments[i+1];
|
||||
for(var i/*:number*/ = 0; i < args.length; ++i) args[i] = arguments[i+1];
|
||||
return doit(tokenize(arguments[0]), args);
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ var PRINTJ;
|
||||
/*jshint ignore:end */
|
||||
}(function(PRINTJ) {
|
||||
|
||||
PRINTJ.version = '1.0.0';
|
||||
PRINTJ.version = '1.0.1';
|
||||
|
||||
function tokenize(fmt) {
|
||||
var out = [];
|
||||
@ -216,7 +216,7 @@ function doit(t, args) {
|
||||
case "number":
|
||||
var cc = arg;
|
||||
if(c == 67 || len.charCodeAt(0) === /*l*/ 108) { cc &= 0xFFFFFFFF; O = String.fromCharCode( cc); }
|
||||
else cc &= 0xFF; O = String.fromCharCode( cc);
|
||||
else { cc &= 0xFF; O = String.fromCharCode( cc); }
|
||||
break;
|
||||
case "string": O = arg.charAt(0); break;
|
||||
default: O = String(arg).charAt(0);
|
||||
|
53
types/bin_printj.ts
Normal file
53
types/bin_printj.ts
Normal file
@ -0,0 +1,53 @@
|
||||
/* printj.ts (C) 2016-present SheetJS -- http://sheetjs.com */
|
||||
/* vim: set ts=2 ft=typescript: */
|
||||
/*jshint node:true, evil:true */
|
||||
import X = require("printj");
|
||||
let argv = ["n:1","a","e:null","f:3.4", "b:true", "e:1+1"];
|
||||
|
||||
function help() {
|
||||
[
|
||||
"usage: printj [options] <format> [args...]",
|
||||
"",
|
||||
"Options:",
|
||||
" -h, --help output usage information",
|
||||
"",
|
||||
"Arguments are treated as strings unless prefaced by a type indicator:",
|
||||
" n:<integer> call parseInt (ex. n:3 -> 3)",
|
||||
" f:<float> call parseFloat (ex. f:3.1 -> 3.1)",
|
||||
' b:<boolean> false when lowercase value is "FALSE" or "0", else true',
|
||||
" s:<string> interpret as string (ex. s:n:3 -> \"n:3\")",
|
||||
" j:<JSON> interpret as an object using JSON.parse",
|
||||
" e:<JS> evaluate argument (ex. e:1+1 -> 2, e:\"1\"+1 -> \"11\")",
|
||||
"",
|
||||
"samples:",
|
||||
" $ printj '|%02hhx%d|' n:50 e:0x7B # |32123|",
|
||||
" $ printj '|%2$d + %3$d is %1$d|' e:1+2 n:1 n:2 # |1 + 2 is 3| ",
|
||||
" $ printj '|%s is %s|' s:1+2 e:1+2 # |1+2 is 3|",
|
||||
" $ printj '|%c %c|' s:69 n:69 # |6 E|",
|
||||
"",
|
||||
"Support email: dev@sheetjs.com",
|
||||
"Web Demo: http://oss.sheetjs.com/printj/"
|
||||
].forEach(function(l) { console.log(l); });
|
||||
return 0;
|
||||
}
|
||||
|
||||
function parse_arg(arg: string): any {
|
||||
let m: string = arg.substr(2), p: number = 0;
|
||||
if(arg.charCodeAt(1) === 58) switch((p = arg.charCodeAt(0))) {
|
||||
case /*n*/ 110: return parseInt(m, 10);
|
||||
case /*f*/ 102: return parseFloat(m);
|
||||
case /*b*/ 98: return !(m.toUpperCase() === "FALSE" || m === "0");
|
||||
case /*j*/ 106: return JSON.parse(m);
|
||||
case /*s*/ 115: return m;
|
||||
}
|
||||
return arg;
|
||||
}
|
||||
|
||||
let args: any[] = [];
|
||||
let fmt = "", n = 0;
|
||||
for(let i = 2; i < argv.length; ++i) switch(argv[i]) {
|
||||
case "--help": case "-h": break;
|
||||
default: if(n++ === 0) fmt = argv[i]; else args.push(parse_arg(argv[i]));
|
||||
}
|
||||
|
||||
console.log(X.vsprintf(fmt, args));
|
11
types/index.d.ts
vendored
Normal file
11
types/index.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
/* index.d.ts (C) 2015-present SheetJS */
|
||||
// TypeScript Version: 2.2
|
||||
|
||||
/** Version string */
|
||||
export const version: string;
|
||||
|
||||
/** Generate formatted string from format and subsequent arguments */
|
||||
export function sprintf(fmt: string, ...args: any[]): string;
|
||||
|
||||
/** Generate formatted string from format and array of variables */
|
||||
export function vsprintf(fmt: string, args: any[]): string;
|
4
types/printj-test.ts
Normal file
4
types/printj-test.ts
Normal file
@ -0,0 +1,4 @@
|
||||
import { vsprintf, sprintf } from 'printj';
|
||||
|
||||
const t1: string = sprintf("%02hhx", 123);
|
||||
const t2: string = vsprintf("%02hhx %d", [123, 213]);
|
14
types/tsconfig.json
Normal file
14
types/tsconfig.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [ "es5", "dom" ],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": false,
|
||||
"baseUrl": ".",
|
||||
"paths": { "printj": ["."] },
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
}
|
||||
}
|
11
types/tslint.json
Normal file
11
types/tslint.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"extends": "dtslint/dtslint.json",
|
||||
"rules": {
|
||||
"whitespace": false,
|
||||
"no-sparse-arrays": false,
|
||||
"only-arrow-functions": false,
|
||||
"no-consecutive-blank-lines": false,
|
||||
"prefer-conditional-expression": false,
|
||||
"one-variable-per-declaration": false
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user