From 968b3424cb1b2fe8686f4c0b9fe3538f047f8679 Mon Sep 17 00:00:00 2001 From: Guilian Date: Sat, 18 Jan 2025 15:45:11 +0100 Subject: [PATCH] feat: class attribute support --- html.lua | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/html.lua b/html.lua index 0c4f274..87f61d0 100644 --- a/html.lua +++ b/html.lua @@ -350,18 +350,21 @@ function M.parse_tokens_into_document( TOKENS ) end - local value = nil if raw_value == "" or raw_value == nil then value = nil - --elseif raw_value:find("%S+%s+%S+") then - -- value = {} - -- print(raw_value) - -- for word in raw_value:gmatch("%S+") do - -- table.insert( value, word ) - -- end else value = trim(raw_value) + + if name == "class" then + local classes = {} + + for class in value:gmatch("%S+") do + table.insert( classes, class ) + end + + value = classes + end end current_doc_element.attributes[name] = value @@ -464,8 +467,16 @@ function M.print_document(node, indent) -- Print attributes if any if next(node.attributes) ~= nil then for attr, value in pairs(node.attributes) do - --print(indent_str .. " " .. attr .. " = " .. tostring(value)) - node_name = node_name .. " " .. attr .. "=\"" .. tostring(value) .. "\"" + if type(value) == "table" then + node_name = node_name .. " " .. attr .. "=\"" + for i, val in ipairs( value ) do + if i > 1 then node_name = node_name .. " " end + node_name = node_name .. tostring(val) + end + node_name = node_name .. "\"" + else + node_name = node_name .. " " .. attr .. "=\"" .. tostring(value) .. "\"" + end end end