Packages
pow
1.0.39
1.0.39
1.0.38
1.0.37
1.0.36
1.0.35
1.0.34
1.0.33
1.0.32
1.0.31
1.0.30
1.0.29
1.0.28
1.0.27
1.0.26
1.0.25
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.1.0-rc.1
0.1.0-alpha.8
0.1.0-alpha.7
retired
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha
Robust user authentication solution
Current section
Files
Jump to
Current section
Files
lib/ex_doc/markdown.ex
if Code.ensure_loaded?(ExDoc.Markdown.Earmark) do
# Due to how relative links works in ExDoc, it's necessary for us to use a
# custom markdown parser to ensure that paths will work in generated docs.
#
# Ref: https://github.com/elixir-lang/ex_doc/issues/889
defmodule ExDoc.Pow.Markdown do
@moduledoc false
alias ExDoc.Markdown.Earmark
@behaviour ExDoc.Markdown
@impl ExDoc.Markdown
defdelegate available?, to: Earmark
@impl ExDoc.Markdown
def to_ast(text, opts) do
config = Mix.Project.config()[:docs]
source_url = config[:source_url] <> "/" <> source_ref_pattern(config[:source_url], config[:source_ref])
text
|> convert_relative_docs_url(source_url)
|> Earmark.to_ast(opts)
end
defp source_ref_pattern("https://github.com/" <> _rest, ref), do: "blob/#{ref}"
@markdown_regex ~r/(\[[\S ]*\]\()([\S]*?)(\.md|\.ex|\.exs)([\S]*?\))/
defp convert_relative_docs_url(text, source_url) do
Regex.replace(@markdown_regex, text, fn
_, arg1, "http" <> path, extension, arg3 -> "#{arg1}http#{path}#{extension}#{arg3}"
_, arg1, path, ".md", arg3 -> "#{arg1}#{convert_to_docs_html_url(path)}#{arg3}"
_, arg1, path, extension, arg3 when extension in [".ex", ".exs"] -> "#{arg1}#{convert_to_source_url(path, extension, source_url)}#{arg3}"
end)
end
defp convert_to_docs_html_url("../invitation/README"), do: "pow_invitation.html"
defp convert_to_docs_html_url("../email_confirmation/README"), do: "pow_email_confirmation.html"
defp convert_to_docs_html_url(path), do: path <> ".md"
defp convert_to_source_url("test/" <> path, extension, source_url), do: source_url <> "/test/" <> path <> extension
end
end