Module:Languages/javascript-interface

From The Languages of David J. Peterson
Revision as of 21:11, 4 September 2023 by Djp (talk | contribs) (Created page with "local export = {} function string.starts(String,Start) return string.sub(String,1,string.len(Start))==Start end --used by translation adder for language autocompletion fu...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Documentation for this module may be created at Module:Languages/javascript-interface/documentation

local export = {}

function string.starts(String,Start)
   return string.sub(String,1,string.len(Start))==Start
end

--used by translation adder for language autocompletion
function export.GetSingleLanguageByLanguagePrefix(prefix)
	local byName = require("Module:languages/by name")
	local found_code = nil
	local found_name = nil
	for name, code in pairs(byName) do
		if (string.starts(name, prefix.args[1])) then 
			if found_code == nil or found_code == code then
				found_code = code
				found_name = name
			else
				return ""
			end
		end
	end
	if found_code ~= nil then
		return found_code..":"..found_name
	else 
		return "" end
end

--translation adder may prefetch all data and do processing on client side
function export.GetAllData()
	local byName = require("Module:languages/by name")
	return require("Module:JSON").toJSON(byName)
end

function export.AllCanonicalToCode()
	local byCanonicalName = require("Module:languages/canonical names")
	return require("Module:JSON").toJSON(byCanonicalName)
end

function export.AllCodeToCanonical()
	local codeToName = require("Module:languages/code to canonical name")
	return require("Module:JSON").toJSON(codeToName)
end

function export.AllLangcodeToScripts()
	local resultData = {}
	for code, data in pairs(require("Module:languages/data/all")) do
		if type(data[4]) == "string" then
			data[4] = mw.text.split(data[4], "%s*,%s*")
		end
		resultData[code] = data[4]
	end
	return require("Module:JSON").toJSON(resultData)
end

function export.GetLanguagesWithAutomaticTransliteration()
	local resultData = {}
	for code, data in pairs(require("Module:languages/data/all")) do
		if data.override_translit == true then
			resultData[code] = true
		end
	end
	return require("Module:JSON").toJSON(resultData)
end

function export.AllWiktionaryCodeToWikimediaCode()
	local resultData = {}
	for code, data in pairs(require("Module:languages/data/all")) do
		if type(data.wikimedia_codes) == "string" then
			data.wikimedia_codes = mw.text.split(data.wikimedia_codes, "%s*,%s*")
		end
		resultData[code] = data.wikimedia_codes
	end
	return require("Module:JSON").toJSON(resultData)
end

return export