defmodule Gulib do @moduledoc """ Documentation for Gulib. """ def get(map_or_list, key), do: get(map_or_list, key, nil) def get(map, key, default) when is_map(map), do: Map.get(map, key, default) def get(list, key, default) when is_list(list), do: Keyword.get(list, key, default) def get(nil, _key, default), do: default #### Begin Core ############################# defdelegate blank?(value), to: Gulib.String, as: :blank? defdelegate present?(value), to: Gulib.String, as: :present? defdelegate to_atom(value), to: Gulib.Atom, as: :parse defdelegate to_s(value), to: Gulib.String, as: :parse defdelegate to_i(value), to: Gulib.Integer, as: :parse defdelegate to_f(value), to: Gulib.Float, as: :parse defdelegate to_boolean(value), to: Gulib.Boolean, as: :parse defdelegate html_escape(value), to: Gulib.String.HTML, as: :escape defdelegate html_unescape(value), to: Gulib.String.HTML, as: :unescape #### Begin Logger ############################ defdelegate log_debug(info \\ nil, opts \\ []), to: Gulib.Logger defdelegate log_info(info \\ nil, opts \\ []), to: Gulib.Logger defdelegate log_warn(info \\ nil, opts \\ []), to: Gulib.Logger defdelegate log_error(info \\ nil, opts \\ []), to: Gulib.Logger defdelegate log_inspect(info \\ nil, opts \\ []), to: Gulib.Logger def log(info \\ nil, opts \\ []) do case Logger.level do :debug -> log_debug(info, opts) :info -> log_info(info, opts) :warn -> log_warn(info, opts) :error -> log_error(info, opts) _ -> log_debug(info, opts) end end #### Begin List ############################# defdelegate sample(list), to: Gulib.List, as: :sample defdelegate sample(list, count), to: Gulib.List, as: :sample defdelegate compact(list \\ []), to: Gulib.List, as: :compact end