Module:Sandbox/Erutuon/charinsert names

local p = {}

local function get_all_codepoints(str) local codepoint_set = {} for codepoint in mw.ustring.gcodepoint(str) do		codepoint_set[codepoint] = true end return require "Module:TableTools".keysToList(codepoint_set) end

function p.JSON_character_names(str) local codepoint_list = get_all_codepoints(str) local Unicode = require "Module:Unicode data" local JSON = {} local len = 0 for i, codepoint in ipairs(codepoint_list) do local key_and_value = '"' .. codepoint .. '":"' .. Unicode.lookup_name(codepoint) .. '"' local added_len = #key_and_value + 1 -- for comma if len + added_len > 79 then key_and_value = '\n' .. key_and_value len = 0 end len = len + added_len table.insert(JSON, key_and_value) end return "{" .. table.concat(JSON, ",") .. "}" end

-- copied from wikt:Module:debug function p.highlight(content, options) if type(content) == "table" then options = content options = { lang = options.lang or "lua", inline = options.inline and true }		return function(content) return mw.getCurrentFrame:extensionTag{ name = "syntaxhighlight", content = content, args = options }		end else return mw.getCurrentFrame:extensionTag{ name = "syntaxhighlight", content = content, args = { lang = options and options.lang or "lua", inline = options and options.inline and true or nil }		}	end end

-- Usage: -- -- ↓ -- {"97":"LATIN SMALL LETTER A","98":"LATIN SMALL LETTER B", -- "99":"LATIN SMALL LETTER C"} function p.highlighted_character_names(frame) local chars = frame.args[1] if not chars or chars == "" then error("Supply characters in parameter 1") end return p.highlight(p.JSON_character_names(chars)) end

function p.charinsert_char_names local content = mw.title.new("MediaWiki:Gadget-charinsert-core.js"):getContent local charinsert = content:match("charinsert: (%b{})") if not charinsert then return "Could not find charinsert" end return p.highlight(p.JSON_character_names(charinsert)) end

return p