@slightning/anything-to-string
Version:
Converts anything to a string.
57 lines (56 loc) • 1.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MaximumFunctionRule = exports.MajorFunctionRule = exports.LesserFunctionRule = exports.MinimumFunctionRule = void 0;
const object_1 = require("./object");
function isFunction(data) {
return typeof data == "function";
}
class MinimumFunctionRule {
constructor() {
this.test = isFunction;
}
toString(data, __config, __context) {
return data.name == "" ? "[Function]" : `[Function: ${data.name}]`;
}
}
exports.MinimumFunctionRule = MinimumFunctionRule;
class LesserFunctionRule {
constructor() {
this.test = isFunction;
}
toString(data, __config) {
const functionString = Function.prototype.toString.call(data)
.replace(/[\s]+/g, " ");
if (functionString.length <= 64) {
return functionString;
}
const marchResult = functionString.match(/^((function[\s]*[\S]+?[\s]*\([\s\S]*?\)|([\S]+?|\([\s\S]*?\))[\s]*=>|class[\s]*[\S]+?)[\s]*\{[\s]*)[\s\S]*?([\s]*\}[\s]*)$/);
if (marchResult == null) {
return functionString;
}
return `${marchResult[1]}...${marchResult[4]}`;
}
}
exports.LesserFunctionRule = LesserFunctionRule;
class MajorFunctionRule {
constructor() {
this.test = isFunction;
}
toString(data, __config, __context) {
return Function.prototype.toString.call(data);
}
}
exports.MajorFunctionRule = MajorFunctionRule;
class MaximumFunctionRule {
constructor() {
this.test = isFunction;
}
prepare(data, config, context) {
new object_1.MaximumObjectRule().prepare(data, config, context);
}
toString(data, config, context) {
return Function.prototype.toString.call(data) + " " +
new object_1.MaximumObjectRule().toString(data, config, context);
}
}
exports.MaximumFunctionRule = MaximumFunctionRule;