aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkianonymus <anonymus.aki@gmail.com>2022-09-22 21:23:11 +0530
committerAkianonymus <anonymus.aki@gmail.com>2022-09-22 21:24:11 +0530
commit20fd0091ef4d873fb1ce8b2bbb278664514cac7a (patch)
treeeeb0d826e8f3588111e846258354aec1ffa2885c
parenttailwind: Fix error on lsp method | Fix #22 (diff)
Fix: Error when - in hex color | #24
-rw-r--r--lua/colorizer/color.lua5
-rw-r--r--lua/colorizer/utils.lua10
-rw-r--r--test/expectation.txt1
3 files changed, 11 insertions, 5 deletions
diff --git a/lua/colorizer/color.lua b/lua/colorizer/color.lua
index 711c8e4..9cfac2a 100644
--- a/lua/colorizer/color.lua
+++ b/lua/colorizer/color.lua
@@ -11,6 +11,7 @@ local Trie = require "colorizer.trie"
local utils = require "colorizer.utils"
local byte_is_alphanumeric = utils.byte_is_alphanumeric
local byte_is_hex = utils.byte_is_hex
+local byte_is_valid_colorchar = utils.byte_is_valid_colorchar
local parse_hex = utils.parse_hex
local percent_or_hex = utils.percent_or_hex
@@ -256,7 +257,7 @@ function color.name_parser(line, i, opts)
return
end
- if i > 1 and byte_is_alphanumeric(line:byte(i - 1)) then
+ if i > 1 and byte_is_valid_colorchar(line:byte(i - 1)) then
return
end
@@ -266,7 +267,7 @@ function color.name_parser(line, i, opts)
-- Take the Blue out of Blueberry
-- Line end or non-letter.
local next_byte_index = i + #prefix
- if #line >= next_byte_index and byte_is_alphanumeric(line:byte(next_byte_index)) then
+ if #line >= next_byte_index and byte_is_valid_colorchar(line:byte(next_byte_index)) then
return
end
return #prefix, COLOR_MAP[prefix]
diff --git a/lua/colorizer/utils.lua b/lua/colorizer/utils.lua
index c83c32d..22fa6eb 100644
--- a/lua/colorizer/utils.lua
+++ b/lua/colorizer/utils.lua
@@ -28,7 +28,6 @@ do
-- do not run the loop multiple times
local b = string.byte
local byte_values = { ["0"] = b "0", ["9"] = b "9", ["a"] = b "a", ["f"] = b "f", ["z"] = b "z" }
- local extra_char = { [b "-"] = true }
for i = 0, 255 do
local v = 0
@@ -45,8 +44,6 @@ do
v = bor(v, lshift(1, 2))
v = bor(v, lshift(lowercase - byte_values["a"] + 10, 4))
end
- elseif extra_char[i] then
- v = i
end
BYTE_CATEGORY[i] = v
end
@@ -67,6 +64,13 @@ function utils.byte_is_hex(byte)
return band(BYTE_CATEGORY[byte], CATEGORY_HEX) ~= 0
end
+---Obvious.
+---@param byte number
+---@return boolean
+function utils.byte_is_valid_colorchar(byte)
+ return utils.byte_is_alphanumeric(byte) or byte == ("-"):byte()
+end
+
--- Get last modified time of a file
---@param path string: file path
---@return number|nil: modified time
diff --git a/test/expectation.txt b/test/expectation.txt
index 7ae3484..d04bf92 100644
--- a/test/expectation.txt
+++ b/test/expectation.txt
@@ -26,6 +26,7 @@ hsla(360,50%,50%,1.0000000000000001)
]]
--[[ FAIL
+#---
#F0FF
#F0FFF
#F0FFF0F