From fcbaa1bd52b354ab83311308d960faa9dd0c085d Mon Sep 17 00:00:00 2001 From: Endeavorance Date: Thu, 4 Jul 2024 17:39:01 -0400 Subject: [PATCH] Add frontmatter helpers --- bun.lockb | Bin 0 -> 70272 bytes package.json | 2 +- src/document.ts | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100755 bun.lockb diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..fedd9bd3304414ee7a575f75387e58915c60eeaf GIT binary patch literal 70272 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 IZ}`9e1Dn-!Jpcdz literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 9eca2ba..ed81f97 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@foundry/hammerstone", - "version": "0.3.0", + "version": "0.3.1", "description": "Load and manipulate Obsidian vault data", "type": "module", "exports": "./bin/hammerstone.js", diff --git a/src/document.ts b/src/document.ts index 4d599d0..890e146 100644 --- a/src/document.ts +++ b/src/document.ts @@ -177,6 +177,54 @@ export default class MarkdownDocument { return this; } + /** + * Retrieves the value of a frontmatter key as a string. + * If the key is not found, returns the provided default value. + * Throws an error if the value is not a string. + * + * @param key - The key of the frontmatter value to retrieve. + * @param defaultValue - The default value to return if the key is not found. + * @returns The value of the frontmatter key as a string. + * @throws Error if the frontmatter key is not a string. + */ + getFrontmatterString(key: string, defaultValue: string): string { + const val = this._frontmatter[key]; + + if (val === undefined) { + return defaultValue; + } + + if (typeof val !== "string") { + throw new Error(`Frontmatter key is not a string: ${key}`); + } + + return val; + } + + /** + * Retrieves an array value from the frontmatter object based on the provided key. + * If the value is not found, it returns the provided defaultValue. + * If the value is found but is not an array, it throws an error. + * + * @param key - The key to retrieve the array value from the frontmatter object. + * @param defaultValue - The default value to return if the key is not found in the frontmatter object. + * @returns The array value associated with the provided key, or the defaultValue if the key is not found. + * @throws Error if the value associated with the key is found but is not an array. + */ + getFrontmatterArray(key: string, defaultValue: string[]): string[] { + const val = this._frontmatter[key]; + + if (val === undefined) { + return defaultValue; + } + + if (!Array.isArray(val)) { + throw new Error(`Frontmatter key is not an array: ${key}`); + } + + return val; + } + /** The markdown portion of the file (without frontmatter) */ get markdown() { return this._markdown;