• Operand
  • some 1 had 2.

gram:op

> ./lib/op/issue.ex

Lenses
(coming soon!)


defmodule Op.Issue do
  defstruct [
    :key,
    :composer,
    :name,
    :addresses,
    :body,
    :labels,
    :day,
    :summary,
    :public,
    :sequence,
    :id,
  ]

  # @enforce_keys [
  #   :key,
  #   :composer,
  #   :body,
  #   :labels,
  #   :day,
  #   :id,
  # ]
    def address, do: "priv/issue/*.md"

  def read(node = [_,_,_]), do: read(node, 0)
  def read([clock, key, node], sequence) do
    {:ok, angles, body} = node |> YamlFrontMatter.parse_file
    #"issue/2024-06-21.nushell.macro.md"

    links = for address <- (angles["addresses"] || []) do case address do
      %{ "hub" => %{ "org" => o, "base" => b, "number" => n } } ->
        "* [//ghub:#{o}/#{b}##{n}](https://github.com/#{o}/#{b}/issues/#{n})"
      _ -> nil
    end end # |> IO.inspect(label: "links")

    _measures = for address <- (angles["addresses"] || []) do case address do
      %{ "hub" => %{ org: o, base: b, number: n } } ->
          ["github.com", (nu "http get 'https://api.github.com/#{o}/#{b}/issues/#{n}'")]
      _ -> []
    end end

    struct!(__MODULE__, %{
      key: key, id: key, sequence: sequence,
      day: clock, body: body, public: true, summary: (links |> Enum.join("\n")),
    } |> Map.merge(
      for {key, shape} <- angles, into: %{}, do: { key |> String.to_atom, shape }
    ))
  end

  def nu _code do
    [ null: nil ]
  end
end