Packages

Earmark is a pure-Elixir Markdown converter. It is intended to be used as a library (just call Earmark.as_html), but can also be used as a command-line tool (run mix escript.build first). Output generation is pluggable.

Retired package: Deprecated - Earmark is no longer maintained. Migrate to a replacement, for example MDEx (https://hex.pm/packages/mdex).
Security advisory: This version has known vulnerabilities. View advisories

Current section

Files

Jump to
earmark lib earmark_parser helpers leex_helpers.ex
Raw

lib/earmark_parser/helpers/leex_helpers.ex

defmodule EarmarkParser.Helpers.LeexHelpers do
@moduledoc false
@doc """
Allows to lex an Elixir string with a leex lexer and returns
the tokens as needed for a yecc parser.
"""
def lex text, with: lexer do
case text
|> String.to_charlist()
|> lexer.string() do
{:ok, tokens, _} -> tokens
end
end
def tokenize line, with: lexer do
{:ok, tokens, _} =
line
|> to_charlist()
|> lexer.string()
elixirize_tokens(tokens,[])
|> Enum.reverse()
end
defp elixirize_tokens(tokens, rest)
defp elixirize_tokens([], result), do: result
defp elixirize_tokens([{token, _, text}|rest], result), do: elixirize_tokens(rest, [{token,to_string(text)}|result])
end
# SPDX-License-Identifier: Apache-2.0