text:
Module:Unicode data/doc

Usage
This module provides functions that access information on Unicode code points. The information is retrieved from data modules generated from the Unicode Character Database, or derived by rules given in the Unicode Specification. It and its submodules were copied from English Wiktionary and then modified; see there for more information.

code point
The code point is to be entered as hexadecimal value. For example, :
 * A9hex
 * 0xA9hex
 * 0x00A9hex
 * 0x00a9hex
 * →

Incorrect or unintended results:
 * 169dec:  →  ❌ —"U+00A9" © expected; but is read as 00A9hex (that is, 361dec
 * U+00A9  ❌ —do not use "U+" prefix
 * غ  ❌ —cannot enter a character as codepoint

"lookup" and "is" functions

 * lookup, is: Template-invokable functions that allow access to the functions starting with  and  .For most of the functions, add the code point in hexadecimal base as the next parameter. For ,  , and  , add character string. HTML character references in the text are decoded by the module into code points.
 * For example, →.

 * Internally, in modules, these functions are named using underscore: lookup_name ← lookup_name
 * For  © :  →

Data modules
The data used by functions in this module is found in submodules. Some are generated by AWK scripts shown at User:Kephir/Unicode on English Wiktionary, others by Lua scripts on the  subpages of the submodules.
 * Module:Unicode data/age: 'Age' of a character, that is: version introduction number.
 * Module:Unicode data/aliases: the formal name aliases for characters (from NameAliases.txt)
 * Module:Unicode data/blocks: the list of Unicode blocks (from Blocks.txt)
 * Module:Unicode data/category: data mapping characters to their General Category (from DerivedGeneralCategory.txt)
 * Module:Unicode data/combining: data mapping characters to their Combining Classes (from DerivedCombiningClass.txt)
 * Module:Unicode data/control: data for identifying characters that belong to the General Categories of Separator and Other (from DerivedGeneralCategory.txt)
 * Module:Unicode data/derived core properties:
 * Module:Unicode data/Hangul: data used to generate the names of Hangul syllables (from Jamo.txt)
 * Module:Unicode data/names/ * (000hh, .., 0E0hh; eg ../names/000): names
 * Module:Unicode data/scripts: data mapping characters to their Unicode script properties (from Scripts.txt).

The name data modules (Module:Unicode data/names/ xxx ) were compiled from UnicodeData.txt. Each one contains, at maximum, code points U+xxx000 to U+xxxFFF.

Copyright
The Unicode database is released by Unicode Inc. under the following terms:

Copyright © 1991-2018 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in https://www.unicode.org/copyright.html.

Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation.

THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.

Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder.

Known issues

 * Reading data like  not provided nor documented
 * Test fail:  U+FFFF (<noncharacter-FFFF>) expected: Cn.
 * → [Nil]

title: Module:Unicode data/doc


text:
Template:Citation Style documentation/title

 * : Title of source..
 * Titles containing certain characters will not display and link correctly unless those characters are encoded.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Template:Citation Style documentation/edition

 * edition: When the publication has more than one edition; for example: "2nd", "Revised", and so forth. Appends the string " ed." after the field, so 2nd produces "2nd ed." Does not display if a periodical field is defined.


text:
Template:Citation Style documentation/volume

 * volume: For one publication published in several volumes. Displays after the title and series fields; In rare cases, publications carry both an ongoing volume and a year-related value; if so, provide them both, for example |volume=IV / #10.


text:
Template:Citation Style documentation/chapterurl

 * chapter-url: URL of an online location where the text of the publication named by chapter or contribution can be found. Cannot be used if those parameters are wikilinked. Should be at the same site as url, if any. If chapter-url is used, url should only be used if the beginning of the work and the cited chapter are on separate webpages at the site. Aliases: contribution-url, section-url.
 * chapter-format: Format of the work referred to by chapter-url; for example: PDF, DOC, or XLS; displayed in parentheses after chapter. HTML is implied and should not be specified. Does not change the external link icon. Note: External link icons do not include alt text; thus, they do not add format information for the visually impaired.


text:
Module:Hatnote list

--                          Module:Hatnote list                              -- --                                                                           -- -- This module produces and formats lists for use in hatnotes. In particular, -- -- it implements the for-see list, i.e. lists of "For X, see Y" statements,  -- -- as used in, , and their variants. Also introduced   -- -- are andList & orList helpers for formatting lists with those conjunctions. --

local mArguments --initialize lazily local mFormatLink = require('Module:Format link') local mHatnote = require('Module:Hatnote') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {}

-- List stringification helper functions -- -- These functions are used for stringifying lists, usually page lists inside -- the "Y" portion of "For X, see Y" for-see items.

--default options table used across the list stringification functions local stringifyListDefaultOptions = { conjunction = "and", separator = ",", altSeparator = ";", space = " ", formatted = false }

--Searches display text only local function searchDisp(haystack, needle) return string.find(		string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle	) end

-- Stringifies a list generically; probably shouldn't be used directly local function stringifyList(list, options) -- Type-checks, defaults, and a shortcut checkType("stringifyList", 1, list, "table") if #list == 0 then return nil end checkType("stringifyList", 2, options, "table", true) options = options or {} for k, v in pairs(stringifyListDefaultOptions) do		if options[k] == nil then options[k] = v end end local s = options.space -- Format the list if requested if options.formatted then list = mFormatLink.formatPages(			{categorizeMissing = mHatnote.missingTargetCat}, list		) end -- Set the separator; if any item contains it, use the alternate separator local separator = options.separator for k, v in pairs(list) do		if searchDisp(v, separator) then separator = options.altSeparator break end end -- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§" local conjunction = s .. options.conjunction .. s	if #list == 2 and searchDisp(list[1], "§") or #list > 2 then conjunction = separator .. conjunction end -- Return the formatted string return mw.text.listToText(list, separator .. s, conjunction) end

--DRY function function p.conjList (conj, list, fmt) return stringifyList(list, {conjunction = conj, formatted = fmt}) end

-- Stringifies lists with "and" or "or" function p.andList (...) return p.conjList("and", ...) end function p.orList (...) return p.conjList("or", ...) end

-- For see -- -- Makes a "For X, see Y." list from raw parameters. Intended for the -- and  templates and their variants.

--default options table used across the forSee family of functions local forSeeDefaultOptions = { andKeyword = 'and', title = mw.title.getCurrentTitle.text, otherText = 'other uses', forSeeForm = 'For %s, see %s.', }

--Collapses duplicate punctuation local function punctuationCollapse (text) local replacements = { ["%.%.$"] = ".",		["%?%.$"] = "?",		["%!%.$"] = "!",		["%.%]%]%.$"] = ".]]",		["%?%]%]%.$"] = "?]]",		["%!%]%]%.$"] = "!]]"	}	for k, v in pairs(replacements) do text = string.gsub(text, k, v) end return text end

-- Structures arguments into a table for stringification, & options function p.forSeeArgsToTable (args, from, options) -- Type-checks and defaults checkType("forSeeArgsToTable", 1, args, 'table') checkType("forSeeArgsToTable", 2, from, 'number', true) from = from or 1 checkType("forSeeArgsToTable", 3, options, 'table', true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do		if options[k] == nil then options[k] = v end end -- maxArg's gotten manually because getArgs and table.maxn aren't friends local maxArg = 0 for k, v in pairs(args) do		if type(k) == 'number' and k > maxArg then maxArg = k end end -- Structure the data out from the parameter list: -- * forTable is the wrapper table, with forRow rows -- * Rows are tables of a "use" string & a "pages" table of pagename strings -- * Blanks are left empty for defaulting elsewhere, but can terminate list local forTable = {} local i = from local terminated = false -- If there is extra text, and no arguments are given, give nil value -- to not produce default of "For other uses, see foo (disambiguation)" if options.extratext and i > maxArg then return nil end -- Loop to generate rows repeat -- New empty row local forRow = {} -- On blank use, assume list's ended & break at end of this loop forRow.use = args[i] if not args[i] then terminated = true end -- New empty list of pages forRow.pages = {} -- Insert first pages item if present table.insert(forRow.pages, args[i + 1]) -- If the param after next is "and", do inner loop to collect params -- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3} while args[i + 2] == options.andKeyword do			if args[i + 3] then table.insert(forRow.pages, args[i + 3]) end -- Increment to next "and" i = i + 2 end -- Increment to next use i = i + 2 -- Append the row table.insert(forTable, forRow) until terminated or i > maxArg return forTable end

-- Stringifies a table as formatted by forSeeArgsToTable function p.forSeeTableToString (forSeeTable, options) -- Type-checks and defaults checkType("forSeeTableToString", 1, forSeeTable, "table", true) checkType("forSeeTableToString", 2, options, "table", true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do		if options[k] == nil then options[k] = v end end -- Stringify each for-see item into a list local strList = {} if forSeeTable then for k, v in pairs(forSeeTable) do			local useStr = v.use or options.otherText local pagesStr = p.andList(v.pages, true) or				mFormatLink._formatLink{ categorizeMissing = mHatnote.missingTargetCat, link = mHatnote.disambiguate(options.title) }			local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr) forSeeStr = punctuationCollapse(forSeeStr) table.insert(strList, forSeeStr) end end if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end -- Return the concatenated list return table.concat(strList, ' ') end

-- Produces a "For X, see Y" string from arguments. Expects index gaps -- but not blank/whitespace values. Ignores named args and args < "from". function p._forSee (args, from, options) local forSeeTable = p.forSeeArgsToTable(args, from, options) return p.forSeeTableToString(forSeeTable, options) end

-- As _forSee, but uses the frame. function p.forSee (frame, from, options) mArguments = require('Module:Arguments') return p._forSee(mArguments.getArgs(frame), from, options) end

return p

title: Module:Hatnote list


text:
Module:Hatnote list/doc

Usage from wikitext
This module is not designed be used directly from wikitext even though  does take an initial   argument and could potentially be used from wikitext, e.g.:

Usage from Lua
To call the module, use  or similar, then access its methods through the   variable (or whatever was used).

andList
takes a list in table form, and returns a string with the list separated with "and" and commas as appropriate.

orList
takes a list in table form, and returns a string with the list separated with "or" and commas as appropriate.

forSee
takes three arguments: a table of trimmed arguments with blanks removed, a "from" number with the index to start at, and an options table, and returns a string with a number of " " sentences. The links are formatted using the methods from Module:Hatnote.

As a convenience, the  method (without the leading underscore) takes the same arguments except with a frame instead of an args table, using   from Module:Arguments to preprocess the arguments.

title: Module:Hatnote list/doc


text:
Module:Lang/data

local lang_obj = mw.language.getContentLanguage; local this_wiki_lang_tag = lang_obj.code;										-- get this wiki's language tag

--[[--< L A N G _ N A M E _ T A B L E >

primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their associated language tags all of these data come from separate modules that are derived from the IANA language-subtag-registry file

key_to_lower avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes have multiple associated names; Module:lang is only concerned with the first name so key_to_lower only fetches the first name.

]]

local function key_to_lower (module, src_type) local out = {}; local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module);		-- fetch data from this module; require avoids metatable trap for variant data if 'var_sup' == src_type then for k, v in pairs (source) do			out[k:lower] = v;													-- for variant and suppressed everything is needed end

elseif 'lang' == src_type and source.active then							-- for ~/iana_languages (active) for k, v in pairs (source.active) do			out[k:lower] = v[1];												-- ignore multiple names; take first name only end

elseif 'lang_dep' == src_type and source.deprecated then					-- for ~/iana_languages (deprecated) for k, v in pairs (source.deprecated) do			out[k:lower] = v[1];												-- ignore multiple names; take first name only end

else																		-- here for all other sources for k, v in pairs (source) do			out[k:lower] = v[1];												-- ignore multiple names; take first name only end end return out; end

local lang_name_table_t = { lang = key_to_lower ('Module:Language/data/iana languages', 'lang'), lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'), script = key_to_lower ('Module:Language/data/iana scripts'),				-- script keys are capitalized; set to lower region = key_to_lower ('Module:Language/data/iana regions'),				-- region keys are uppercase; set to lower variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'), suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'),	-- script keys are capitalized; set to lower }

--[[--< I 1 8 N  M E D I A W I K I   O V E R R I D E >

For internationalization; not used at en.wiki

The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal. Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki language list for the local language.

Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all. When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens add an appropriate entry to the override table below.

Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply spelling differences: bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym dv: IANA: Dhivehi MW: Divehi el: IANA: Modern Greek MW: Greek ht: IANA: Haitian MW: Haitian Creole ky: IANA: Kirghiz MW: Kyrgyz li: IANA: Limburgan MW: Limburgish or: IANA: Oriya MW: Odia os: IANA: Ossetian MW: Ossetic "pa: IANA: Panjabi MW: Punjabi	"ps: IANA: Pushto MW: Pashto "to: IANA: Tonga MW: Tongan	"ug: IANA: Uighur MW: Uyghur use the override table to override language names that are incorrect for your project

To see the list of names that MediaWiki has for your language, enter this in the Debug colsole: =mw.dumpObject (mw.language.fetchLanguageNames (' ', 'all')) (replacing with the language tag for your language)

Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true. ]]

local media_wiki_override_enable = false;										-- set to true to override IANA names with MediaWiki names; always false at en.wiki -- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all if true == media_wiki_override_enable then local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all');	-- get a table of language tag/name pairs known to MediaWiki for tag, name in pairs (mw_languages_by_tag_t) do						-- loop through each tag/name pair in the MediaWiki list if lang_name_table_t.lang[tag] then									-- if the tag is in the main list lang_name_table_t.lang[tag] = name;								-- overwrite exisiting name with the name from MediaWiki end end end

--[[--< O V E R R I D E >--

Language codes and names in this table override the BCP47 names in lang_name_table.

indexes in this table shall always be lower case

]]

local override = { --< I S O _ 6 3 9 - 1 >

["ab"] = "Abkhaz",                                                         -- to match en.wiki article name ["ca-valencia"] = "Valencian", ["cu"] = "Church Slavonic",													-- 2nd IANA name; ["de-at"] = "Austrian German",												-- these code-region and code-variant tags to match en.wiki article names ["de-ch"] = "Swiss Standard German", ["en-au"] = "Australian English", ["en-ca"] = "Canadian English", ["en-emodeng"] = "Early Modern English", ["en-gb"] = "British English", ["en-ie"] = "Irish English", ["en-in"] = "Indian English", ["en-nz"] = "New Zealand English", ["en-us"] = "American English", ["en-za"] = "South African English", ["fy"] = "West Frisian",													-- Western Frisian ["mo"] = "Moldovan",														-- Moldavian (deprecated code); to match en.wiki article title ["nl-be"] = "Flemish",														-- match MediaWiki ["oc-provenc"] = "Provençal", ["ps"] = "Pashto",															-- Pushto ["pt-br"] = "Brazilian Portuguese",											-- match MediaWiki ["tw-asante"] = "Asante Twi", ["ug"] = "Uyghur",															-- 2nd IANA name; to match en.wiki article name

-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages ---- ["av"] = "Avar",														-- Avaric ["bo"] = "Standard Tibetan",											-- Tibetan ["el"] = "Greek",														-- Modern Greek --		["en-SA"] = "South African English",									-- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa ["ff"] = "Fula",														-- Fulah ["ht"] = "Haitian Creole",												-- Haitian ["hz"] = "Otjiherero",													-- Herero ["ii"] = "Yi",															-- Sichuan Yi		["ki"] = "Gikuyu",														-- Kikuyu ["kl"] = "Greenlandic",													-- Kalaallisut ["ky"] = "Kyrgyz",														-- Kirghiz ["lg"] = "Luganda",														-- Ganda ["li"] = "Limburgish",													-- Limburgan ["mi"] = "Māori",														-- Maori ["na"] = "Nauruan",														-- Nauru ["nb"] = "Bokmål",														-- Norwegian Bokmål ["nd"] = "Northern Ndebele",											-- North Ndebele ["nn"] = "Nynorsk",														-- Norwegian Nynorsk ["nr"] = "Southern Ndebele",											-- South Ndebele ["ny"] = "Chichewa",													-- Nyanja ["oj"] = "Ojibwe",														-- Ojibwa ["or"] = "Odia",														-- Oriya ["pa"] = "Punjabi",														-- Panjabi ["rn"] = "Kirundi",														-- Rundi ["sl"] = "Slovene",														-- Slovenian ["ss"] = "Swazi",														-- Swati ["st"] = "Sotho",														-- Southern Sotho ["to"] = "Tongan",														-- Tonga ----

--< I S O _ 6 3 9 - 2,  - 3,   - 5 >--

["alv"] = "Atlantic–Congo languages",										-- to match en.wiki article title (endash) ["arc"] = "Imperial Aramaic (700-300 BCE)",									-- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name ["art"] = "constructed",													-- to match en.wiki article; lowercase for category name ["bhd"] = "Bhadarwahi",														-- Bhadrawahi; to match en.wiki article title ["bla"] = "Blackfoot",														-- Siksika; to match en.wiki article title ["bua"] = "Buryat",															-- Buriat; this is a macro language; these four use wp preferred transliteration; ["bxm"] = "Mongolian Buryat",												-- Mongolia Buriat; these three all redirect to Buryat ["bxr"] = "Russian Buryat",													-- Russia Buriat; ["bxu"] = "Chinese Buryat",													-- China Buriat; ["byr"] = "Yipma",															-- Baruya, Yipma ["egy"] = "Ancient Egyptian",												-- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic ["ems"] = "Alutiiq",														-- Pacific Gulf Yupik; to match en.wiki article title ["esx"] = "Eskimo–Aleut languages",											-- to match en.wiki article title (endash) ["frr"] = "North Frisian",													-- Northern Frisian ["frs"] = "East Frisian Low Saxon",											-- Eastern Frisian ["gsw-fr"] = "Alsatian",													-- match MediaWiki ["haa"] = "Hän",															-- Han; to match en.wiki article title ["hmx"] = "Hmong–Mien languages",											-- to match en.wiki article title (endash) ["ilo"] = "Ilocano",														-- Iloko; to match en.wiki article title ["jam"] = "Jamaican Patois",												-- Jamaican Creole English ["lij-mc"] = "Monégasque",													-- Ligurian as spoken in Monaco ["luo"] = "Dholuo",															-- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo ["mhr"] = "Meadow Mari",													-- Eastern Mari ["mid"] = "Modern Mandaic",													-- Mandaic ['mis'] = "uncoded",														-- Uncoded languages; capitalization; special scope, not collective scope; ["mkh"] = "Mon–Khmer languages",											-- to match en.wiki article title (endash) ["mla"] = "Tamambo",														-- Malo ['mte'] = "Mono-Alu",														-- Mono (Solomon Islands) ['mul'] = "multiple",														-- Multiple languages; capitalization; special scope, not collective scope; ["nan-tw"] = "Taiwanese Hokkien",											-- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title ["new"] = "Newar",															-- Newari, Nepal Bhasa; to match en,wiki article title ["ngf"] = "Trans–New Guinea languages",										-- to match en.wiki article title (endash) ["nic"] = "Niger–Congo languages",											-- Niger-Kordofanian languages; to match en,wiki article title ["nrf"] = "Norman",															-- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text ["nrf-gg"] = "Guernésiais",													-- match MediaWiki ["nrf-je"] = "Jèrriais",													-- match MediaWiki ["nzi"] = "Nzema",															-- Nzima; to match en.wiki article title ["oma"] = "Omaha–Ponca",													-- to match en.wiki article title (endash) ["orv"] = "Old East Slavic",												-- Old Russian ["pfl"] = "Palatine German",												-- Pfaelzisch; to match en.wiki article ["pie"] = "Piro Pueblo",													-- Piro; to match en.wiki article ["pms"] = "Piedmontese",													-- Piemontese; to match en.wiki article title ["pnb"] = "Punjabi (Western)",												-- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name ["rop"] = "Australian Kriol",												-- Kriol; en.wiki article is a dab; point to correct en.wiki article ["sdo"] = "Bukar–Sadong",													-- Bukar-Sadung Bidayuh; to match en.wiki article title ["stq"] = "Saterland Frisian",												-- Saterfriesisch ["und"] = "undetermined",													-- capitalization to match existing category ["wrg"] = "Warrongo",														-- Warungu ["xal-ru"] = "Kalmyk",														-- to match en.wiki article title ["xgf"] = "Tongva",															-- ISO 639-3 is Gabrielino-Fernandeño ["yuf"] = "Havasupai–Hualapai",												-- Havasupai-Walapai-Yavapai; to match en.wiki article title ["zxx"] = "no linguistic content",											-- capitalization

-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages ---- ["ace"] = "Acehnese",													-- Achinese ["aec"] = "Sa'idi Arabic",												-- Saidi Arabic ["akl"] = "Aklan",														-- Aklanon ["alt"] = "Altay",														-- Southern Altai ["apm"] = "Mescalero-Chiricahua",										-- Mescalero-Chiricahua Apache ["bal"] = "Balochi",													-- Baluchi --		["bcl"] = "Central Bicolano",											-- Central Bikol ["bin"] = "Edo",														-- Bini ["bpy"] = "Bishnupriya Manipuri",										-- Bishnupriya ["chg"] = "Chagatay",													-- Chagatai ["ckb"] = "Sorani Kurdish",												-- Central Kurdish ["cnu"] = "Shenwa",														-- Chenoua ["coc"] = "Cocopah",													-- Cocopa ["diq"] = "Zazaki",														-- Dimli ["fit"] = "Meänkieli",													-- Tornedalen Finnish ["fkv"] = "Kven",														-- Kven Finnish ["frk"] = "Old Frankish",												-- Frankish ["gez"] = "Ge'ez",														-- Geez ["gju"] = "Gujari",														-- Gujari ["gsw"] = "Alemannic German",											-- Swiss German ["gul"] = "Gullah",														-- Sea Island Creole English ["hak"] = "Hakka",														-- Hakka Chinese ["hbo"] = "Biblical Hebrew",											-- Ancient Hebrew ["hnd"] = "Hindko",														-- Southern Hindko --		["ikt"] = "Inuvialuk",													-- Inuinnaqtun ["kaa"] = "Karakalpak",													-- Kara-Kalpak ["khb"] = "Tai Lü",														-- Lü		["kmr"] = "Kurmanji Kurdish",											-- Northern Kurdish ["kpo"] = "Kposo",														-- Ikposo ["krj"] = "Kinaray-a",													-- Kinaray-A ["ktz"] = "Juǀ'hoan",													-- Juǀʼhoan ["lez"] = "Lezgian",													-- Lezghian ["liv"] = "Livonian",													-- Liv ["lng"] = "Lombardic",													-- Langobardic ["mia"] = "Miami-Illinois",												-- Miami ["miq"] = "Miskito",													-- Mískito ["mix"] = "Mixtec",														-- Mixtepec Mixtec ["mni"] = "Meitei",														-- Manipuri ["mrj"] = "Hill Mari",													-- Western Mari ["mww"] = "White Hmong",												-- Hmong Daw ["nds-nl"] = "Dutch Low Saxon",											-- Low German --		["new"] = "Nepal Bhasa",												-- Newari ["nso"] = "Northern Sotho",												-- Pedi --		["nwc"] = "Classical Nepal Bhasa",										-- Classical Newari, Classical Nepal Bhasa, Old Newari ["ood"] = "O'odham",													-- Tohono O'odham ["otk"] = "Old Turkic",													-- Old Turkish ["pal"] = "Middle Persian",												-- Pahlavi ["pam"] = "Kapampangan",												-- Pampanga ["phr"] = "Potwari",													-- Pahari-Potwari ["pka"] = "Jain Prakrit",												-- Ardhamāgadhī Prākrit --		["pnb"] = "Punjabi",													-- Western Panjabi ["psu"] = "Shauraseni",													-- Sauraseni Prākrit ["rap"] = "Rapa Nui",													-- Rapanui ["rar"] = "Cook Islands Māori",											-- Rarotongan ["rmu"] = "Scandoromani",												-- Tavringer Romani ["rom"] = "Romani",														-- Romany ["rup"] = "Aromanian",													-- Macedo-Romanian ["ryu"] = "Okinawan",													-- Central Okinawan ["sdc"] = "Sassarese",													-- Sassarese Sardinian ["sdn"] = "Gallurese",													-- Gallurese Sardinian ["shp"] = "Shipibo",													-- Shipibo-Conibo ["src"] = "Logudorese",													-- Logudorese Sardinian ["sro"] = "Campidanese",												-- Campidanese Sardinian ["tkl"] = "Tokelauan",													-- Tokelau ["tvl"] = "Tuvaluan",													-- Tuvalu ["tyv"] = "Tuvan",														-- Tuvinian ["vls"] = "West Flemish",												-- Vlaams ["wep"] = "Westphalian",												-- Westphalien ["xal"] = "Oirat",														-- Kalmyk ["xcl"] = "Old Armenian",												-- Classical Armenian ["yua"] = "Yucatec Maya",												-- Yucateco ----

--< P R I V A T E _ U S E _ T A G S >--

["akk-x-latbabyl"] = "Late Babylonian Akkadian", ["akk-x-midassyr"] = "Middle Assyrian Akkadian", ["akk-x-midbabyl"] = "Middle Babylonian Akkadian", ["akk-x-neoassyr"] = "Neo-Assyrian Akkadian", ["akk-x-neobabyl"] = "Neo-Babylonian Akkadian", ["akk-x-old"] = "Old Akkadian", ["akk-x-oldassyr"] = "Old Assyrian Akkadian", ["akk-x-oldbabyl"] = "Old Babylonian Akkadian", ["alg-x-proto"] = "Proto-Algonquian",										-- alg in IANA is Algonquian languages ["ca-x-old"] = "Old Catalan", ["cel-x-proto"] = "Proto-Celtic",											-- cel in IANA is Celtic languages ["egy-x-demotic"] = "Demotic Egyptian", ["egy-x-late"] = "Late Egyptian", ["egy-x-middle"] = "Middle Egyptian", ["egy-x-old"] = "Old Egyptian", ["gem-x-proto"] = "Proto-Germanic",											-- gem in IANA is Germanic languages ["gmw-x-ecg"] = "East Central German", ["grc-x-aeolic"] = "Aeolic Greek",											-- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre ["grc-x-attic"] = "Attic Greek", ["grc-x-biblical"] = "Biblical Greek", ["grc-x-byzant"] = "Byzantine Greek", ["grc-x-classic"] = "Classical Greek", ["grc-x-doric"] = "Doric Greek", ["grc-x-hellen"] = "Hellenistic Greek", ["grc-x-ionic"] = "Ionic Greek", ["grc-x-koine"] = "Koinē Greek", ["grc-x-medieval"] = "Medieval Greek", ["grc-x-patris"] = "Patristic Greek", ["grk-x-proto"] = "Proto-Greek",											-- grk in IANA is Greek languages ["iir-x-proto"] = "Proto-Indo-Iranian",										-- iir in IANA is Indo-Iranian Languages ["ine-x-proto"] = "Proto-Indo-European", ["ira-x-proto"] = "Proto-Iranian",											-- ira in IANA is Iranian languages ["itc-x-proto"] = "Proto-Italic",											-- itc in IANA is Italic languages ["ksh-x-colog"] = "Colognian",												-- en.wiki article is Colognian; ksh (Kölsch) redirects there ["la-x-medieval"] = "Medieval Latin", ["la-x-new"] = "New Latin", ["lmo-x-milanese"] = "Milanese",											-- lmo in IANA is Lombard; Milanese is a dialect ["mis-x-ripuar"] = "Ripuarian",												-- replaces improper use of ksh in wp_languages ["prg-x-old"] = "Old Prussian", ["sem-x-ammonite"] = "Ammonite", ["sem-x-aramaic"] = "Aramaic", ["sem-x-canaan"] = "Canaanite languages", ["sem-x-dumaitic"] = "Dumaitic", ["sem-x-egurage"] = "Eastern Gurage", ["sem-x-hatran"] = "Hatran Aramaic", ["sem-x-oldsoara"] = "Old South Arabian", ["sem-x-palmyren"] = "Palmyrene Aramaic", ["sem-x-proto"] = "Proto-Semitic", ["sem-x-taymanit"] = "Taymanitic", ["sla-x-proto"] = "Proto-Slavic",											-- sla in IANA is Slavic languages ["yuf-x-hav"] = "Havasupai",												-- IANA name for these three is Havasupai-Walapai-Yavapai ["yuf-x-wal"] = "Walapai", ["yuf-x-yav"] = "Yavapai", }

--[[--< A R T I C L E _ L I N K >--

for those rare occasions when article titles don't fit with the normal ' -language', this table maps language code to article title. Use of this table should be avoided and the use of redirects preferred as that is the long-standing method of handling article names that don't fit with the normal pattern

]]

local article_name = { ['kue'] = "Kuman language (New Guinea)",									-- Kuman (Papua New Guinea); to avoid Kuman dab page ["lij"] = "Ligurian (Romance language)",									-- Ligurian; see Template_talk:Lang#Ligurian_dab ['mbo'] = "Mbo language (Cameroon)",										-- Mbo (Cameroon) ['mnh'] = "Mono language (Congo)",											-- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages ['mnr'] = "Mono language (California)",										-- Mono (USA) ['mru'] = "Mono language (Cameroon)",										-- Mono (Cameroon) ['qwm'] = "Kuman (Russia)",													-- Kuman (Russia); to avoid Kuman dab page ["snq"] = "Sangu language (Gabon)",											-- Sangu (Gabon) ["xlg"] = "Ligurian (ancient language)",									-- see Template_talk:Lang#Ligurian_dab ["zmw"] = "Mbo language (Congo)",											-- Mbo (Democratic Republic of Congo) }

--[=[-< R T L _ S C R I P T S >

ISO 15924 scripts that are written right-to-left. Data in this table taken from ISO 15924

last update to this list: 2017-12-24

]=]

local rtl_scripts = { 'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr', 'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb', 'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg', 'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole', };

--[[--< T R A N S L I T _ T I T L E S >

This is a table of tables of transliteration standards and the language codes or language scripts that apply to those standards. This table is used to create the tool-tip text associated with the transliterated text displayed by some of the templates.

These tables are more-or-less copied directly from. The standard 'NO_STD' is a construct to allow for the cases when no |std= parameter value is provided.

]]

local translit_title_table = { ['ahl'] = { ['default'] = 'Academy of the Hebrew Language transliteration', },

['ala'] = { ['default'] = 'American Library Association – Library of Congress transliteration', },

['ala-lc'] = { ['default'] = 'American Library Association – Library of Congress transliteration', },

['batr'] = { ['default'] = 'Bikdash Arabic Transliteration Rules', },

['bgn/pcgn'] = { ['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration', },

['din'] = { ['ar'] = 'DIN 31635 Arabic', ['fa'] = 'DIN 31635 Arabic', ['ku'] = 'DIN 31635 Arabic', ['ps'] = 'DIN 31635 Arabic', ['tg'] = 'DIN 31635 Arabic', ['ug'] = 'DIN 31635 Arabic', ['ur'] = 'DIN 31635 Arabic', ['arab'] = 'DIN 31635 Arabic',

['default'] = 'DIN transliteration', },

['eae'] = { ['default'] = 'Encyclopaedia Aethiopica transliteration', },

['hepburn'] = { ['default'] = 'Hepburn transliteration', },

['hunterian'] = { ['default'] = 'Hunterian transliteration', },

['iast'] = { ['default'] = 'International Alphabet of Sanskrit transliteration', },

['iso'] = {																	-- when a transliteration standard is supplied ['ab'] = 'ISO 9 Cyrillic', ['ba'] = 'ISO 9 Cyrillic', ['be'] = 'ISO 9 Cyrillic', ['bg'] = 'ISO 9 Cyrillic', ['kk'] = 'ISO 9 Cyrillic', ['ky'] = 'ISO 9 Cyrillic', ['mn'] = 'ISO 9 Cyrillic', ['ru'] = 'ISO 9 Cyrillic', ['tg'] = 'ISO 9 Cyrillic', ['uk'] = 'ISO 9 Cyrillic', ['bua'] = 'ISO 9 Cyrillic', ['sah'] = 'ISO 9 Cyrillic', ['tut'] = 'ISO 9 Cyrillic', ['xal'] = 'ISO 9 Cyrillic', ['cyrl'] = 'ISO 9 Cyrillic',

['ar'] = 'ISO 233 Arabic', ['ku'] = 'ISO 233 Arabic', ['ps'] = 'ISO 233 Arabic', ['ug'] = 'ISO 233 Arabic', ['ur'] = 'ISO 233 Arabic', ['arab'] = 'ISO 233 Arabic',

['he'] = 'ISO 259 Hebrew', ['yi'] = 'ISO 259 Hebrew', ['hebr'] = 'ISO 259 Hebrew',

['el'] = 'ISO 843 Greek', ['grc'] = 'ISO 843 Greek',

['ja'] = 'ISO 3602 Japanese', ['hira'] = 'ISO 3602 Japanese', ['hrkt'] = 'ISO 3602 Japanese', ['jpan'] = 'ISO 3602 Japanese', ['kana'] = 'ISO 3602 Japanese',

['zh'] = 'ISO 7098 Chinese', ['chi'] = 'ISO 7098 Chinese', ['pny'] = 'ISO 7098 Chinese', ['zho'] = 'ISO 7098 Chinese', --		['han'] = 'ISO 7098 Chinese',											-- unicode alias of Hani? doesn't belong here? should be Hani? ['hans'] = 'ISO 7098 Chinese', ['hant'] = 'ISO 7098 Chinese',

['ka'] = 'ISO 9984 Georgian', ['kat'] = 'ISO 9984 Georgian',

['arm'] = 'ISO 9985 Armenian', ['hy'] = 'ISO 9985 Armenian',

['th'] = 'ISO 11940 Thai', ['tha'] = 'ISO 11940 Thai',

['ko'] = 'ISO 11941 Korean', ['kor'] = 'ISO 11941 Korean',

['awa'] = 'ISO 15919 Indic', ['bho'] = 'ISO 15919 Indic', ['bn'] = 'ISO 15919 Indic', ['bra'] = 'ISO 15919 Indic', ['doi'] = 'ISO 15919 Indic', ['dra'] = 'ISO 15919 Indic', ['gon'] = 'ISO 15919 Indic', ['gu'] = 'ISO 15919 Indic', ['hi'] = 'ISO 15919 Indic', ['hno'] = 'ISO 15919 Indic', ['inc'] = 'ISO 15919 Indic', ['kn'] = 'ISO 15919 Indic', ['kok'] = 'ISO 15919 Indic', ['ks'] = 'ISO 15919 Indic', ['mag'] = 'ISO 15919 Indic', ['mai'] = 'ISO 15919 Indic', ['ml'] = 'ISO 15919 Indic', ['mr'] = 'ISO 15919 Indic', ['ne'] = 'ISO 15919 Indic', ['new'] = 'ISO 15919 Indic', ['or'] = 'ISO 15919 Indic', ['pa'] = 'ISO 15919 Indic', ['pnb'] = 'ISO 15919 Indic', ['raj'] = 'ISO 15919 Indic', ['sa'] = 'ISO 15919 Indic', ['sat'] = 'ISO 15919 Indic', ['sd'] = 'ISO 15919 Indic', ['si'] = 'ISO 15919 Indic', ['skr'] = 'ISO 15919 Indic', ['ta'] = 'ISO 15919 Indic', ['tcy'] = 'ISO 15919 Indic', ['te'] = 'ISO 15919 Indic', ['beng'] = 'ISO 15919 Indic', ['brah'] = 'ISO 15919 Indic', ['deva'] = 'ISO 15919 Indic', ['gujr'] = 'ISO 15919 Indic', ['guru'] = 'ISO 15919 Indic', ['knda'] = 'ISO 15919 Indic', ['mlym'] = 'ISO 15919 Indic', ['orya'] = 'ISO 15919 Indic', ['sinh'] = 'ISO 15919 Indic', ['taml'] = 'ISO 15919 Indic', ['telu'] = 'ISO 15919 Indic',

['default'] = 'ISO transliteration', },

['jyutping'] = { ['default'] = 'Jyutping transliteration', },

['mlcts'] = { ['default'] = 'Myanmar Language Commission Transcription System', },

['mr'] = { ['default'] = 'McCune–Reischauer transliteration', },

['nihon-shiki'] = { ['default'] = 'Nihon-shiki transliteration', },

['no_std'] = {																-- when no transliteration standard is supplied ['akk'] = 'Semitic transliteration', ['sem'] = 'Semitic transliteration', ['phnx'] = 'Semitic transliteration', ['xsux'] = 'Cuneiform transliteration', },

['pinyin'] = { ['default'] = 'Pinyin transliteration', },

['rr'] = { ['default'] = 'Revised Romanization of Korean transliteration', },

['rtgs'] = { ['default'] = 'Royal Thai General System of Transcription', },	['satts'] = { ['default'] = 'Standard Arabic Technical Transliteration System transliteration', },

['scientific'] = { ['default'] = 'scientific transliteration', },

['ukrainian'] = { ['default'] = 'Ukrainian National system of romanization', },

['ungegn'] = { ['default'] = 'United Nations Group of Experts on Geographical Names transliteration', },

['wadegile'] = { ['default'] = 'Wade–Giles transliteration', },

['wehr'] = { ['default'] = 'Hans Wehr transliteration', },	};

return {	this_wiki_lang_tag = this_wiki_lang_tag, this_wiki_lang_dir = lang_obj:getDir,										-- wiki's language direction article_name = article_name, lang_name_table = lang_name_table_t, override = override, rtl_scripts = rtl_scripts, special_tags_table = special_tags_table, translit_title_table = translit_title_table, };

title: Module:Lang/data


text:
Module:Lang/data/doc

This module holds various support tables used by Module:Lang
 * – this table provides language name data used in the creation of categories and, for the templates, the language name annotation
 * – this table overrides data in ; commonly used when an en.wiki article title differs from the name for the standard's language
 * – a list of ISO 15924 scripts that are written right-to-left; data taken from the table at ISO 15924
 * – a table of tables that is used in the creation of the  attribute of the  tags that wrap transliterated text; data adapted from
 * – this table overrides  and   for (typically) disambiguated en.wiki article names

title: Module:Lang/data/doc


text:
Module:Labelled list hatnote

--                              Labelled list                                -- --                                                                           -- -- This module does the core work of creating a hatnote composed of a list    -- -- prefixed by a colon-terminated label, i.e. "LABEL: [andList of pages]",   -- -- for and similar templates. --

local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local yesno --initialize lazily local p = {}

-- Defaults global to this module local defaults = { label = 'See also', --Final fallback for label argument labelForm = '%s: %s', prefixes = {'label', 'label ', 'l'}, template = 'Module:Labelled list hatnote' }

-- Localizable message strings local msg = { errorSuffix = '#Errors', noInputWarning = 'no page names specified', noOutputWarning = "%s — no output: none of the target pages exist." }

-- Helper function that pre-combines display parameters into page arguments. -- Also compresses sparse arrays, as a desirable side-effect. function p.preprocessDisplays (args, prefixes) -- Prefixes specify which parameters, in order, to check for display options -- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1' prefixes = prefixes or defaults.prefixes local indices = {} local sparsePages = {} for k, v in pairs(args) do		if type(k) == 'number' then indices[#indices + 1] = k			local display for i = 1, #prefixes do display = args[prefixes[i] .. k]				if display then break end end sparsePages[k] = display and string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v		end end table.sort(indices) local pages = {} for k, v in ipairs(indices) do pages[#pages + 1] = sparsePages[v] end return pages end

--Helper function to get a page target from a processed page string --e.g. "Page|Label" → "Page" or "Target" → "Target" local function getTarget(pagename) local pipe = string.find(pagename, '|') return string.sub(pagename, 0, pipe and pipe - 1 or nil) end

-- Produces a labelled pages-list hatnote. -- The main frame (template definition) takes 1 or 2 arguments, for a singular -- and (optionally) plural label respectively: -- * -- The resulting template takes pagename & label parameters normally. function p.labelledList (frame) mArguments = require('Module:Arguments') yesno = require('Module:Yesno') local labels = {frame.args[1] or defaults.label} labels[2] = frame.args[2] or labels[1] labels[3] = frame.args[3] --no defaulting labels[4] = frame.args[4] --no defaulting local template = frame:getParent:getTitle local args = mArguments.getArgs(frame, {parentOnly = true}) local pages = p.preprocessDisplays(args) local options = { category = yesno(args.category), extraclasses = frame.args.extraclasses, ifexists = yesno(frame.args.ifexists), namespace = frame.args.namespace or args.namespace, selfref = yesno(frame.args.selfref or args.selfref), template = template }	return p._labelledList(pages, labels, options) end

function p._labelledList (pages, labels, options) if options.ifexists then for k = #pages, 1, -1 do --iterate backwards to allow smooth removals local v = pages[k] local title = mw.title.new(getTarget(v), namespace) if (v == '') or title == nil or not title.exists then table.remove(pages, k)			end end end labels = labels or {} label = (#pages == 1 and labels[1] or labels[2]) or defaults.label for k, v in pairs(pages) do 		if mHatnote.findNamespaceId(v) ~= 0 then label = (					#pages == 1 and					(labels[3] or labels[1] or defaults.label) or					(labels[4] or labels[2] or defaults.label)				) or defaults.label end end if #pages == 0 then if options.ifexists then mw.addWarning(				string.format( msg.noOutputWarning, options.template or defaults.template )			)			return '' else return mHatnote.makeWikitextError(				msg.noInputWarning,				(options.template or defaults.template) .. msg.errorSuffix,				options.category			) end end local text = string.format(		options.labelForm or defaults.labelForm,		label,		mHatlist.andList(pages, true)	) local hnOptions = { extraclasses = options.extraclasses, selfref = options.selfref }	return mHatnote._hatnote(text, hnOptions) end

return p

title: Module:Labelled list hatnote


text:
Module:Labelled list hatnote/doc

This module provides a handful of functions that make it easy to implement hatnotes that take the form of a label in front of a list of pages, e.g.

labelledList
Invoking the  function is enough to implement most such templates:

or

For example, providing "See also" instead of "Universal label" duplicates the functionality of see also, while providing "Main article" and "Main articles" instead of "Singular label" and "Plural label" duplicates the (article namespace) functionality of main.

If third and fourth labels are provided, they'll be used in the case where any of the target pages are outside the article namespace, so e.g. main can be implemented thus:

preprocessDisplays
The  function takes a raw list of arguments and combines in any display arguments. For example, initially has the arguments table  ; this table would combine those into the table. It overrides manual piping (e.g. →  ) and compresses sparse arrays if a parameter is skipped or left empty.

Example:

_labelledList
For modules that need to modify the functionality slightly while still using it,  provides some flexibility. It takes three parameters:
 * 1) A pages list, preferably preprocessed and compressed by
 * 2) A labels table, where the first item is the singular or universal label, and the second either a plural label or a copy of the first.
 * 3) An options table, preferably containing:
 * 4) * a  string with the full title of the template. Defaults to the title of this module.
 * 5) * a  string (or nil) as taken by   from Module:Hatnote, to optionally disable error categories
 * 6) * a  string (or nil) as taken by   to enable the selfref option

Example:

Errors
This module causes templates based on it to produce an error message if no page names are provided as template parameters. Normally, these should lead back to "Errors" sections in the documentation of those templates. However, if those templates use a module with  and don't provide a   item in their options table, that error defaults to leading back here. The error can be solved by providing at least one valid page-name parameter to the template in question; the problem in the template can be fixed by providing some value to the  item of the     table.

title: Module:Labelled list hatnote/doc


text:
Module:Language/data/iana languages/doc

This module contains data taken directly from a local copy of an IANA language-subtag-registry file.

The table in this module was created using the awb script at IANA subtag registry file update or by Module:Language/data/iana languages/make. There should be no need to hand edit this table, so please do not do so except to reflect changes that are actually present in the source (in which case it is probably better to re-run one of the tools on a new data file).

The data in this table come from records that are not 'Deprecated', do not have a 'Preferred-Value', and are not 'Private use'.

title: Module:Language/data/iana languages/doc