mirror of
https://github.com/norcalli/nvim-colorizer.lua.git
synced 2026-09-10 07:06:14 -04:00
- 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
63 lines
1.3 KiB
Lua
63 lines
1.3 KiB
Lua
-- 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"))
|