aboutsummaryrefslogtreecommitdiff
path: root/test/print-trie.lua
blob: 7575b5c32d20720a3c7a5bfec409a94048066f70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
-- TODO this is kinda shitty
local function dirname(str, sep)
  sep = sep or "/"
  return str:match("(.*" .. sep .. ")")
end

local script_dir = dirname(arg[0])
package.path = script_dir .. "/../lua/?.lua;" .. package.path

local Trie = require "trie"
local nvim = require "nvim"

local function print_color_trie()
  local tohex = bit.tohex
  local min, max = math.min, math.max

  local COLOR_NAME_SETTINGS = {
    lowercase = false,
    strip_digits = true,
  }
  local COLOR_MAP = {}
  local COLOR_TRIE = Trie()
  for k, v in pairs(nvim.get_color_map()) do
    if not (COLOR_NAME_SETTINGS.strip_digits and k:match "%d+$") then
      COLOR_NAME_MINLEN = COLOR_NAME_MINLEN and min(#k, COLOR_NAME_MINLEN) or #k
      COLOR_NAME_MAXLEN = COLOR_NAME_MAXLEN and max(#k, COLOR_NAME_MAXLEN) or #k
      COLOR_MAP[k] = tohex(v, 6)
      COLOR_TRIE:insert(k)
      if COLOR_NAME_SETTINGS.lowercase then
        local lowercase = k:lower()
        COLOR_MAP[lowercase] = tohex(v, 6)
        COLOR_TRIE:insert(lowercase)
      end
    end
  end
  print(COLOR_TRIE)
end

local trie = Trie {
  "cat",
  "car",
  "celtic",
  "carb",
  "carb0",
  "CART0",
  "CaRT0",
  "Cart0",
  "931",
  "191",
  "121",
  "cardio",
  "call",
  "calcium",
  "calciur",
  "carry",
  "dog",
  "catdog",
}

print(trie)
print("catdo", trie:longest_prefix "catdo")
print("catastrophic", trie:longest_prefix "catastrophic")