How to implement your own :timer.sleep in Elixir Setting up Brotli on Nginx or Phoenix

Juice - Reduce in memory data structures using a lightweight query language

https://github.com/rupurt/juice

Juice can collect and reject string or atom keys from an Elixir Map or List.

Given the map

iex> fruit_basket = %{
    apples: {
        granny_smith: 10,
        golden_delicious: 3
    },
    "oranges" => 5,
    plums: 6,
    "mangos" => 2,
    recipients: [:steph, "michael", :lebron, "charles"]
}

Return everything with a wildcard *

iex> Juice.squeeze(fruit_basket, "*") == %{
    apples: {
        granny_smith: 10,
        golden_delicious: 3
    },
    "oranges" => 5,
    plums: 6,
    "mangos" => 2,
    recipients: [:steph, "michael", :lebron, "charles"]
}

Remove plums and mangos

iex> Juice.squeeze(fruit_basket, "* -plums -mangos") == %{
    apples: {
        granny_smith: 10,
        golden_delicious: 3
    },
    "oranges" => 5,
    recipients: [:steph, "michael", :lebron, "charles"]
}

Only collect granny_smith apples and oranges with nested . notation

iex> Juice.squeeze(fruit_basket, "apples.granny_smith oranges") == %{
    apples: {
        granny_smith: 10,
    },
    "oranges" => 5
}

Collect plums and mangos for charles

iex> Juice.squeeze(fruit_basket, "plums mangos recipients.charles") == %{
    plums: 6,
    "mangos" => 2,
    recipients: ["charles"]
}