Module:documentation/sortkey

Hello, you have come here looking for the meaning of the word Module:documentation/sortkey. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:documentation/sortkey, but we will also tell you about its etymology, its characteristics and you will know how to say Module:documentation/sortkey in singular and plural. Everything you need to know about the word Module:documentation/sortkey you have here. The definition of the word Module:documentation/sortkey will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:documentation/sortkey, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.


local export = {}

local function fake_frame(args, parent_args)
	return {
		args = args,
		getParent = function()
			return {
				args = parent_args,
			}
		end
	}
end

function get_by_code(code)
	return require "Module:languages".getByCode(code, nil, false, true) or require "Module:scripts".getByCode(code)
end

local function get_code_from_title_without_namespace(title_without_namespace)
	local prefix = title_without_namespace:match("^(.+)%-sortkey%f")
	if not prefix then
		error("Base segment of title should end in -sortkey: " .. title_without_namespace)
	end
	local code = prefix
	local lang_or_family_or_script = get_by_code(code)
	
	return code, lang_or_family_or_script
end

function export.documentation(title_without_namespace, explanation)
	local code, lang_or_family_or_script = get_code_from_title_without_namespace(title_without_namespace)
	return export.documentation_from_code(code, explanation, title_without_namespace)
end

function export.documentation_from_code(code, explanation, title_without_namespace)
	local lang_or_family_or_script = get_by_code(code)
	
	if not lang_or_family_or_script then
		return "Language code in page name (<code>" .. code .. "</code>) not recognized."
	end
	
	local category_name = lang_or_family_or_script:getCategoryName()
	
	local sortkey_input
	if lang_or_family_or_script:hasType("script") then
		sortkey_input = "text in the ]"
	elseif lang_or_family_or_script:hasType("family") then
		sortkey_input = "text in one of the ]"
	else -- language
		sortkey_input = "] text"
	end
	
	return "This module will sort " .. sortkey_input
		.. (explanation and " " .. explanation or "")
		.. ". "
		.. require "Module:documentation".sortkeyModuleLangList({args = {  = title_without_namespace:gsub("/documentation$", "") }})
		.. [=[

The module should preferably not be called directly from templates or other modules.
To use it from a template, use <code>{{]}}</code>.
Within a module, use ].

For testcases, see =] .. title_without_namespace:gsub("/documentation$", "") .. ].

== Functions ==
; <code>makeSortKey(text, lang, sc)</code>
: Generates a sortkey for a given piece of <code>text</code> written in the script specified by the code <code>sc</code>, and language specified by the code <code>lang</code>.
: When the sort fails, returns <code>nil</code>.]=]
		.. require "Module:module categorization".categorize(fake_frame({
				is_template = "1",
				 = title_without_namespace,
			}, {
				 = code,
			}))
end

function export.documentation_template(frame)
	-- Parameters to {{sortkey module documentation}}:
	-- |code|description
	-- Ignore code because we get it from the page name.
	local pagename = mw.title.getCurrentTitle().text
	local args = frame:getParent().args
	if args and get_code_from_title_without_namespace(pagename) ~= args then
		-- ]
		require("Module:debug").track("sortkey/input different from title")
	end
	if args then
		return export.documentation_from_code(args, args, pagename)
	else
		return export.documentation(pagename, args)
	end
end

return export