defmodule Earmark.Parser.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