jc-marked
Version:
Markdown AST (Abstract syntax tree) parser based on finite-state machine (FSM).
1 lines • 2.13 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.type=exports.print=exports.len=exports.int=exports.str=void 0;const exceptions_1=require("./exceptions"),is_1=require("./is"),reg_1=require("./reg"),str=e=>{var t;return void 0===e?"undefined":null===e?"null":(0,is_1.isBoolean)(e)?e?"true":"false":(0,is_1.isObject)(e)&&Reflect.has(e,"__str__")?(t=Reflect.get(e,"__str__"),(0,is_1.isFunction)(t)?t.apply(e):t.toString()):e.toString()},int=(exports.str=str,e=>{if((0,is_1.isNumber)(e))return isNaN(e)?0:parseInt(e.toString(),10);if(null==e)return 0;if((0,is_1.isBoolean)(e))return!0===e?1:0;if((0,is_1.isString)(e)){if(reg_1.regDecimalNumber.test(e))return parseInt(e.match(/^-?[1-9]\d*.?/)[0].replace(".",""),10);if(reg_1.regOctalNumber.test(e))return parseInt(e.match(/^-?0\d*.?/)[0].replace(".",""),8);if(reg_1.regHexadecimalNumber.test(e))return parseInt(e.match(/^-?0x\\?[1-9,A-F]*/)[0],16)}else if((0,is_1.isObject)(e)){if(Reflect.has(e,"__num__")){var t=Reflect.get(e,"__num__");if((0,is_1.isFunction)(t))return t.call(e);if((0,is_1.isNumber)(t))return parseInt(t.toString())}throw(0,exceptions_1.ValueError)(`Invalid param "${e}", which can't be transformed into a int number`)}return parseInt(e)}),len=(exports.int=int,e=>{if((0,is_1.isString)(e)||(0,is_1.isArray)(e))return e.length;if((0,is_1.isObject)(e))if(Reflect.has(e,"length")){var t=e.length;if((0,is_1.isNumber)(t))return t}else if(Reflect.has(e,"__len__")){t=Reflect.get(e,"__len__");if((0,is_1.isNumber)(t))return parseInt(t.toString());if((0,is_1.isFunction)(t)){t=t.call(e);if((0,is_1.isNumber)(t))return t}}return 0}),type=(exports.len=len,e=>null===e?"null":void 0===e?"undefined":(0,is_1.isArray)(e)?"array":(0,is_1.isString)(e)?"string":(0,is_1.isFunction)(e)?"function":(0,is_1.isNumber)(e)?"number":(0,is_1.isMap)(e)?"map":(0,is_1.isSet)(e)?"set":(0,is_1.isRegExp)(e)?"regExp":(0,is_1.isObject)(e)?"object":Object.prototype.toString.call(e).match(/^\[object\s.*\]$/)[0].replace(/^\[object\s/,"").replace(/\]$/,""));function print(...e){let t="";e.forEach(e=>{t+=str(e)}),console.log(t)}exports.type=type,exports.print=print;