summaryrefslogtreecommitdiffhomepage
path: root/services/blog/nuldoc-src/slide/parse.ts
diff options
context:
space:
mode:
Diffstat (limited to 'services/blog/nuldoc-src/slide/parse.ts')
-rw-r--r--services/blog/nuldoc-src/slide/parse.ts20
1 files changed, 20 insertions, 0 deletions
diff --git a/services/blog/nuldoc-src/slide/parse.ts b/services/blog/nuldoc-src/slide/parse.ts
new file mode 100644
index 00000000..c5a89675
--- /dev/null
+++ b/services/blog/nuldoc-src/slide/parse.ts
@@ -0,0 +1,20 @@
+import { parse as parseToml } from "@std/toml";
+import {
+ createNewSlideFromMetadata,
+ Slide,
+ SlideMetadataSchema,
+} from "./slide.ts";
+
+export async function parseSlideFile(filePath: string): Promise<Slide> {
+ try {
+ const root = SlideMetadataSchema.parse(
+ parseToml(await Deno.readTextFile(filePath)),
+ );
+ return createNewSlideFromMetadata(root, filePath);
+ } catch (e) {
+ if (e instanceof Error) {
+ e.message = `${e.message} in ${filePath}`;
+ }
+ throw e;
+ }
+}