From ae425765efb4e04c8549bc1e2240240ddb6fa9cd Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sun, 5 Jan 2025 16:24:55 +0000 Subject: [PATCH] Flatten logic of obsidian parser --- lib/obsidian/parser.ex | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/lib/obsidian/parser.ex b/lib/obsidian/parser.ex index 9be73e43..b2bce53d 100644 --- a/lib/obsidian/parser.ex +++ b/lib/obsidian/parser.ex @@ -2,7 +2,7 @@ defmodule Obsidian.Parser do alias Obsidian.Entry def from_file_contents(file_contents) do - with {:ok, [meta]} <- parse_frontmatter(file_contents) do + with {:ok, meta} <- parse_frontmatter(file_contents) do {:ok, %Entry{ type: parse_subtype(meta["subType"]), @@ -15,25 +15,20 @@ defmodule Obsidian.Parser do end end - defp parse_frontmatter(file_contents) do - case file_contents do - "---\n" <> rest -> - case String.split(rest, "\n---\n") do - [frontmatter, _] -> - case YamlElixir.read_all_from_string(frontmatter) do - {:ok, meta} -> {:ok, meta} - {:error, _} -> {:error, "Invalid frontmatter"} - end - - _ -> - {:error, "Invalid frontmatter"} - end - + defp parse_frontmatter("---\n" <> rest) do + with [frontmatter, _] <- String.split(rest, "\n---\n"), + {:ok, [meta]} <- YamlElixir.read_all_from_string(frontmatter) do + {:ok, meta} + else _ -> {:error, "Invalid frontmatter"} end end + defp parse_frontmatter(_file_contents) do + {:error, "Invalid frontmatter"} + end + defp parse_subtype("Album"), do: :album defp parse_subtype("ep"), do: :ep defp parse_subtype("Live"), do: :live