diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/flatmatter.ts | 17 | ||||
| -rw-r--r-- | src/serializers/to_object.test.ts | 58 | ||||
| -rw-r--r-- | src/utils.ts | 23 |
3 files changed, 59 insertions, 39 deletions
diff --git a/src/flatmatter.ts b/src/flatmatter.ts index 84c8b7b..4bd141d 100644 --- a/src/flatmatter.ts +++ b/src/flatmatter.ts @@ -70,8 +70,7 @@ export default class FlatMatter { this.parsedConfig = { ...this.parsedConfig, ...config }; } - private validateLineConformance(line: string): void { - } + private validateLineConformance(line: string): void {} private validateLineHasKeyVal(line: string): ConformanceResult { return { @@ -167,9 +166,7 @@ export default class FlatMatter { if (this.isFunctionValue(value)) { return { value: null, - computeActions: [ - this.parseFunctionValue(value), - ], + computeActions: [this.parseFunctionValue(value)], }; } @@ -200,7 +197,7 @@ export default class FlatMatter { return parseInt(value); } - return value.substring(1, value.length - 1); + return trimChar(value, '"'); } /** @@ -220,8 +217,7 @@ export default class FlatMatter { }; } - const fnName = trimChar(value, ["(", ")"]).split(" ")[0] - .trim(); + const fnName = trimChar(value, ["(", ")"]).split(" ")[0].trim(); const fnArgs = this.parseFunctionValueArgs(value); return { @@ -264,7 +260,10 @@ export default class FlatMatter { * @returns {unknown[]} */ private parseFunctionValueArgs(value: string): unknown[] { - const parts = value.substring(1, value.length - 1).split(" ").slice(1); + const parts = value + .substring(1, value.length - 1) + .split(" ") + .slice(1); if (!parts.length) { return []; diff --git a/src/serializers/to_object.test.ts b/src/serializers/to_object.test.ts index d3d2255..98b165a 100644 --- a/src/serializers/to_object.test.ts +++ b/src/serializers/to_object.test.ts @@ -3,35 +3,39 @@ import FlatMatter from "../flatmatter.ts"; import ToObject from "./to_object.ts"; Deno.test("Single-level configuration", () => { - const fm = new FlatMatter("a: true\nb: false\nc: 1\nd: 12.5\nf: \"some string\"") + const fm = new FlatMatter( + 'a: true\nb: false\nc: 1\nd: 12.5\nf: "some string"', + ); - assertEquals(fm.serialize(new ToObject), { - a: true, - b: false, - c: 1, - d: 12.5, - f: "some string" - }); + assertEquals(fm.serialize(new ToObject()), { + a: true, + b: false, + c: 1, + d: 12.5, + f: "some string", + }); }); Deno.test("Two-level configuration", () => { - const fm = new FlatMatter("a.a: true\nb.b: false\nc.c: 1\nd.d: 12.5\nf.f: \"some string\"") + const fm = new FlatMatter( + 'a.a: true\nb.b: false\nc.c: 1\nd.d: 12.5\nf.f: "some string"', + ); - assertEquals(fm.serialize(new ToObject), { - a: { - a: true, - }, - b: { - b: false, - }, - c: { - c: 1 - }, - d: { - d: 12.5 - }, - f: { - f: "some string" - } - }); -})
\ No newline at end of file + assertEquals(fm.serialize(new ToObject()), { + a: { + a: true, + }, + b: { + b: false, + }, + c: { + c: 1, + }, + d: { + d: 12.5, + }, + f: { + f: "some string", + }, + }); +}); diff --git a/src/utils.ts b/src/utils.ts index 444e9a0..56995fc 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,6 +1,23 @@ -export function trimChar(input: string, chars: string | string[]): string { - if (typeof chars === "string") { - return input; +/** + * Trims char(s) from both sides of the given input string. + + * @param {string} input + * @param {string | string[]} char + * @returns {string} + */ +export function trimChar(input: string, char: string | string[]): string { + if (typeof char === "string") { + char = [char]; + } + + for (const c of char) { + if (input.charAt(0) === c) { + input = input.substring(1); + } + + if (input.charAt(input.length - 1) === c) { + input = input.substring(0, input.length - 1); + } } return input; |
