Lua error at line 77: attempt to index local 'content' (a nil value).



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:
-- {{#invoke:Sandbox/Erutuon/charinsert_names|highlighted_character_names|abc}}
-- ↓
-- {"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