chiya/lib/chiya_web/outline.ex

22 lines
483 B
Elixir
Raw Normal View History

2023-07-09 19:59:47 +02:00
defmodule ChiyaWeb.Outline do
@outline_regex ~r/\#{1,6}\s.+/
@heading_regex ~r/^(#+)\s(.+)$/
def get(markdown) do
headings =
@outline_regex
|> Regex.scan(markdown, capture: :all)
Enum.chunk_by(headings, fn h -> nil end)
end
def level(heading) do
Regex.scan(@heading_regex, heading)
|> Enum.map(fn [_, level, heading] ->
[level_from_string(level), heading]
end)
end
defp level_from_string(string), do: String.length(string)
end