summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAsko Nõmm <asko@nmm.ee>2025-01-12 15:19:15 +0200
committerAsko Nõmm <asko@nmm.ee>2025-01-12 15:19:15 +0200
commit6a075eac5ee63d735691545af90ac6d3f3f7ff8f (patch)
treef74625aede60252fdca71f3c7cd8791703018180 /src
parent1a908bb7aae140b5c556c6b4e903b803820429dc (diff)
Bump
Diffstat (limited to 'src')
-rw-r--r--src/flatmatter.ts17
-rw-r--r--src/serializers/to_object.test.ts58
-rw-r--r--src/utils.ts23
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;