Flatten logic of obsidian parser
This commit is contained in:
+10
-15
@@ -2,7 +2,7 @@ defmodule Obsidian.Parser do
|
|||||||
alias Obsidian.Entry
|
alias Obsidian.Entry
|
||||||
|
|
||||||
def from_file_contents(file_contents) do
|
def from_file_contents(file_contents) do
|
||||||
with {:ok, [meta]} <- parse_frontmatter(file_contents) do
|
with {:ok, meta} <- parse_frontmatter(file_contents) do
|
||||||
{:ok,
|
{:ok,
|
||||||
%Entry{
|
%Entry{
|
||||||
type: parse_subtype(meta["subType"]),
|
type: parse_subtype(meta["subType"]),
|
||||||
@@ -15,25 +15,20 @@ defmodule Obsidian.Parser do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
defp parse_frontmatter(file_contents) do
|
defp parse_frontmatter("---\n" <> rest) do
|
||||||
case file_contents do
|
with [frontmatter, _] <- String.split(rest, "\n---\n"),
|
||||||
"---\n" <> rest ->
|
{:ok, [meta]} <- YamlElixir.read_all_from_string(frontmatter) do
|
||||||
case String.split(rest, "\n---\n") do
|
{:ok, meta}
|
||||||
[frontmatter, _] ->
|
else
|
||||||
case YamlElixir.read_all_from_string(frontmatter) do
|
|
||||||
{:ok, meta} -> {:ok, meta}
|
|
||||||
{:error, _} -> {:error, "Invalid frontmatter"}
|
|
||||||
end
|
|
||||||
|
|
||||||
_ ->
|
|
||||||
{:error, "Invalid frontmatter"}
|
|
||||||
end
|
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
{:error, "Invalid frontmatter"}
|
{:error, "Invalid frontmatter"}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp parse_frontmatter(_file_contents) do
|
||||||
|
{:error, "Invalid frontmatter"}
|
||||||
|
end
|
||||||
|
|
||||||
defp parse_subtype("Album"), do: :album
|
defp parse_subtype("Album"), do: :album
|
||||||
defp parse_subtype("ep"), do: :ep
|
defp parse_subtype("ep"), do: :ep
|
||||||
defp parse_subtype("Live"), do: :live
|
defp parse_subtype("Live"), do: :live
|
||||||
|
|||||||
Reference in New Issue
Block a user