zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

message.ex (986B)


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