Current section

8 Versions

Jump to

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: [