# Pleroma: A lightweight social networking server # Copyright © 2017-2021 Pleroma Authors # 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