Current section
Files
Jump to
Current section
Files
lib/jetons/transforms.ex
defmodule Jetons.Transforms do
@moduledoc """
Applies type-based transforms to flattened token lists.
"""
def apply_transforms(tokens, _type_map, []), do: tokens
def apply_transforms(tokens, type_map, transforms) do
transform_map = Map.new(transforms)
Enum.map(tokens, &transform_token(&1, type_map, transform_map))
end
defp transform_token({path, value}, type_map, transform_map) do
with type when not is_nil(type) <- type_map[path],
fun when not is_nil(fun) <- transform_map[type] do
{path, fun.(value)}
else
_ -> {path, value}
end
end
end