Current section
8 Versions
Jump to
Current section
8 Versions
Compare versions
4
files changed
+15
additions
-14
deletions
| @@ -2,7 +2,13 @@ | |
| 2 2 | |
| 3 3 | ### to_param_string/1 |
| 4 4 | Convert atom_map to param_string |
| 5 | - `%{key1: value1, key2: value2}` -> `?key1=value1&key2=value2&` |
| 5 | + ```elixir:to_param_string/1 |
| 6 | + %{key1: value1, key2: value2} |
| 7 | + ``` |
| 8 | + ↓ |
| 9 | + ``` |
| 10 | + "?key1=value1&key2=value2&" |
| 11 | + ``` |
| 6 12 | |
| 7 13 | ### atomize |
| 8 14 | Convert string_map to atom_map recursively. |
| @@ -11,7 +17,9 @@ Convert string_map to atom_map recursively. | |
| 11 17 | "key1" => "value1", |
| 12 18 | "child" => %{"child_key1" => "child_value2"} |
| 13 19 | } |
| 14 | - -> |
| 20 | + ``` |
| 21 | + ↓ |
| 22 | + ``` |
| 15 23 | %{ |
| 16 24 | key1: "value1", |
| 17 25 | child: %{child_key1: => "child_value2"} |
| @@ -27,7 +35,7 @@ by adding `map_converter` to your list of dependencies in `mix.exs`: | |
| 27 35 | ```elixir |
| 28 36 | def deps do |
| 29 37 | [ |
| 30 | - {:map_converter, "~> 0.1.0"} |
| 38 | + {:lx, "~> 1.0.1"} |
| 31 39 | ] |
| 32 40 | end |
| 33 41 | ``` |
| @@ -9,4 +9,4 @@ | |
| 9 9 | {<<"links">>,[{<<"GitHub">>,<<"https://github.com/lavans/lx">>}]}. |
| 10 10 | {<<"name">>,<<"lx">>}. |
| 11 11 | {<<"requirements">>,[]}. |
| 12 | - {<<"version">>,<<"1.0.1">>}. |
| 12 | + {<<"version">>,<<"1.0.2">>}. |
| @@ -55,21 +55,14 @@ defmodule Lx.MapConverter do | |
| 55 55 | |
| 56 56 | # Remove :__struct__ & :__meta__ from any map. You can encode with Jason easily. |
| 57 57 | def remove_metadata(target) do |
| 58 | - is_struct = fn s -> is_map(s) && Map.has_key?(s, :__struct__) end |
| 59 58 | value = fn v -> if(is_map(v) || is_list(v), do: remove_metadata(v), else: v) end |
| 60 | - |
| 61 | - remove = fn x, key -> |
| 62 | - {_, result} = Map.pop(x, key) |
| 63 | - result |
| 64 | - end |
| 65 | - |
| 66 | - map = fn m -> if(is_struct.(m), do: Map.from_struct(m), else: m) |> remove.(:__meta__) end |
| 59 | + filter = fn m -> Enum.filter(m, fn {k, _} -> !String.match?(to_string(k), ~r/__.+__/) end) end |
| 67 60 | |
| 68 61 | case target do |
| 69 62 | nil -> nil |
| 70 63 | %DateTime{} = x -> DateTime.to_iso8601(x) |
| 71 64 | x when is_list(x) -> Enum.map(x, &remove_metadata(&1)) |
| 72 | - x when is_map(x) -> for {k, v} <- map.(x), into: %{}, do: {k, value.(v)} |
| 65 | + x when is_map(x) -> for {k, v} <- filter.(x), into: %{}, do: {k, value.(v)} |
| 73 66 | x -> x |
| 74 67 | end |
| 75 68 | end |
| @@ -4,7 +4,7 @@ defmodule Lx.MixProject do | |
| 4 4 | def project do |
| 5 5 | [ |
| 6 6 | app: :lx, |
| 7 | - version: "1.0.1", |
| 7 | + version: "1.0.2", |
| 8 8 | elixir: "~> 1.9", |
| 9 9 | description: "Lavans eliXir utilities", |
| 10 10 | package: [ |