Last active
September 22, 2022 14:08
-
-
Save mpugach/a04bf0ee6962b8edab43933e9075c577 to your computer and use it in GitHub Desktop.
Revisions
-
mpugach revised this gist
Sep 22, 2022 . 1 changed file with 2 additions and 29 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -6,40 +6,13 @@ defmodule DeepCompare do end def call([element_a | rest_of_a], [element_b | rest_of_b]) do call(element_a, element_b) and call(rest_of_a, rest_of_b) end def call(payload_a, payload_b) do result = payload_a === payload_b unless result, do: IO.inspect({payload_a, payload_b}, label: "Difference") result end -
mpugach created this gist
Sep 22, 2022 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,46 @@ defmodule DeepCompare do def call(payload_a, payload_b) when is_map(payload_a) and is_map(payload_b) do Enum.reduce(payload_a, true, fn {k, v}, acc -> acc and call(v, payload_b[k]) end) end def call([element_a | rest_of_a], [element_b | rest_of_b]) do result = if (is_list(element_a) and is_list(element_b)) or (is_map(element_a) and is_map(element_b)) do call(element_a, element_b) else sub_result = element_a === element_b unless sub_result, do: IO.inspect({element_a, element_b}, label: "Compare List") sub_result end result and call(rest_of_a, rest_of_b) end def call([], []) do true end def call([], payload_b) do IO.inspect({[], payload_b}, label: "Compare List") false end def call(payload_a, []) do IO.inspect({payload_a, []}, label: "Compare List") false end def call(payload_a, payload_b) do result = payload_a === payload_b unless result, do: IO.inspect({payload_a, payload_b}, label: "Compare RAW") result end end