From f5017b0dc1edf7c95a2696744e7a996594cde6a7 Mon Sep 17 00:00:00 2001 From: Ashkan Kiani Date: Sat, 19 Oct 2019 12:35:55 -0700 Subject: Refactor (#19) - Refactor and clean up old code. - Fix the trie printing (it's perfect now :o) - Add the ability to search from a starting point. This can help avoid allocations. - Avoid an allocation in longest_prefix. - Refactor and allow configuring of color_name_parser setup --- test/print-trie.lua | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 test/print-trie.lua (limited to 'test/print-trie.lua') diff --git a/test/print-trie.lua b/test/print-trie.lua new file mode 100644 index 0000000..2ec1322 --- /dev/null +++ b/test/print-trie.lua @@ -0,0 +1,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")) -- cgit v1.2.3-70-g09d2