@slightning/anything-to-string
Version:
Converts anything to a string.
83 lines (82 loc) • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MaximumStringRule = exports.MajorStringRule = exports.LesserStringRule = exports.MinimumStringRule = void 0;
const object_1 = require("./object");
function isString(data) {
return typeof data == "object" && data instanceof String;
}
function excludeChar(data, key) {
if (typeof key == "string") {
key = parseInt(key);
}
if (!Number.isInteger(key)) {
return false;
}
return typeof key == "number" && 0 <= key && key < data.length;
}
class MinimumStringRule {
constructor() {
this.test = isString;
}
toString(data, __config, __context) {
return JSON.stringify(data);
}
}
exports.MinimumStringRule = MinimumStringRule;
class LesserStringRule {
constructor() {
this.test = isString;
}
toString(data, __config, __context) {
return `String(${JSON.stringify(data)})`;
}
}
exports.LesserStringRule = LesserStringRule;
class MajorStringRule {
constructor() {
this.test = isString;
}
prepare(data, config, context) {
new object_1.MajorObjectRule({
defaultConfig: {
exclude(key) {
return excludeChar(data, key);
}
}
}).prepare(data, config, context);
}
toString(data, config, context) {
return `String(${JSON.stringify(data)}) ${new object_1.MajorObjectRule({
defaultConfig: {
exclude(key) {
return excludeChar(data, key);
}
}
}).toString(data, config, context)}`;
}
}
exports.MajorStringRule = MajorStringRule;
class MaximumStringRule {
constructor() {
this.test = isString;
}
prepare(data, config, context) {
new object_1.MaximumObjectRule({
defaultConfig: {
exclude(key) {
return excludeChar(data, key);
}
}
}).prepare(data, config, context);
}
toString(data, config, context) {
return `String(${JSON.stringify(data)}) ${new object_1.MaximumObjectRule({
defaultConfig: {
exclude(key) {
return excludeChar(data, key);
}
}
}).toString(data, config, context)}`;
}
}
exports.MaximumStringRule = MaximumStringRule;