1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
defmodule EarmarkParser.Message do
@moduledoc false
alias EarmarkParser.Context
alias EarmarkParser.Options
@type message_type :: :error | :warning
@type t :: {message_type, number, binary}
@type ts :: list(t)
@type container_type :: Options.t() | Context.t()
def add_messages(container, messages) do
Enum.reduce(messages, container, &add_message(&2, &1))
end
def add_message(container, message)
def add_message(options = %Options{}, message) do
%{options | messages: MapSet.put(options.messages, message)}
end
def add_message(context = %Context{}, message) do
%{context | options: add_message(context.options, message)}
end
def get_messages(container)
def get_messages(%Context{options: %{messages: messages}}) do
messages
end
@doc """
For final output
"""
def sort_messages(container) do
container
|> get_messages()
|> Enum.sort(fn {_, l, _}, {_, r, _} -> r >= l end)
end
end
# SPDX-License-Identifier: Apache-2.0
|