summaryrefslogtreecommitdiff
path: root/lib/pleroma/maps.ex
blob: 0d2e94248d079c0f45a868d2345589ca7405ff95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Pleroma: A lightweight social networking server
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Maps do
  def put_if_present(map, key, value, value_function \\ &{:ok, &1}) when is_map(map) do
    with false <- is_nil(key),
         false <- is_nil(value),
         {:ok, new_value} <- value_function.(value) do
      Map.put(map, key, new_value)
    else
      _ -> map
    end
  end
end