[
    {
        "name": "Trie.Json.Encoder",
        "comment": " Json Encoder for Trie\n\n@docs encoder\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "encoder",
                "comment": " Encoder for Trie. ",
                "type": "(f -> Value) -> Trie f -> Value"
            }
        ],
        "binops": []
    },
    {
        "name": "Trie",
        "comment": " A Trie data structure.\n\nA trie is an ordered tree data structure that is used to store a dynamic\nset or associative array where the keys are usually strings.\n\nIn this implementation they key is a String.\n\nIn this implementation unique reference stored in the value\ndictionary for a given key is a String.\n\n## Data Model\n@docs Trie\n\n## Create\n@docs empty\n\n## Modify\n@docs add\n@docs remove\n\n## Query\n@docs has\n@docs get\n@docs getNode\n@docs valueCount\n@docs expand\n\n## Get data values from node\n@docs getValues\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [
            {
                "name": "Trie",
                "comment": " Trie data model. ",
                "args": [
                    "a"
                ],
                "type": "Trie a"
            }
        ],
        "values": [
            {
                "name": "add",
                "comment": " Add reference and values with key to Trie.\n\n```\nupdatedTrie = Trie.add (\"refid123\", (\"ValueStored\", 42.34)) \"someword\" Trie.empty\n```\n",
                "type": "( String, a ) -> String -> Trie a -> Trie a"
            },
            {
                "name": "empty",
                "comment": " An empty Trie ",
                "type": "Trie a"
            },
            {
                "name": "expand",
                "comment": " Find all the possible suffixes of the passed key using keys\ncurrently in the store.\n\nThis returns a List of all keys from starting key down.\nThe definition of a key that exists is one that has documents defined for it.\n\nGiven this setup\n```\n    trie1 = Trie.add (\"refid121\", 1) \"ab\" Trie.empty\n    trie2 = Trie.add (\"refid122\", 2) \"ac\" trie1\n    trie3 = Trie.add (\"refid123\", 3) \"acd\" trie2\n```\n\nThis\n```\n    Trie.expand \"a\" trie3\n```\nReturns\n```\n[\"ab\",\"acd\",\"ac\"]\n```\n\n\nThis\n```\n    Trie.expand \"ac\" trie3\n```\nReturns\n```\n[\"acd\",\"ac\"]\n```\n\n",
                "type": "String -> Trie a -> List String"
            },
            {
                "name": "get",
                "comment": " Return values for a key if found.\n",
                "type": "String -> Trie a -> Maybe (Dict String a)"
            },
            {
                "name": "getNode",
                "comment": " Return Trie node if found.\n\nThis will return Nothing.\n```\nmaybeNode = Trie.getNode \"for\" Trie.empty\n```\n\nThis will the node containing the values for the word \"someword\".\nIt will contains \"refid123\" in the dictionary point at  (\"ValueStored\", 42.34).\n```\ntrie1 = Trie.add (\"refid123\", (\"ValueStored\", 42.34)) \"someword\" Trie.empty\n\nmaybeNode = Trie.getNode \"someword\" trie1\n```\n\n",
                "type": "String -> Trie a -> Maybe (Trie a)"
            },
            {
                "name": "getValues",
                "comment": " Return the values stored if there are any\n",
                "type": "Trie a -> Maybe (Dict String a)"
            },
            {
                "name": "has",
                "comment": " Checks whether key is contained within a Trie.\n\nA key must have values for it be considered present in Trie.\n",
                "type": "String -> Trie a -> Bool"
            },
            {
                "name": "remove",
                "comment": " Remove values for key and reference from Trie.\n\nThis removes the reference from the correct values list.\nIf the key does not exist nothing changes.\nIf the ref is not found in the values for the key nothing changes.\n\nAn example but does not do anything.\n```\nupdatedTrie = Trie.remove \"for\" \"refid125\" Trie.empty\n```\n\n\nAdd something then remove it.\n```\ntrie1 = Trie.add (\"refid123\", (\"ValueStored\", 42.34)) \"someword\" Trie.empty\n\ntrie2 = Trie.remove \"someword\" \"refid123\" Trie.trie1\n```\n\n",
                "type": "String -> String -> Trie a -> Trie a"
            },
            {
                "name": "valueCount",
                "comment": " Return number of values stored at Trie location.\n",
                "type": "String -> Trie a -> Int"
            }
        ],
        "binops": []
    },
    {
        "name": "Trie.Json.Decoder",
        "comment": " Json Decoder for Trie\n\n@docs decoder\n\nCopyright (c) 2016 Robin Luiten\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "decoder",
                "comment": " A Trie Decoder ",
                "type": "Decoder a -> Decoder (Trie a)"
            }
        ],
        "binops": []
    }
]