[{"name":"Diff","comment":" Compares two list and returns how they have changed.\nEach function internally uses Wu's [O(NP) algorithm](http://myerslab.mpi-cbg.de/wp-content/uploads/2014/06/np_diff.pdf).\n\n\n# Types\n\n@docs Change\n\n\n# Diffing\n\n@docs diff, diffLines, diffWith\n\n@docs diffLinesWith, DiffOptions, defaultOptions, ignoreLeadingWhitespace, equalIf, similarIf\n\n","unions":[{"name":"Change","comment":" This describes how each line has changed and also contains its value.\n","args":["similar","a"],"cases":[["Added",["a"]],["Removed",["a"]],["Similar",["a","a","similar"]],["NoChange",["a"]]]},{"name":"DiffOptions","comment":" Options for diffing multiline strings.\n","args":[],"cases":[]}],"aliases":[],"values":[{"name":"defaultOptions","comment":" Default comparison options.\n","type":"Diff.DiffOptions"},{"name":"diff","comment":" Compares general lists.\n\n    diff [ 1, 3 ] [ 2, 3 ]\n    --> [ Removed 1, Added 2, NoChange 3 ]\n\nThis will never produce `Similar`, so you can use `never` in that branch.\n\n    diff a b\n        |> List.map\n            (\\change ->\n                case change of\n                    Diff.Added _ ->\n                        1\n\n                    Diff.Removed _ ->\n                        -1\n\n                    Diff.NoChange _ ->\n                        0\n\n                    Diff.Similar _ _ ever ->\n                        never ever\n            )\n\n","type":"List.List a -> List.List a -> List.List (Diff.Change Basics.Never a)"},{"name":"diffLines","comment":" Compares two text. Considers two lines similar if they are equivalent ignoring spaces.\n\nGiving the following text\n\n    a =\n        \"\"\"aaa\n    bbb\n    ddd\"\"\"\n\n    b =\n        \"\"\"zzz\n    aaa\n    ccc\n    ddd\"\"\"\n\nresults in\n\n    [ Added \"zzz\"\n    , NoChange \"aaa\"\n    , Removed \"bbb\"\n    , Added \"ccc\"\n    , NoChange \"ddd\"\n    ]\n\n.\n\n","type":"String.String -> String.String -> List.List (Diff.Change () String.String)"},{"name":"diffLinesWith","comment":" Calculate the diff between two multiline strings.\n","type":"Diff.DiffOptions -> String.String -> String.String -> List.List (Diff.Change (List.List (Diff.Change Basics.Never Char.Char)) String.String)"},{"name":"diffWith","comment":" Compares general lists. Allows specifying when two elements are similar.\n\n    diff (\\l r -> if abs (l - r) < 1 then Just () else Nothing) [ 1, 3 ] [ 2, 3 ]\n    --> [ Similar 1 2 (), NoChange 3 ]\n\n","type":"(a -> a -> Maybe.Maybe similar) -> List.List a -> List.List a -> List.List (Diff.Change similar a)"},{"name":"equalIf","comment":" Configure when to consider two lines equal.\n\nAs an example you can use `\\l r -> String.trim l == String.trim r` to ignore whitespace around lines.\n\n","type":"(String.String -> String.String -> Basics.Bool) -> Diff.DiffOptions -> Diff.DiffOptions"},{"name":"ignoreLeadingWhitespace","comment":" Ignore leading whitespace when comparing multiline strings.\n\n    diffLinesWith (defaultOptions |> ignoreLeadingWhitespace) \"a\" \"  a\"\n    --> [ NoChange \"a\" ]\n\nEquivalent to `equalIf (\\a b -> String.trimLeft a == String.trimLeft b)`.\n\n","type":"Diff.DiffOptions -> Diff.DiffOptions"},{"name":"similarIf","comment":" Configure when to consider two lines similar.\n","type":"(String.String -> String.String -> Basics.Bool) -> Diff.DiffOptions -> Diff.DiffOptions"}],"binops":[]},{"name":"Diff.ToString","comment":" Convert a diff to a string representation.\n\n@docs diffToString\n\n","unions":[],"aliases":[],"values":[{"name":"diffToString","comment":" Converts a diff between strings into a pretty-printed, optionally colored, formatted diff.\n\n`context` is the number of lines of context to show in the diff.\n\n","type":"{ context : Basics.Int, color : Basics.Bool } -> List.List (Diff.Change (List.List (Diff.Change Basics.Never Char.Char)) String.String) -> String.String"}],"binops":[]}]