philomena/lib/textile/token_coalescer.ex
2019-11-03 19:35:04 -05:00

15 lines
No EOL
356 B
Elixir

defmodule Textile.TokenCoalescer do
# The lexer, as a practical concern, does not coalesce runs of
# character tokens. This fixes that.
def coalesce(tokens) do
tokens
|> Enum.chunk_by(&is_number(&1))
|> Enum.flat_map(fn
[t | _rest] = str when is_number(t) ->
[text: List.to_string(str)]
t ->
t
)
end
end