File: message.ex

package info (click to toggle)
elixir-earmark-parser 1.4.44-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,148 kB
  • sloc: makefile: 9
file content (42 lines) | stat: -rw-r--r-- 998 bytes parent folder | download
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