# ------------------------------------------------------------------------------- # Author: Keith Brings # Copyright (C) 2018 Noizu Labs, Inc. All rights reserved. # ------------------------------------------------------------------------------- defprotocol Noizu.ElixirCore.OSP do @doc """ Extract an option from user provided values """ def extract(this, acc) end # end defprotocol Noizu.ERP defprotocol Noizu.ElixirCore.SlimOptions do @fallback_to_any true def slim(entity) end defimpl Noizu.ElixirCore.SlimOptions, for: Map do def slim(entity) do Enum.map(entity, fn {k, v} -> {k, Noizu.ElixirCore.SlimOptions.slim(v)} end) end end defimpl Noizu.ElixirCore.SlimOptions, for: Any do def slim(entity) do entity end end defimpl Noizu.ElixirCore.SlimOptions, for: [ Noizu.ElixirCore.OptionSettings, Noizu.ElixirCore.OptionValue, Noizu.ElixirCore.OptionList ] do def slim(entity) do Noizu.ElixirCore.SlimOptions.slim(Map.from_struct(entity)) end end