Wiktionary
tpiwiktionary
https://tpi.wiktionary.org/wiki/Fran_Pes
MediaWiki 1.39.0-wmf.22
case-sensitive
Media
Sipesol
Toktok
Yusa
Toktok bilong yusa
Wiktionary
Wiktionary toktok
Fail
Toktok bilong fail
MediaWiki
Toktok bilong mediawiki
Templet
Toktok bilong templet
Halivim
Toktok bilong halivim
Grup
Toktok bilong grup
TimedText
TimedText talk
Module
Module talk
Gadget
Gadget talk
Gadget definition
Gadget definition talk
Grup:Candidates for speedy deletion
14
1983
13307
10050
2022-08-01T21:47:57Z
Asinis632
1829
wikitext
text/x-wiki
[[Grup:Diksionary]]
6up2yupbmvb5c42e2uciwcfgzvftqnl
13308
13307
2022-08-01T21:48:30Z
Asinis632
1829
wikitext
text/x-wiki
[[Grup:Diksineri]]
93901bwwxqhomey8udo9y360zhylot1
13309
13308
2022-08-01T21:49:01Z
Asinis632
1829
wikitext
text/x-wiki
[[Grup:Dikseneri]]
gesrkqsnhedw5e3bhy6h1pxi5grchub
ima
0
2008
13301
9897
2022-08-01T21:42:14Z
Asinis632
1829
wikitext
text/x-wiki
== Tokples ==
Dispela emi hap tok bilong '''Tok Siapan'''.
== Part of speech ==
Adverb
== Hap tok i minim ==
* '''ima''' long Tok Siapan i minim [[nau]] long Tok Pisin.
[[Grup:Adveb]]
[[Grup:Tok Siapan]]
6ezw789nzx4cdcmkr226jzbl98zsiew
13302
13301
2022-08-01T21:42:52Z
Asinis632
1829
wikitext
text/x-wiki
== Tokples ==
Dispela emi hap tok bilong '''Tok Siapan'''.
== Part of speech ==
Adverb
== Hap tok i minim ==
* '''ima''' long Tok Siapan i minim [[nau]] long Tok Pisin.
[[Grup:ja:Adveb]]
[[Grup:Tok Siapan]]
jpm70vi89t33771mzatbjgqahqj9odv
13304
13302
2022-08-01T21:46:11Z
Asinis632
1829
wikitext
text/x-wiki
== Tokples ==
Dispela emi hap tok bilong '''Tok Siapan'''.
== Part of speech ==
Adverb
== Hap tok i minim ==
* '''ima''' long Tok Siapan i minim [[nau]] long Tok Pisin.
[[Grup:Siapan adveb]]
[[Grup:Tok Siapan]]
5pcznyqm09a1n78tnppa7fpr78x47ux
Grup:Adveb bilong Tok Inglis
14
2613
13298
10048
2022-08-01T21:33:58Z
Asinis632
1829
wikitext
text/x-wiki
{{auto cat}}
[[Grup:Tok Inglis]]
qvkxw59xjo3odp84nhcn7g0i25cx7gn
13300
13298
2022-08-01T21:40:49Z
Asinis632
1829
wikitext
text/x-wiki
<!--{{auto cat}}-->
[[Grup:Tok Inglis]]
mlu7cmr77fhp9zgbri2j39raivwg19k
Module:auto cat
828
3670
13296
11022
2022-08-01T21:19:58Z
Asinis632
1829
Scribunto
text/plain
local export = {}
-- Used in multiple places; create a variable for ease in testing.
local poscatboiler_submodule = "poscatboiler"
local function splitLabelLang(titleObject)
local getByCanonicalName = require("Module:languages").getByCanonicalName
local canonicalName
local lang
-- Progressively add another word to the potential canonical name until it
-- matches an actual canonical name.
local words = mw.text.split(titleObject.text, " ")
for i = #words - 1, 1, -1 do
canonicalName = table.concat(words, " ", 1, i)
lang = getByCanonicalName(canonicalName)
if lang then
break
end
end
local label = lang and titleObject.text:sub(#canonicalName + 2)
or titleObject.text
return label, lang
end
-- Add the arguments in `source` to those in `receiver`, offsetting numeric arguments by `offset`.
local function add_args(receiver, source, offset)
for k, v in pairs(source) do
if type(k) == "number" then
receiver[k + offset] = v
else
receiver[k] = v
end
end
return receiver
end
-- List of handler functions that try to match the page name.
-- A handler should return a table of template title plus arguments
-- that is passed to frame:expandTemplate.
-- If a handler does not recognise the page name, it should return nil.
-- Note that the order of functions matters!
local handlers = {}
local function add_handler(func)
table.insert(handlers, func)
end
-- Topical categories
add_handler(function(titleObject)
if not titleObject.text:find("^[a-z-]+:.") then
return nil
end
local code, label = titleObject.text:match("^([a-z-]+):(.+)$")
return {title = "topic cat", args = {code, label}}
end)
-- Letter names
add_handler(function(titleObject)
if not titleObject.text:find("letter names$") then
return nil
end
local langCode = titleObject.text:match("^([^:]+):")
local lang, cat
if langCode then
lang = require("Module:languages").getByCode(langCode) or error('The language code "' .. langCode .. '" is not valid.')
cat = titleObject.text:match(":(.+)$")
else
cat = titleObject.text
end
return {title = "topic cat", args = {lang and lang:getCode() or nil, cat}}
end)
-- letter cat
add_handler(function(titleObject)
-- Only recognize cases consisting of an uppercase letter followed by the
-- corresponding lowercase letter, either as the entire category name or
-- followed by a colon (for cases like [[Category:Gg: ⠛]]). Cases that
-- don't fit this profile (e.g. for Turkish [[Category:İi]] and
-- [[Category:Iı]]) need to call {{letter cat}} directly. Formerly this
-- handler was much less restrictive and would fire on categories named
-- [[Category:zh:]], [[Category:RFQ]], etc.
local upper, lower = mw.ustring.match(titleObject.text, "^(%u)(%l)%f[:%z]")
if not upper or mw.ustring.upper(lower) ~= upper then
return nil
end
return {title = "letter cat"}
end)
-- poscatboiler lang-specific
add_handler(function(titleObject, args)
local label, lang = splitLabelLang(titleObject)
if lang then
local baseLabel, script = label:match("(.+) in (.-) script$")
if script and baseLabel ~= "terms" then
local scriptObj = require("Module:scripts").getByCanonicalName(script)
if scriptObj then
return {title = poscatboiler_submodule, args = add_args({lang:getCode(), baseLabel, scriptObj:getCode()}, args, 3)}, true
end
end
return {title = poscatboiler_submodule, args = add_args({lang:getCode(), label}, args, 3)}, true
end
end)
-- poscatboiler umbrella category
add_handler(function(titleObject, args)
local label = titleObject.text:match("(.+) by language$")
if label then
return {
title = poscatboiler_submodule,
args = add_args({nil, mw.getContentLanguage():lcfirst(label)}, args, 3)
}, true
end
end)
-- topic cat
add_handler(function(titleObject)
return {title = "topic cat", args = {nil, titleObject.text}}
end)
-- poscatboiler raw handlers
add_handler(function(titleObject, args)
local args = add_args({nil, titleObject.text}, args, 3)
args.raw = true
return {
title = poscatboiler_submodule,
args = args,
}, true
end)
-- poscatboiler umbrella handlers without 'by language'
add_handler(function(titleObject, args)
local args = add_args({nil, mw.getContentLanguage():lcfirst(titleObject.text)}, args, 3)
return {
title = poscatboiler_submodule,
args = args,
}, true
end)
function export.show(frame)
local args = frame:getParent().args
local titleObject = mw.title.getCurrentTitle()
if titleObject.nsText == "Templet" then
return "(This template should be used on pages in the Grup: namespace.)"
elseif titleObject.nsText ~= "Grup" then
error("This template/module can only be used on pages in the Grup: namespace.")
end
local function extra_args_error(templateObject)
local numargstext = {}
local argstext = {}
local maxargnum = 0
for k, v in pairs(templateObject.args) do
if type(v) == "number" and v > maxargnum then
maxargnum = v
else
table.insert(numargstext, "|" .. k .. "=" .. v)
end
end
for i = 1, maxargnum do
local v = templateObject.args[i]
if v == nil then
v = "(nil)"
elseif v == true then
v = "(true)"
elseif v == false then
v = "(false)"
end
table.insert(argstext, "|" .. v)
end
error("Extra arguments to {{auto cat}} not allowed for this category (recognized as {{[[Templet:" ..
templateObject.title .. "|" .. templateObject.title .. "]]" .. numargstext .. argstext .. "}}")
end
local first_error_templateObject, first_error_args_handled, first_error_cattext
-- Go through each handler in turn. If a handler doesn't recognize the format of the
-- category, it will return nil, and we will consider the next handler. Otherwise,
-- it returns a template name and arguments to call it with, but even then, that template
-- might return an error, and we need to consider the next handler. This happens,
-- for example, with the category "CAT:Mato Grosso, Brazil", where "Mato" is the name of
-- a language, so the handler for {{poscatboiler}} fires and tries to find a label
-- "Grosso, Brazil". This throws an error, and previously, this blocked fruther handler
-- consideration, but now we check for the error and continue checking handlers;
-- eventually, {{topic cat}} will fire and correctly handle the category.
for _, handler in ipairs(handlers) do
local templateObject, args_handled = handler(titleObject, args)
if templateObject then
require("Module:debug").track("auto cat/" .. templateObject.title)
local cattext = frame:expandTemplate(templateObject)
-- FIXME! We check for specific text found in most or all error messages generated
-- by category tree templates (in particular, the second piece of text below should be
-- in all error messages generated when a given module doesn't recognize a category name).
-- If this text ever changes in the source modules (e.g. [[Module:category tree]],
-- it needs to be changed here as well.)
if cattext:find("Grup:Categories with invalid label") or
cattext:find("The automatically%-generated contents of this category has errors") then
if not first_error_cattext then
first_error_templateObject = templateObject
first_error_args_handled = args_handled
first_error_cattext = cattext
end
else
if not args_handled and next(args) then
extra_args_error(templateObject)
end
return cattext
end
end
end
if first_error_cattext then
if not first_error_args_handled and next(args) then
extra_args_error(first_error_templateObject)
end
return first_error_cattext
end
error("{{auto cat}} couldn't recognize format of category name")
end
-- test function for injecting title string
function export.test(title)
if type(title) == "table" then
title = title:getParent().args[1]
end
local titleObject = {}
titleObject.text = title
for _, handler in ipairs(handlers) do
local t = handler(titleObject)
if t then
return t.title
end
end
end
return export
i0j31c6hu9sevbb7o7z5zu8zkjk4jnu
Module:Unicode data/images/002
828
4049
13287
12988
2022-08-01T20:56:28Z
Kwamikagami
185
Scribunto
text/plain
return {
[ 0x200B ] = "ISOIEC-9995-7-072--IEC-60417-6072-10--Symbol-for-ZWSP.svg",
[ 0x200C ] = "ISOIEC-9995-7-081--IEC-60417-6077-1--Symbol-for-ZWNJ.svg",
[ 0x200D ] = "ISOIEC-9995-7-082--IEC-60417-6077-2--Symbol-for-ZWJ.svg",
[ 0x2018 ] = "Cquote1 single black.svg",
[ 0x2019 ] = "Cquote2 single black.svg",
[ 0x201C ] = "Cquote1 black.svg",
[ 0x201D ] = "Cquote2 black.svg",
[ 0x2020 ] = "Dagger-vector.svg",
[ 0x2021 ] = "Double-dagger-vector.svg",
[ 0x2026 ] = "Ellipsis.svg",
[ 0x2030 ] = "Permille symbol.svg",
[ 0x2039 ] = "Left pointing single angle quotation mark.svg",
[ 0x203A ] = "Right pointing single angle quotation mark.svg",
[ 0x203B ] = "U203B-reference-mark-glyph-in-andron-scriptor-web.svg",
[ 0x203D ] = "Interrobang.svg",
[ 0x2042 ] = "Asterisks three.svg",
[ 0x2044 ] = "U+2044.svg",
[ 0x204A ] = "Tironisches et 2.png",
[ 0x2051 ] = "Asterisks 2 (vertical).svg",
[ 0x2060 ] = "ISOIEC-9995-7-083--IEC-60417-6077-3--Symbol-for-Word-Joiner.svg",
[ 0x20A0 ] = "Euro-currency sign.svg",
[ 0x20A1 ] = "Costa Rican colon symbol.svg",
[ 0x20A2 ] = "Cruzeiro sign.svg",
[ 0x20A3 ] = "French franc symbol.svg",
[ 0x20A4 ] = "Lira sign.svg",
[ 0x20A5 ] = "Mill sign.svg",
[ 0x20A6 ] = "Naira sign.svg",
[ 0x20A7 ] = "Peseta symbol.svg",
[ 0x20A8 ] = "Pakistani Rupee Sign.svg",
[ 0x20A9 ] = "Won sign.svg",
[ 0x20AA ] = "New sheqel sign.svg",
[ 0x20AB ] = "Dong sign.svg",
[ 0x20AC ] = "Euro sign.svg",
[ 0x20AD ] = "Kip.svg",
[ 0x20AE ] = "Tugrik.svg",
[ 0x20AF ] = "Drachma-Symbol.svg",
[ 0x20B0 ] = "Pfennig sign.svg",
[ 0x20B1 ] = "PhilippinePeso.svg",
[ 0x20B2 ] = "Guarani symbol.svg",
[ 0x20B3 ] = "Austral.svg",
[ 0x20B4 ] = "Hryvnia symbol.svg",
[ 0x20B5 ] = "Cedi.svg",
[ 0x20B6 ] = "Livre tournois sign.svg",
[ 0x20B7 ] = "Spesmilo sign (bold italic).svg",
[ 0x20B8 ] = "Kazakhstani tenge symbol.svg",
[ 0x20B9 ] = "Indian Rupee symbol.svg",
[ 0x20BA ] = "Turkish lira symbol black.svg",
[ 0x20BB ] = "Nordic mark sign.svg",
[ 0x20BC ] = "Azeri manat symbol.svg",
[ 0x20BD ] = "Ruble sign.svg",
[ 0x20BE ] = "Sign of Georgian Lari.svg",
[ 0x20BF ] = "BitcoinSign.svg",
[ 0x20C0 ] = "Som_sign.svg",
[ 0x2100 ] = "U+2100.svg",
[ 0x2101 ] = "U+2101.svg",
[ 0x2102 ] = "U+2102.svg",
[ 0x2103 ] = "U+2103.svg",
[ 0x2104 ] = "U+2104.svg",
[ 0x2105 ] = "U+2105.svg",
[ 0x2106 ] = "U+2106.svg",
[ 0x2107 ] = "U+2107.svg",
[ 0x2108 ] = "U+2108.svg",
[ 0x2109 ] = "U+2109.svg",
[ 0x210A ] = "U+210A.svg",
[ 0x210B ] = "U+210B.svg",
[ 0x210C ] = "U+210C.svg",
[ 0x210D ] = "U+210D.svg",
[ 0x210E ] = "U+210E.svg",
[ 0x210F ] = "U+210F.svg",
[ 0x2110 ] = "U+2110.svg",
[ 0x2111 ] = "U+2111.svg",
[ 0x2112 ] = "U+2112.svg",
[ 0x2113 ] = "U+2113.svg",
[ 0x2114 ] = "U+2114.svg",
[ 0x2115 ] = "U+2115.svg",
[ 0x2116 ] = "U+2116.svg",
[ 0x2117 ] = "U+2117.svg",
[ 0x2118 ] = "U+2118.svg",
[ 0x2119 ] = "U+2119.svg",
[ 0x211A ] = "U+211A.svg",
[ 0x211B ] = "U+211B.svg",
[ 0x211C ] = "U+211C.svg",
[ 0x211D ] = "U+211D.svg",
[ 0x211E ] = "U+211E.svg",
[ 0x211F ] = "U+211F.svg",
[ 0x2120 ] = "U+2120.svg",
[ 0x2121 ] = "U+2121.svg",
[ 0x2122 ] = "U+2122.svg",
[ 0x2123 ] = "U+2123.svg",
[ 0x2124 ] = "U+2124.svg",
[ 0x2125 ] = "U+2125.svg",
[ 0x2126 ] = "U+2126.svg",
[ 0x2127 ] = "U+2127.svg",
[ 0x2128 ] = "U+2128.svg",
[ 0x2129 ] = "U+2129.svg",
[ 0x212A ] = "U+212A.svg",
[ 0x212B ] = "U+212B.svg",
[ 0x212C ] = "U+212C.svg",
[ 0x212D ] = "U+212D.svg",
[ 0x212E ] = "U+212E.svg",
[ 0x212F ] = "U+212F.svg",
[ 0x2130 ] = "U+2130.svg",
[ 0x2131 ] = "U+2131.svg",
[ 0x2132 ] = "U+2132.svg",
[ 0x2133 ] = "U+2133.svg",
[ 0x2134 ] = "U+2134.svg",
[ 0x2135 ] = "U+2135.svg",
[ 0x2136 ] = "U+2136.svg",
[ 0x2137 ] = "U+2137.svg",
[ 0x2138 ] = "U+2138.svg",
[ 0x2139 ] = "U+2139.svg",
[ 0x213A ] = "U+213A.svg",
[ 0x213B ] = "U+213B.svg",
[ 0x213C ] = "U+213C.svg",
[ 0x213D ] = "U+213D.svg",
[ 0x213E ] = "U+213E.svg",
[ 0x213F ] = "U+213F.svg",
[ 0x2140 ] = "U+2140.svg",
[ 0x2141 ] = "U+2141.svg",
[ 0x2142 ] = "U+2142.svg",
[ 0x2143 ] = "U+2143.svg",
[ 0x2144 ] = "U+2144.svg",
[ 0x2145 ] = "U+2145.svg",
[ 0x2146 ] = "U+2146.svg",
[ 0x2147 ] = "U+2147.svg",
[ 0x2148 ] = "U+2148.svg",
[ 0x2149 ] = "U+2149.svg",
[ 0x214A ] = "U+214A.svg",
[ 0x214B ] = "U+214B.svg",
[ 0x214C ] = "U+214C.svg",
[ 0x214D ] = "U+214D.svg",
[ 0x214E ] = "U+214E.svg",
[ 0x214F ] = "U+214F.svg",
[ 0x2153 ] = "U+2153.svg",
[ 0x2154 ] = "U+2154.svg",
[ 0x2155 ] = "U+2155.svg",
[ 0x2156 ] = "U+2156.svg",
[ 0x2157 ] = "U+2157.svg",
[ 0x2158 ] = "U+2158.svg",
[ 0x2159 ] = "U+2159.svg",
[ 0x215A ] = "U+215A.svg",
[ 0x215B ] = "U+215B.svg",
[ 0x215C ] = "U+215C.svg",
[ 0x215D ] = "U+215D.svg",
[ 0x215E ] = "U+215E.svg",
[ 0x215F ] = "U+215F.svg",
[ 0x2160 ] = "U+2160.svg",
[ 0x2161 ] = "U+2161.svg",
[ 0x2162 ] = "U+2162.svg",
[ 0x2163 ] = "U+2163.svg",
[ 0x2164 ] = "U+2164.svg",
[ 0x2165 ] = "U+2165.svg",
[ 0x2166 ] = "U+2166.svg",
[ 0x2167 ] = "U+2167.svg",
[ 0x2168 ] = "U+2168.svg",
[ 0x2169 ] = "U+2169.svg",
[ 0x216A ] = "U+216A.svg",
[ 0x216B ] = "U+216B.svg",
[ 0x216C ] = "U+216C.svg",
[ 0x216D ] = "U+216D.svg",
[ 0x216E ] = "U+216E.svg",
[ 0x216F ] = "U+216F.svg",
[ 0x2170 ] = "U+2170.svg",
[ 0x2171 ] = "U+2171.svg",
[ 0x2172 ] = "U+2172.svg",
[ 0x2173 ] = "U+2173.svg",
[ 0x2174 ] = "U+2174.svg",
[ 0x2175 ] = "U+2175.svg",
[ 0x2176 ] = "U+2176.svg",
[ 0x2177 ] = "U+2177.svg",
[ 0x2178 ] = "U+2178.svg",
[ 0x2179 ] = "U+2179.svg",
[ 0x217A ] = "U+217A.svg",
[ 0x217B ] = "U+217B.svg",
[ 0x217C ] = "U+217C.svg",
[ 0x217D ] = "U+217D.svg",
[ 0x217E ] = "U+217E.svg",
[ 0x217F ] = "U+217F.svg",
[ 0x2180 ] = "U+2180.svg",
[ 0x2181 ] = "U+2181.svg",
[ 0x2182 ] = "U+2182.svg",
[ 0x2183 ] = "U+2183.svg",
[ 0x2184 ] = "U+2184.svg",
[ 0x2185 ] = "U+2185.svg",
[ 0x2186 ] = "Rzz 50b.svg",
[ 0x2187 ] = "U+2187.svg",
[ 0x2188 ] = "U+2188.svg",
[ 0x218A ] = "Dozenal gb 10.svg",
[ 0x218B ] = "Dozenal gb 11.svg",
[ 0x2190 ] = "U+2190.svg",
[ 0x2191 ] = "U+2191.svg",
[ 0x2192 ] = "U+2192.svg",
[ 0x2193 ] = "U+2193.svg",
[ 0x2194 ] = "U+2194.svg",
[ 0x2195 ] = "U+2195.svg",
[ 0x2196 ] = "U+2196.svg",
[ 0x2197 ] = "U+2197.svg",
[ 0x2198 ] = "U+2198.svg",
[ 0x2199 ] = "U+2199.svg",
[ 0x219A ] = "U+219A.svg",
[ 0x219B ] = "U+219B.svg",
[ 0x219C ] = "U+219C.svg",
[ 0x219D ] = "U+219D.svg",
[ 0x219E ] = "U+219E.svg",
[ 0x219F ] = "U+219F.svg",
[ 0x21A0 ] = "U+21A0.svg",
[ 0x21A1 ] = "U+21A1.svg",
[ 0x21A2 ] = "U+21A2.svg",
[ 0x21A3 ] = "U+21A3.svg",
[ 0x21A4 ] = "U+21A4.svg",
[ 0x21A5 ] = "U+21A5.svg",
[ 0x21A6 ] = "U+21A6.svg",
[ 0x21A7 ] = "U+21A7.svg",
[ 0x21A8 ] = "U+21A8.svg",
[ 0x21A9 ] = "U+21A9.svg",
[ 0x21AA ] = "U+21AA.svg",
[ 0x21AB ] = "U+21AB.svg",
[ 0x21AC ] = "U+21AC.svg",
[ 0x21AD ] = "U+21AD.svg",
[ 0x21AE ] = "U+21AE.svg",
[ 0x21AF ] = "U+21AF.svg",
[ 0x21B0 ] = "U+21B0.svg",
[ 0x21B1 ] = "U+21B1.svg",
[ 0x21B2 ] = "U+21B2.svg",
[ 0x21B3 ] = "U+21B3.svg",
[ 0x21B4 ] = "U+21B4.svg",
[ 0x21B5 ] = "U+21B5.svg",
[ 0x21B6 ] = "U+21B6.svg",
[ 0x21B7 ] = "U+21B7.svg",
[ 0x21B8 ] = "U+21B8.svg",
[ 0x21B9 ] = "U+21B9.svg",
[ 0x21BA ] = "U+21BA.svg",
[ 0x21BB ] = "U+21BB.svg",
[ 0x21BC ] = "U+21BC.svg",
[ 0x21BD ] = "U+21BD.svg",
[ 0x21BE ] = "U+21BE.svg",
[ 0x21BF ] = "U+21BF.svg",
[ 0x21C0 ] = "U+21C0.svg",
[ 0x21C1 ] = "U+21C1.svg",
[ 0x21C2 ] = "U+21C2.svg",
[ 0x21C3 ] = "U+21C3.svg",
[ 0x21C4 ] = "U+21C4.svg",
[ 0x21C5 ] = "U+21C5.svg",
[ 0x21C6 ] = "U+21C6.svg",
[ 0x21C7 ] = "U+21C7.svg",
[ 0x21C8 ] = "U+21C8.svg",
[ 0x21C9 ] = "U+21C9.svg",
[ 0x21CA ] = "U+21CA.svg",
[ 0x21CB ] = "U+21CB.svg",
[ 0x21CC ] = "U+21CC.svg",
[ 0x21CD ] = "U+21CD.svg",
[ 0x21CE ] = "U+21CE.svg",
[ 0x21CF ] = "U+21CF.svg",
[ 0x21D0 ] = "U+21D0.svg",
[ 0x21D1 ] = "U+21D1.svg",
[ 0x21D2 ] = "U+21D2.svg",
[ 0x21D3 ] = "U+21D3.svg",
[ 0x21D4 ] = "U+21D4.svg",
[ 0x21D5 ] = "U+21D5.svg",
[ 0x21D6 ] = "U+21D6.svg",
[ 0x21D7 ] = "U+21D7.svg",
[ 0x21D8 ] = "U+21D8.svg",
[ 0x21D9 ] = "U+21D9.svg",
[ 0x21DA ] = "U+21DA.svg",
[ 0x21DB ] = "U+21DB.svg",
[ 0x21DC ] = "U+21DC.svg",
[ 0x21DD ] = "U+21DD.svg",
[ 0x21DE ] = "U+21DE.svg",
[ 0x21DF ] = "U+21DF.svg",
[ 0x21E0 ] = "U+21E0.svg",
[ 0x21E1 ] = "U+21E1.svg",
[ 0x21E2 ] = "U+21E2.svg",
[ 0x21E3 ] = "U+21E3.svg",
[ 0x21E4 ] = "U+21E4.svg",
[ 0x21E5 ] = "U+21E5.svg",
[ 0x21E6 ] = "U+21E6.svg",
[ 0x21E7 ] = "U+21E7.svg",
[ 0x21E8 ] = "U+21E8.svg",
[ 0x21E9 ] = "U+21E9.svg",
[ 0x21EA ] = "U+21EA.svg",
[ 0x21EB ] = "U+21EB.svg",
[ 0x21EC ] = "U+21EC.svg",
[ 0x21ED ] = "U+21ED.svg",
[ 0x21EE ] = "U+21EE.svg",
[ 0x21EF ] = "U+21EF.svg",
[ 0x21F0 ] = "U+21F0.svg",
[ 0x21F1 ] = "U+21F1.svg",
[ 0x21F2 ] = "U+21F2.svg",
[ 0x21F3 ] = "U+21F3.svg",
[ 0x21F4 ] = "U+21F4.svg",
[ 0x21F5 ] = "U+21F5.svg",
[ 0x21F6 ] = "U+21F6.svg",
[ 0x21F7 ] = "U+21F7.svg",
[ 0x21F8 ] = "U+21F8.svg",
[ 0x21F9 ] = "U+21F9.svg",
[ 0x21FA ] = "U+21FA.svg",
[ 0x21FB ] = "U+21FB.svg",
[ 0x21FC ] = "U+21FC.svg",
[ 0x21FD ] = "U+21FD.svg",
[ 0x21FE ] = "U+21FE.svg",
[ 0x21FF ] = "U+21FF.svg",
[ 0x2200 ] = "Universal-quantification.svg",
[ 0x2207 ] = "Nabla-symbol.svg",
[ 0x220F ] = "U+220f.svg",
[ 0x2210 ] = "U+2210.svg",
[ 0x2213 ] = "Minus-or-plus sign.svg",
[ 0x221A ] = "Root symbol.svg",
[ 0x221E ] = "Infinite.svg",
[ 0x222B ] = "WPint.svg",
[ 0x222E ] = "OintLaTeX.svg",
[ 0x222F ] = "OiintLaTeX.svg",
[ 0x2230 ] = "OiiintLaTeX.svg",
[ 0x2232 ] = "OintclockwiseLaTeX.svg",
[ 0x2233 ] = "OintctrclockwiseLaTeX.svg",
[ 0x2295 ] = "Circled plus.svg",
[ 0x2296 ] = "Circled minus.svg",
[ 0x2297 ] = "Circled times.svg",
[ 0x2298 ] = "Circled slash.svg",
[ 0x2299 ] = "Circled dot.svg",
[ 0x229A ] = "Circled ring.svg",
[ 0x229B ] = "Circled asterisk.svg",
[ 0x229C ] = "Circled equals.svg",
[ 0x229D ] = "Circled hyphen.svg",
[ 0x229E ] = "Squared plus.svg",
[ 0x229F ] = "Squared minus.svg",
[ 0x22A0 ] = "Squared times.svg",
[ 0x22A1 ] = "Squared dot.svg",
[ 0x22A5 ] = "Up tack.svg",
[ 0x2300 ] = "U+2300.svg",
[ 0x2301 ] = "U+2301.svg",
[ 0x2316 ] = "Position indicator.svg",
[ 0x2317 ] = "Viewdata-square-12.5-percent-thickness-and-overshoot.svg",
[ 0x2318 ] = "U+2318.svg",
[ 0x231A ] = "Emoji u231a.svg",
[ 0x231B ] = "Emoji u231b.svg",
[ 0x232B ] = "ISOIEC-9995-7-017--ISO-7000-2023--Symbol-for-Backward-Delete.svg",
[ 0x235F ] = "U+235F.svg",
[ 0x237D ] = "ISOIEC-9995-7-010--ISO-7000-2016--Symbol-for-No-Break-Space.svg",
[ 0x2384 ] = "ISOIEC-9995-7-015--ISO-7000-2021--Symbol-for-Compose-Character.svg",
[ 0x2387 ] = "ISOIEC-9995-7-025--ISO-7000-2105--Symbol-for-Alternate.svg",
[ 0x2388 ] = "Helm symbol.svg",
[ 0x238B ] = "ISOIEC-9995-7-029--ISO-7000-2029--Symbol-for-Escape.svg",
[ 0x2396 ] = "ISOIEC-9995-7-062--ISO-7000-1859--Symbol-for-Decimal-Separator.svg",
[ 0x23A3 ] = "U+23A3.svg",
[ 0x23B3 ] = "U+23B3.svg",
[ 0x23DC ] = "上部连合.svg",
[ 0x23DD ] = "基部连合.svg",
[ 0x23E6 ] = "U+23E6.svg",
[ 0x23E7 ] = "U+23E7.svg",
[ 0x23E9 ] = "Emoji u23e9.svg",
[ 0x23EA ] = "Emoji u23ea.svg",
[ 0x23EB ] = "Emoji u23eb.svg",
[ 0x23EC ] = "Emoji u23ec.svg",
[ 0x23F0 ] = "Emoji u23f0.svg",
[ 0x23F3 ] = "Emoji u23f3.svg",
[ 0x2423 ] = "ISOIEC-9995-7-009--ISO-7000-2015--Symbol-for-Space.svg",
[ 0x2440 ] = "OCR hook.svg",
[ 0x2441 ] = "OCR chair.svg",
[ 0x2442 ] = "OCR fork.svg",
[ 0x2443 ] = "OCR inverted fork.svg",
[ 0x2444 ] = "OCR belt buckle.svg",
[ 0x2445 ] = "OCR bow tie.svg",
[ 0x2446 ] = "OCR branch bank identification.svg",
[ 0x2447 ] = "OCR amount of check.svg",
[ 0x2448 ] = "OCR dash.svg",
[ 0x2449 ] = "OCR customer account number.svg",
[ 0x244A ] = "OCR double backslash.svg",
[ 0x24C0 ] = "Circled latin capital letter k.svg",
[ 0x2500 ] = "Gmftn shor.svg",
[ 0x2502 ] = "Gmftn sver.svg",
[ 0x2504 ] = "Gmftn dhor.svg",
[ 0x2506 ] = "Gmftn dver.svg",
[ 0x250C ] = "Gmftn scross1.svg",
[ 0x2510 ] = "Gmftn scross2.svg",
[ 0x2514 ] = "Gmftn scross3.svg",
[ 0x2518 ] = "Gmftn scross4.svg",
[ 0x251C ] = "Gmftn scross8.svg",
[ 0x2524 ] = "Gmftn scross7.svg",
[ 0x252C ] = "Gmftn scross6.svg",
[ 0x2534 ] = "Gmftn scross5.svg",
[ 0x253C ] = "Gmftn scross.svg",
[ 0x25A0 ] = "U+25A0.svg",
[ 0x25A1 ] = "U+25A1.svg",
[ 0x25A2 ] = "U+25A2.svg",
[ 0x25A3 ] = "U+25A3.svg",
[ 0x25A4 ] = "U+25A4.svg",
[ 0x25A5 ] = "U+25A5.svg",
[ 0x25A6 ] = "U+25A6.svg",
[ 0x25A7 ] = "U+25A7.svg",
[ 0x25A8 ] = "U+25A8.svg",
[ 0x25A9 ] = "U+25A9.svg",
[ 0x25AA ] = "U+25AA.svg",
[ 0x25AB ] = "U+25AB.svg",
[ 0x25AC ] = "U+25AC.svg",
[ 0x25AD ] = "U+25AD.svg",
[ 0x25AE ] = "U+25AE.svg",
[ 0x25AF ] = "U+25AF.svg",
[ 0x25B0 ] = "U+25B0.svg",
[ 0x25B1 ] = "U+25B1.svg",
[ 0x25B2 ] = "U+25B2.svg",
[ 0x25B3 ] = "U+25B3.svg",
[ 0x25B4 ] = "U+25B4.svg",
[ 0x25B5 ] = "U+25B5.svg",
[ 0x25B6 ] = "U+25B6.svg",
[ 0x25B7 ] = "U+25B7.svg",
[ 0x25B8 ] = "U+25B8.svg",
[ 0x25B9 ] = "U+25B9.svg",
[ 0x25BA ] = "U+25BA.svg",
[ 0x25BB ] = "U+25BB.svg",
[ 0x25BC ] = "U+25BC.svg",
[ 0x25BD ] = "U+25BD.svg",
[ 0x25BE ] = "U+25BE.svg",
[ 0x25BF ] = "U+25BF.svg",
[ 0x25C0 ] = "U+25C0.svg",
[ 0x25C1 ] = "U+25C1.svg",
[ 0x25C2 ] = "U+25C2.svg",
[ 0x25C3 ] = "U+25C3.svg",
[ 0x25C4 ] = "U+25C4.svg",
[ 0x25C5 ] = "U+25C5.svg",
[ 0x25C6 ] = "U+25C6.svg",
[ 0x25C7 ] = "U+25C7.svg",
[ 0x25C8 ] = "U+25C8.svg",
[ 0x25C9 ] = "U+25C9.svg",
[ 0x25CA ] = "U+25CA.svg",
[ 0x25CB ] = "U+25CB.svg",
[ 0x25CC ] = "U+25CC.svg",
[ 0x25CD ] = "U+25CD.svg",
[ 0x25CE ] = "U+25CE.svg",
[ 0x25CF ] = "U+25CF.svg",
[ 0x25D0 ] = "U+25D0.svg",
[ 0x25D1 ] = "U+25D1.svg",
[ 0x25D2 ] = "U+25D2.svg",
[ 0x25D3 ] = "U+25D3.svg",
[ 0x25D4 ] = "U+25D4.svg",
[ 0x25D5 ] = "U+25D5.svg",
[ 0x25D6 ] = "U+25D6.svg",
[ 0x25D7 ] = "U+25D7.svg",
[ 0x25D8 ] = "U+25D8.svg",
[ 0x25D9 ] = "U+25D9.svg",
[ 0x25DA ] = "U+25DA.svg",
[ 0x25DB ] = "U+25DB.svg",
[ 0x25DC ] = "U+25DC.svg",
[ 0x25DD ] = "U+25DD.svg",
[ 0x25DE ] = "U+25DE.svg",
[ 0x25DF ] = "U+25DF.svg",
[ 0x25E0 ] = "U+25E0.svg",
[ 0x25E1 ] = "U+25E1.svg",
[ 0x25E2 ] = "U+25E2.svg",
[ 0x25E3 ] = "U+25E3.svg",
[ 0x25E4 ] = "U+25E4.svg",
[ 0x25E5 ] = "U+25E5.svg",
[ 0x25E6 ] = "U+25E6.svg",
[ 0x25E7 ] = "U+25E7.svg",
[ 0x25E8 ] = "U+25E8.svg",
[ 0x25E9 ] = "U+25E9.svg",
[ 0x25EA ] = "U+25EA.svg",
[ 0x25EB ] = "U+25EB.svg",
[ 0x25EC ] = "U+25EC.svg",
[ 0x25ED ] = "U+25ED.svg",
[ 0x25EE ] = "U+25EE.svg",
[ 0x25EF ] = "U+25EF.svg",
[ 0x25F0 ] = "U+25F0.svg",
[ 0x25F1 ] = "U+25F1.svg",
[ 0x25F2 ] = "U+25F2.svg",
[ 0x25F3 ] = "U+25F3.svg",
[ 0x25F4 ] = "U+25F4.svg",
[ 0x25F5 ] = "U+25F5.svg",
[ 0x25F6 ] = "U+25F6.svg",
[ 0x25F7 ] = "U+25F7.svg",
[ 0x25F8 ] = "U+25F8.svg",
[ 0x25F9 ] = "U+25F9.svg",
[ 0x25FA ] = "U+25FA.svg",
[ 0x25FB ] = "U+25FB.svg",
[ 0x25FC ] = "U+25FC.svg",
[ 0x25FD ] = "U+25FD.svg",
[ 0x25FE ] = "U+25FE.svg",
[ 0x25FF ] = "U+25FF.svg",
[ 0x2600 ] = "Black sun with rays (fixed width).svg",
[ 0x2601 ] = "Cloud (fixed width).svg",
[ 0x2602 ] = "U+2602.svg",
[ 0x2603 ] = "U+2603.svg",
[ 0x2604 ] = "Comet symbol (fixed width).svg",
[ 0x2605 ] = "Solid star (fixed width).svg",
[ 0x2606 ] = "Blank star (fixed width).svg",
[ 0x2607 ] = "Symbol code ww 13.svg",
[ 0x2608 ] = "Symbol code ww 17.svg",
[ 0x2609 ] = "Sun symbol (fixed width).svg",
[ 0x260A ] = "Ascending node (fixed width).svg",
[ 0x260B ] = "Descending node (fixed width).svg",
[ 0x260C ] = "Conjunction symbol.svg",
[ 0x260D ] = "Opposition symbol.svg",
[ 0x260E ] = "Emoji u260e.svg",
[ 0x260F ] = "U+260F.svg",
[ 0x2610 ] = "U+2610.svg",
[ 0x2611 ] = "Check mark.svg",
[ 0x2612 ] = "☒.svg",
[ 0x2613 ] = "Japanese Map symbol (Koban).svg",
[ 0x2614 ] = "Emoji u2614.svg",
[ 0x2615 ] = "Emoji u2615.svg",
[ 0x2616 ] = "Shogi blank.svg",
[ 0x2617 ] = "Filled shogi blank.svg",
[ 0x2618 ] = "Shamrock (fixed width).svg",
[ 0x2619 ] = "Aldus leaf unicode2619.svg",
[ 0x261D ] = "Emoji u261d.svg",
[ 0x2620 ] = "Skull and Crossbones.svg",
[ 0x2622 ] = "U+2622.svg",
[ 0x2623 ] = "Biohazard symbol.svg",
[ 0x2624 ] = "Caduceus.svg",
[ 0x2625 ] = "Ankh.svg",
[ 0x2626 ] = "Cross of the Russian Orthodox Church 01.svg",
[ 0x2627 ] = "Simple Labarum2.svg",
[ 0x2628 ] = "Cross-lorraine.svg",
[ 0x2629 ] = "Cross-Potent-Heraldry.svg",
[ 0x262A ] = "IslamSymbol1.svg",
[ 0x262B ] = "Emblem of Iran.svg",
[ 0x262C ] = "Khanda.svg",
[ 0x262D ] = "U+262D.svg",
[ 0x262E ] = "Peace symbol.svg",
[ 0x262F ] = "U+262F.svg",
[ 0x2630 ] = "Trigramme2630 ☰.svg",
[ 0x2631 ] = "Trigramme2631 ☱.svg",
[ 0x2632 ] = "Trigramme2632 ☲.svg",
[ 0x2633 ] = "Trigramme2633 ☳.svg",
[ 0x2634 ] = "Trigramme2634 ☴.svg",
[ 0x2635 ] = "Trigramme2635 ☵.svg",
[ 0x2636 ] = "Trigramme2636 ☶.svg",
[ 0x2637 ] = "Trigramme2637 ☷.svg",
[ 0x2638 ] = "Dharmacakra.svg",
[ 0x2639 ] = "Iconoir emoji-sad.svg",
[ 0x263A ] = "Iconoir emoji.svg",
[ 0x263B ] = "Font Awesome 5 solid smile.svg",
[ 0x263C ] = "Sun with rays (fixed width).svg",
[ 0x263D ] = "Crescent symbol (fixed width).svg",
[ 0x263E ] = "Decrescent symbol (fixed width).svg",
[ 0x263F ] = "Mercury symbol (fixed width).svg",
[ 0x2640 ] = "Venus symbol (fixed width).svg",
[ 0x2641 ] = "Globus cruciger (fixed width).svg",
[ 0x2642 ] = "Male symbol (fixed width).svg",
[ 0x2643 ] = "Jupiter symbol (fixed width).svg",
[ 0x2644 ] = "Saturn symbol (fixed width).svg",
[ 0x2645 ] = "Uranus monogram (fixed width).svg",
[ 0x2646 ] = "Neptune symbol (fixed width).svg",
[ 0x2647 ] = "Pluto monogram.svg",
[ 0x2648 ] = "Aries symbol (fixed width).svg",
[ 0x2649 ] = "Taurus symbol (fixed width).svg",
[ 0x264A ] = "Gemini symbol (fixed width).svg",
[ 0x264B ] = "Cancer symbol (fixed width).svg",
[ 0x264C ] = "Leo symbol (fixed width).svg",
[ 0x264D ] = "Virgo symbol (fixed width).svg",
[ 0x264E ] = "Libra symbol (fixed width).svg",
[ 0x264F ] = "Scorpius symbol (fixed width).svg",
[ 0x2650 ] = "Sagittarius symbol (fixed width).svg",
[ 0x2651 ] = "Capricornus symbol (fixed width).svg",
[ 0x2652 ] = "Aquarius symbol (fixed width).svg",
[ 0x2653 ] = "Pisces symbol (fixed width).svg",
[ 0x2654 ] = "Chess klt45.svg",
[ 0x2655 ] = "Chess qlt45.svg",
[ 0x2656 ] = "Chess rlt45.svg",
[ 0x2657 ] = "Chess blt45.svg",
[ 0x2658 ] = "Chess nlt45.svg",
[ 0x2659 ] = "Chess plt45.svg",
[ 0x265A ] = "Chess kdt45.svg",
[ 0x265B ] = "Chess qdt45.svg",
[ 0x265C ] = "Chess rdt45.svg",
[ 0x265D ] = "Chess bdt45.svg",
[ 0x265E ] = "Chess ndt45.svg",
[ 0x265F ] = "Chess pdt45.svg",
[ 0x2660 ] = "SuitSpades.svg",
[ 0x2661 ] = "U+2661.svg",
[ 0x2662 ] = "U+2662.svg",
[ 0x2663 ] = "SuitClubs.svg",
[ 0x2664 ] = "U+2664.svg",
[ 0x2665 ] = "U+2665.svg",
[ 0x2666 ] = "SuitDiamonds.svg",
[ 0x2667 ] = "U+2667.svg",
[ 0x2668 ] = "Onsen symbol.svg",
[ 0x2669 ] = "1-4 note crotchet (music).svg",
[ 0x266A ] = "1-8 note quaver (music).svg",
[ 0x266B ] = "U+266B d.svg",
[ 0x266C ] = "Figure rythmique deux double croches lien haut.svg",
[ 0x266D ] = "Flat.svg",
[ 0x266E ] = "Natural sign.svg",
[ 0x266F ] = "Sharp.svg",
[ 0x2670 ] = "Eastern Syriac Cross.svg",
[ 0x2671 ] = "Western Syriac Cross.svg",
[ 0x2672 ] = "U+2672.svg",
[ 0x2673 ] = "U+2673 DejaVu Sans.svg",
[ 0x2674 ] = "U+2674 DejaVu Sans.svg",
[ 0x2675 ] = "U+2675 DejaVu Sans.svg",
[ 0x2676 ] = "U+2676 DejaVu Sans.svg",
[ 0x2677 ] = "U+2677 DejaVu Sans.svg",
[ 0x2678 ] = "U+2678 DejaVu Sans.svg",
[ 0x2679 ] = "U+2679 DejaVu Sans.svg",
[ 0x267A ] = "U+267A.svg",
[ 0x267B ] = "Emoji u267b.svg",
[ 0x267C ] = "Simbolo reciclar.svg",
[ 0x267E ] = "Acid-free paper (symbol).svg",
[ 0x267F ] = "Iconoir accessibility-sign.svg",
[ 0x2680 ] = "U+2680.svg",
[ 0x2681 ] = "U+2681.svg",
[ 0x2682 ] = "U+2682.svg",
[ 0x2683 ] = "U+2683.svg",
[ 0x2684 ] = "U+2684.svg",
[ 0x2685 ] = "U+2685.svg",
[ 0x2686 ] = "U+2686.svg",
[ 0x2687 ] = "U+2687.svg",
[ 0x2688 ] = "U+2688.svg",
[ 0x2689 ] = "U+2689.svg",
[ 0x268A ] = "TXJ 1.svg",
[ 0x268B ] = "TXJ 2.svg",
[ 0x268C ] = "TXJ 11.svg",
[ 0x268D ] = "TXJ 12.svg",
[ 0x268E ] = "TXJ 21.svg",
[ 0x268F ] = "TXJ 22.svg",
[ 0x2690 ] = "U+2690.svg",
[ 0x2691 ] = "U+2691.svg",
[ 0x2692 ] = "Schlaegel und Eisen nach DIN 21800.svg",
[ 0x2693 ] = "Anchor (fixed width).svg",
[ 0x2694 ] = "U+2694.svg",
[ 0x2695 ] = "Rod of Asclepius (fixed width).svg",
[ 0x2696 ] = "Scales-symbola.svg",
[ 0x2698 ] = "Flora symbol (fixed width).svg",
[ 0x2699 ] = "Japanese Map symbol (Lighthouse).svg",
[ 0x269B ] = "U+269B.svg",
[ 0x269C ] = "Lys lié.svg",
[ 0x26A0 ] = "U+26A0.svg",
[ 0x26A1 ] = "Emoji u26a1.svg",
[ 0x26A2 ] = "Double Venus symbol.svg",
[ 0x26A3 ] = "Double Mars symbol.svg",
[ 0x26A4 ] = "Heterosexuality symbol.svg",
[ 0x26A5 ] = "Male and female sign.svg",
[ 0x26A6 ] = "Transgender symbol.svg",
[ 0x26A7 ] = "Gender sign.svg",
[ 0x26A8 ] = "U+26A8.svg",
[ 0x26A9 ] = "U+26A9.svg",
[ 0x26AA ] = "Agender symbol.svg",
[ 0x26AC ] = "Engagement symbol.svg",
[ 0x26AD ] = "Marriage symbol (fixed width).svg",
[ 0x26AE ] = "Divorce symbol.svg",
[ 0x26AF ] = "Arsenic symbol.svg",
[ 0x26B2 ] = "Neuter symbol.svg",
[ 0x26B3 ] = "Ceres symbol (fixed width).svg",
[ 0x26B4 ] = "Pallas symbol (fixed width).svg",
[ 0x26B5 ] = "Juno symbol (fixed width).svg",
[ 0x26B6 ] = "Vesta symbol (fixed width).svg",
[ 0x26B7 ] = "Chiron symbol (fixed width).svg",
[ 0x26B8 ] = "Lilith symbol.svg",
[ 0x26B9 ] = "Sextile symbol.svg",
[ 0x26BA ] = "Semisextile symbol.svg",
[ 0x26BB ] = "Quincunx symbol.svg",
[ 0x26BC ] = "Sesquisquare symbol.svg",
[ 0x26BD ] = "Emoji u26bd.svg",
[ 0x26BE ] = "Emoji u26be.svg",
[ 0x26BF ] = "Squared key.svg",
[ 0x26C4 ] = "Emoji u26c4.svg",
[ 0x26C5 ] = "Emoji u26c5.svg",
[ 0x26C9 ] = "Inverted shogi blank.svg",
[ 0x26CA ] = "Inverted filled shogi blank.svg",
[ 0x26CB ] = "Squared diamond.svg",
[ 0x26CE ] = "Ophiuchus symbol (fixed width).svg",
[ 0x26D4 ] = "Emoji u26d4.svg",
[ 0x26E2 ] = "Uranus symbol (fixed width).svg",
[ 0x26E3 ] = "Japanese Map symbol (Government or Municipal office).svg",
[ 0x26E4 ] = "Pentagram (fixed width).svg",
[ 0x26E5 ] = "Interlaced pentagram (right).svg",
[ 0x26E6 ] = "Interlaced pentagram (left).svg",
[ 0x26E7 ] = "Inverted pentagram (fixed width).svg",
[ 0x26E8 ] = "Japanese Map symbol (Hospital).svg",
[ 0x26E9 ] = "U+26E9.svg",
[ 0x26EA ] = "Emoji u26ea.svg",
[ 0x26EB ] = "Japanese Map symbol (Castle).svg",
[ 0x26EC ] = "Japanese Map symbol (Historical site-Place of scenic beauty-Natural monument-Protected animal plant).svg",
[ 0x26ED ] = "Japanese Map symbol (Factory).svg",
[ 0x26EE ] = "Japanese Map symbol (Power plant).svg",
[ 0x26EF ] = "Japanese Map symbol (Lighthouse).svg",
[ 0x26F2 ] = "Emoji u26f2.svg",
[ 0x26F3 ] = "Emoji u26f3.svg",
[ 0x26F5 ] = "Emoji u26f5.svg",
[ 0x26F6 ] = "Four corners.svg",
[ 0x26FA ] = "Emoji u26fa.svg",
[ 0x26FB ] = "Bank symbol.svg",
[ 0x26FD ] = "Emoji u26fd.svg",
[ 0x26FF ] = "Japanese Map symbol (the Self-Defense Forces).svg",
[ 0x2702 ] = "Emoji u2702.svg",
[ 0x2705 ] = "Emoji u2705.svg",
[ 0x2708 ] = "Emoji u2708.svg",
[ 0x2709 ] = "Emoji u2709.svg",
[ 0x270A ] = "Emoji u270a.svg",
[ 0x270B ] = "Emoji u270b.svg",
[ 0x270C ] = "Emoji u270c.svg",
[ 0x270F ] = "Emoji u270f.svg",
[ 0x2712 ] = "Emoji u2712.svg",
[ 0x2713 ] = "Black check.svg",
[ 0x2714 ] = "Emoji u2714.svg",
[ 0x2716 ] = "Emoji u2716.svg",
[ 0x2717 ] = "Black x.svg",
[ 0x271D ] = "Latin-Cross-in-Zapf-Dingbats.svg",
[ 0x2721 ] = "Black Star of David.svg",
[ 0x2728 ] = "Emoji u2728.svg",
[ 0x2733 ] = "Emoji u2733.svg",
[ 0x2734 ] = "Emoji u2734.svg",
[ 0x2744 ] = "Emoji u2744.svg",
[ 0x2747 ] = "Emoji u2747.svg",
[ 0x274C ] = "Emoji u274c.svg",
[ 0x274E ] = "Emoji u274e.svg",
[ 0x2753 ] = "Emoji u2753.svg",
[ 0x2754 ] = "Emoji u2754.svg",
[ 0x2755 ] = "Emoji u2755.svg",
[ 0x2757 ] = "Emoji u2757.svg",
[ 0x2761 ] = "Alinea.svg",
[ 0x2763 ] = "Exclamation Mark Heart Black.svg",
[ 0x2764 ] = "Emoji u2764.svg",
[ 0x2766 ] = "Aldus leaf unicode2766.svg",
[ 0x2767 ] = "Aldus leaf unicode2767.svg",
[ 0x2795 ] = "Emoji u2795.svg",
[ 0x2796 ] = "Emoji u2796.svg",
[ 0x2797 ] = "Emoji u2797.svg",
[ 0x27A1 ] = "Emoji u27a1.svg",
[ 0x27B0 ] = "Emoji u27b0.svg",
[ 0x27BF ] = "Emoji u27bf.svg",
[ 0x27F0 ] = "Magna-hm.png",
[ 0x2800 ] = "Braille NULL.svg",
[ 0x2801 ] = "Braille A1.svg",
[ 0x2802 ] = "Braille Comma.svg",
[ 0x2803 ] = "Braille B2.svg",
[ 0x2804 ] = "Braille Apostrophe.svg",
[ 0x2805 ] = "Braille K.svg",
[ 0x2806 ] = "Braille Semicolon.svg",
[ 0x2807 ] = "Braille L.svg",
[ 0x2808 ] = "Braille Accent.svg",
[ 0x2809 ] = "Braille C3.svg",
[ 0x280A ] = "Braille I9.svg",
[ 0x280B ] = "Braille F6.svg",
[ 0x280C ] = "Braille ST.svg",
[ 0x280D ] = "Braille M.svg",
[ 0x280E ] = "Braille S.svg",
[ 0x280F ] = "Braille P.svg",
[ 0x2810 ] = "Braille ContractionPrefix.svg",
[ 0x2811 ] = "Braille E5.svg",
[ 0x2812 ] = "Braille Colon.svg",
[ 0x2813 ] = "Braille H8.svg",
[ 0x2814 ] = "Braille Asterisk.svg",
[ 0x2815 ] = "Braille O.svg",
[ 0x2816 ] = "Braille ExclamationPoint.svg",
[ 0x2817 ] = "Braille R.svg",
[ 0x2818 ] = "Braille Currency.svg",
[ 0x2819 ] = "Braille D4.svg",
[ 0x281A ] = "Braille J0.svg",
[ 0x281B ] = "Braille G7.svg",
[ 0x281C ] = "Braille Ä.svg",
[ 0x281D ] = "Braille N.svg",
[ 0x281E ] = "Braille T.svg",
[ 0x281F ] = "Braille Q.svg",
[ 0x2820 ] = "Braille CapitalSign.svg",
[ 0x2821 ] = "Braille Å.svg",
[ 0x2822 ] = "Braille QuestionMark.svg",
[ 0x2823 ] = "Braille Ê.svg",
[ 0x2824 ] = "Braille Hyphen.svg",
[ 0x2825 ] = "Braille U.svg",
[ 0x2826 ] = "Braille QuoteOpen.svg",
[ 0x2827 ] = "Braille V.svg",
[ 0x2828 ] = "Braille DecimalPoint.svg",
[ 0x2829 ] = "Braille SH.svg",
[ 0x282A ] = "Braille Ö.svg",
[ 0x282B ] = "Braille Ë.svg",
[ 0x282C ] = "Braille Ò.svg",
[ 0x282D ] = "Braille X.svg",
[ 0x282E ] = "Braille È.svg",
[ 0x282F ] = "Braille AND.svg",
[ 0x2830 ] = "Braille Correction.svg",
[ 0x2831 ] = "Braille Û.svg",
[ 0x2832 ] = "Braille Period.svg",
[ 0x2833 ] = "Braille Ü.svg",
[ 0x2834 ] = "Braille QuoteClose.svg",
[ 0x2835 ] = "Braille Z.svg",
[ 0x2836 ] = "Braille Bracket.svg",
[ 0x2837 ] = "Braille À.svg",
[ 0x2838 ] = "Braille CursiveSign.svg",
[ 0x2839 ] = "Braille Ô.svg",
[ 0x283A ] = "Braille W.svg",
[ 0x283B ] = "Braille Ï.svg",
[ 0x283C ] = "Braille NumberSign.svg",
[ 0x283D ] = "Braille Y.svg",
[ 0x283E ] = "Braille Ù.svg",
[ 0x283F ] = "Braille É.svg",
[ 0x2840 ] = "Braille8 Dots-7.svg",
[ 0x2841 ] = "Braille8 Dots-17.svg",
[ 0x2842 ] = "Braille8 Dots-27.svg",
[ 0x2843 ] = "Braille8 Dots-127.svg",
[ 0x2844 ] = "Braille8 Dots-37.svg",
[ 0x2845 ] = "Braille8 Dots-137.svg",
[ 0x2846 ] = "Braille8 Dots-237.svg",
[ 0x2847 ] = "Braille8 Dots-1237.svg",
[ 0x2848 ] = "Braille8 Dots-47.svg",
[ 0x2849 ] = "Braille8 Dots-147.svg",
[ 0x284A ] = "Braille8 Dots-427.svg",
[ 0x284B ] = "Braille8 Dots-1427.svg",
[ 0x284C ] = "Braille8 Dots-437.svg",
[ 0x284D ] = "Braille8 Dots-1437.svg",
[ 0x284E ] = "Braille8 Dots-4237.svg",
[ 0x284F ] = "Braille8 Dots-14237.svg",
[ 0x2850 ] = "Braille8 Dots-57.svg",
[ 0x2851 ] = "Braille8 Dots-157.svg",
[ 0x2852 ] = "Braille8 Dots-257.svg",
[ 0x2853 ] = "Braille8 Dots-1257.svg",
[ 0x2854 ] = "Braille8 Dots-537.svg",
[ 0x2855 ] = "Braille8 Dots-1537.svg",
[ 0x2856 ] = "Braille8 Dots-2537.svg",
[ 0x2857 ] = "Braille8 Dots-12537.svg",
[ 0x2858 ] = "Braille8 Dots-457.svg",
[ 0x2859 ] = "Braille8 Dots-1457.svg",
[ 0x285A ] = "Braille8 Dots-4257.svg",
[ 0x285B ] = "Braille8 Dots-14257.svg",
[ 0x285C ] = "Braille8 Dots-4537.svg",
[ 0x285D ] = "Braille8 Dots-14537.svg",
[ 0x285E ] = "Braille8 Dots-42537.svg",
[ 0x285F ] = "Braille8 Dots-142537.svg",
[ 0x2860 ] = "Braille8 Dots-67.svg",
[ 0x2861 ] = "Braille8 Dots-167.svg",
[ 0x2862 ] = "Braille8 Dots-267.svg",
[ 0x2863 ] = "Braille8 Dots-1267.svg",
[ 0x2864 ] = "Braille8 Dots-367.svg",
[ 0x2865 ] = "Braille8 Dots-1367.svg",
[ 0x2866 ] = "Braille8 Dots-2367.svg",
[ 0x2867 ] = "Braille8 Dots-12367.svg",
[ 0x2868 ] = "Braille8 Dots-467.svg",
[ 0x2869 ] = "Braille8 Dots-1467.svg",
[ 0x286A ] = "Braille8 Dots-4267.svg",
[ 0x286B ] = "Braille8 Dots-14267.svg",
[ 0x286C ] = "Braille8 Dots-4367.svg",
[ 0x286D ] = "Braille8 Dots-14367.svg",
[ 0x286E ] = "Braille8 Dots-42367.svg",
[ 0x286F ] = "Braille8 Dots-142367.svg",
[ 0x2870 ] = "Braille8 Dots-567.svg",
[ 0x2871 ] = "Braille8 Dots-1567.svg",
[ 0x2872 ] = "Braille8 Dots-2567.svg",
[ 0x2873 ] = "Braille8 Dots-12567.svg",
[ 0x2874 ] = "Braille8 Dots-5367.svg",
[ 0x2875 ] = "Braille8 Dots-15367.svg",
[ 0x2876 ] = "Braille8 Dots-25367.svg",
[ 0x2877 ] = "Braille8 Dots-125367.svg",
[ 0x2878 ] = "Braille8 Dots-4567.svg",
[ 0x2879 ] = "Braille8 Dots-14567.svg",
[ 0x287A ] = "Braille8 Dots-42567.svg",
[ 0x287B ] = "Braille8 Dots-142567.svg",
[ 0x287C ] = "Braille8 Dots-45367.svg",
[ 0x287D ] = "Braille8 Dots-145367.svg",
[ 0x287E ] = "Braille8 Dots-425367.svg",
[ 0x287F ] = "Braille8 Dots-1425367.svg",
[ 0x2880 ] = "Braille8 Dots-8.svg",
[ 0x2881 ] = "Braille8 Dots-18.svg",
[ 0x2882 ] = "Braille8 Dots-28.svg",
[ 0x2883 ] = "Braille8 Dots-128.svg",
[ 0x2884 ] = "Braille8 Dots-38.svg",
[ 0x2885 ] = "Braille8 Dots-138.svg",
[ 0x2886 ] = "Braille8 Dots-238.svg",
[ 0x2887 ] = "Braille8 Dots-1238.svg",
[ 0x2888 ] = "Braille8 Dots-48.svg",
[ 0x2889 ] = "Braille8 Dots-148.svg",
[ 0x288A ] = "Braille8 Dots-428.svg",
[ 0x288B ] = "Braille8 Dots-1428.svg",
[ 0x288C ] = "Braille8 Dots-438.svg",
[ 0x288D ] = "Braille8 Dots-1438.svg",
[ 0x288E ] = "Braille8 Dots-4238.svg",
[ 0x288F ] = "Braille8 Dots-14238.svg",
[ 0x2890 ] = "Braille8 Dots-58.svg",
[ 0x2891 ] = "Braille8 Dots-158.svg",
[ 0x2892 ] = "Braille8 Dots-258.svg",
[ 0x2893 ] = "Braille8 Dots-1258.svg",
[ 0x2894 ] = "Braille8 Dots-538.svg",
[ 0x2895 ] = "Braille8 Dots-1538.svg",
[ 0x2896 ] = "Braille8 Dots-2538.svg",
[ 0x2897 ] = "Braille8 Dots-12538.svg",
[ 0x2898 ] = "Braille8 Dots-458.svg",
[ 0x2899 ] = "Braille8 Dots-1458.svg",
[ 0x289A ] = "Braille8 Dots-4258.svg",
[ 0x289B ] = "Braille8 Dots-14258.svg",
[ 0x289C ] = "Braille8 Dots-4538.svg",
[ 0x289D ] = "Braille8 Dots-14538.svg",
[ 0x289E ] = "Braille8 Dots-42538.svg",
[ 0x289F ] = "Braille8 Dots-142538.svg",
[ 0x28A0 ] = "Braille8 Dots-68.svg",
[ 0x28A1 ] = "Braille8 Dots-168.svg",
[ 0x28A2 ] = "Braille8 Dots-268.svg",
[ 0x28A3 ] = "Braille8 Dots-1268.svg",
[ 0x28A4 ] = "Braille8 Dots-368.svg",
[ 0x28A5 ] = "Braille8 Dots-1368.svg",
[ 0x28A6 ] = "Braille8 Dots-2368.svg",
[ 0x28A7 ] = "Braille8 Dots-12368.svg",
[ 0x28A8 ] = "Braille8 Dots-468.svg",
[ 0x28A9 ] = "Braille8 Dots-1468.svg",
[ 0x28AA ] = "Braille8 Dots-4268.svg",
[ 0x28AB ] = "Braille8 Dots-14268.svg",
[ 0x28AC ] = "Braille8 Dots-4368.svg",
[ 0x28AD ] = "Braille8 Dots-14368.svg",
[ 0x28AE ] = "Braille8 Dots-42368.svg",
[ 0x28AF ] = "Braille8 Dots-142368.svg",
[ 0x28B0 ] = "Braille8 Dots-568.svg",
[ 0x28B1 ] = "Braille8 Dots-1568.svg",
[ 0x28B2 ] = "Braille8 Dots-2568.svg",
[ 0x28B3 ] = "Braille8 Dots-12568.svg",
[ 0x28B4 ] = "Braille8 Dots-5368.svg",
[ 0x28B5 ] = "Braille8 Dots-15368.svg",
[ 0x28B6 ] = "Braille8 Dots-25368.svg",
[ 0x28B7 ] = "Braille8 Dots-125368.svg",
[ 0x28B8 ] = "Braille8 Dots-4568.svg",
[ 0x28B9 ] = "Braille8 Dots-14568.svg",
[ 0x28BA ] = "Braille8 Dots-42568.svg",
[ 0x28BB ] = "Braille8 Dots-142568.svg",
[ 0x28BC ] = "Braille8 Dots-45368.svg",
[ 0x28BD ] = "Braille8 Dots-145368.svg",
[ 0x28BE ] = "Braille8 Dots-425368.svg",
[ 0x28BF ] = "Braille8 Dots-1425368.svg",
[ 0x28C0 ] = "Braille8 Dots-78.svg",
[ 0x28C1 ] = "Braille8 Dots-178.svg",
[ 0x28C2 ] = "Braille8 Dots-278.svg",
[ 0x28C3 ] = "Braille8 Dots-1278.svg",
[ 0x28C4 ] = "Braille8 Dots-378.svg",
[ 0x28C5 ] = "Braille8 Dots-1378.svg",
[ 0x28C6 ] = "Braille8 Dots-2378.svg",
[ 0x28C7 ] = "Braille8 Dots-12378.svg",
[ 0x28C8 ] = "Braille8 Dots-478.svg",
[ 0x28C9 ] = "Braille8 Dots-1478.svg",
[ 0x28CA ] = "Braille8 Dots-4278.svg",
[ 0x28CB ] = "Braille8 Dots-14278.svg",
[ 0x28CC ] = "Braille8 Dots-4378.svg",
[ 0x28CD ] = "Braille8 Dots-14378.svg",
[ 0x28CE ] = "Braille8 Dots-42378.svg",
[ 0x28CF ] = "Braille8 Dots-142378.svg",
[ 0x28D0 ] = "Braille8 Dots-578.svg",
[ 0x28D1 ] = "Braille8 Dots-1578.svg",
[ 0x28D2 ] = "Braille8 Dots-2578.svg",
[ 0x28D3 ] = "Braille8 Dots-12578.svg",
[ 0x28D4 ] = "Braille8 Dots-5378.svg",
[ 0x28D5 ] = "Braille8 Dots-15378.svg",
[ 0x28D6 ] = "Braille8 Dots-25378.svg",
[ 0x28D7 ] = "Braille8 Dots-125378.svg",
[ 0x28D8 ] = "Braille8 Dots-4578.svg",
[ 0x28D9 ] = "Braille8 Dots-14578.svg",
[ 0x28DA ] = "Braille8 Dots-42578.svg",
[ 0x28DB ] = "Braille8 Dots-142578.svg",
[ 0x28DC ] = "Braille8 Dots-45378.svg",
[ 0x28DD ] = "Braille8 Dots-145378.svg",
[ 0x28DE ] = "Braille8 Dots-425378.svg",
[ 0x28DF ] = "Braille8 Dots-1425378.svg",
[ 0x28E0 ] = "Braille8 Dots-678.svg",
[ 0x28E1 ] = "Braille8 Dots-1678.svg",
[ 0x28E2 ] = "Braille8 Dots-2678.svg",
[ 0x28E3 ] = "Braille8 Dots-12678.svg",
[ 0x28E4 ] = "Braille8 Dots-3678.svg",
[ 0x28E5 ] = "Braille8 Dots-13678.svg",
[ 0x28E6 ] = "Braille8 Dots-23678.svg",
[ 0x28E7 ] = "Braille8 Dots-123678.svg",
[ 0x28E8 ] = "Braille8 Dots-4678.svg",
[ 0x28E9 ] = "Braille8 Dots-14678.svg",
[ 0x28EA ] = "Braille8 Dots-42678.svg",
[ 0x28EB ] = "Braille8 Dots-142678.svg",
[ 0x28EC ] = "Braille8 Dots-43678.svg",
[ 0x28ED ] = "Braille8 Dots-143678.svg",
[ 0x28EE ] = "Braille8 Dots-423678.svg",
[ 0x28EF ] = "Braille8 Dots-1423678.svg",
[ 0x28F0 ] = "Braille8 Dots-5678.svg",
[ 0x28F1 ] = "Braille8 Dots-15678.svg",
[ 0x28F2 ] = "Braille8 Dots-25678.svg",
[ 0x28F3 ] = "Braille8 Dots-125678.svg",
[ 0x28F4 ] = "Braille8 Dots-53678.svg",
[ 0x28F5 ] = "Braille8 Dots-153678.svg",
[ 0x28F6 ] = "Braille8 Dots-253678.svg",
[ 0x28F7 ] = "Braille8 Dots-1253678.svg",
[ 0x28F8 ] = "Braille8 Dots-45678.svg",
[ 0x28F9 ] = "Braille8 Dots-145678.svg",
[ 0x28FA ] = "Braille8 Dots-425678.svg",
[ 0x28FB ] = "Braille8 Dots-1425678.svg",
[ 0x28FC ] = "Braille8 Dots-453678.svg",
[ 0x28FD ] = "Braille8 Dots-1453678.svg",
[ 0x28FE ] = "Braille8 Dots-4253678.svg",
[ 0x28FF ] = "Braille8 Dots-14253678.svg",
[ 0x2934 ] = "Emoji u2934.svg",
[ 0x2935 ] = "Emoji u2935.svg",
[ 0x29B0 ] = "Reverse empty set.svg",
[ 0x29B5 ] = "Circle with horizontal bar.svg",
[ 0x29B6 ] = "Nitrogen symbol (Dalton).svg",
[ 0x29B7 ] = "Sodium symbol (Dalton).svg",
[ 0x29BA ] = "T-and-O map symbol (inverted).svg",
[ 0x29BB ] = "Tutty symbol.svg",
[ 0x29BE ] = "Circled white bullet.svg",
[ 0x29BF ] = "Circled bullet.svg",
[ 0x29DF ] = "Arsenic symbol.svg",
[ 0x29E7 ] = "Thermodynamic-using-cambria-math.svg",
[ 0x29EC ] = "Eris arrow symbol (fixed width).svg",
[ 0x2A71 ] = "Equals sign above plus sign.svg",
[ 0x2A72 ] = "Plus sign above equals sign.svg",
[ 0x2B05 ] = "Emoji u2b05.svg",
[ 0x2B06 ] = "Emoji u2b06.svg",
[ 0x2B07 ] = "Emoji u2b07.svg",
[ 0x2B1B ] = "Emoji u2b1b.svg",
[ 0x2B1C ] = "Square symbol.svg",
[ 0x2B20 ] = "Pentagon symbol.svg",
[ 0x2B21 ] = "Hexagon (fixed width).svg",
[ 0x2B50 ] = "Emoji u2b50.svg",
[ 0x2B55 ] = "Emoji u2b55.svg",
[ 0x2B59 ] = "Japanese Map symbol (Police station).svg",
[ 0x2BA0 ] = "ISOIEC-9995-7-023--ISO-7000-0651--Symbol-for-Return-New-Line.svg",
[ 0x2BBA ] = "Overlapping white squares.svg",
[ 0x2BBB ] = "Overlapping white and black squares.svg",
[ 0x2BBC ] = "Overlapping black squares.svg",
[ 0x2BC9 ] = "Neptune monogram (fixed width).svg",
[ 0x2BCE ] = "Four-point cusp.svg",
[ 0x2BCF ] = "Rotated four-point cusp.svg",
[ 0x2BD0 ] = "Position indicator (square).svg",
[ 0x2BD3 ] = "Pluto symbol (fixed width).svg",
[ 0x2BD4 ] = "Pluto symbol (southern Europe).svg",
[ 0x2BD5 ] = "Charon symbol (fixed width).svg",
[ 0x2BD6 ] = "Pluto symbol (northern Europe).svg",
[ 0x2BD7 ] = "Astrological symbol for the hypothetical planet Transpluto.svg",
[ 0x2BD8 ] = "Astrological symbol for the hypothetical planet Proserpina.svg",
[ 0x2BD9 ] = "Astraea symbol (astrology, fixed width).svg",
[ 0x2BDA ] = "Hygiea symbol (astrological, fixed width).svg",
[ 0x2BDB ] = "Pholus symbol.svg",
[ 0x2BDC ] = "Nessus symbol.svg",
[ 0x2BDD ] = "Astrological symbol for White Moon Selena.svg",
[ 0x2BDE ] = "True Black Moon Lilith.svg",
[ 0x2BDF ] = "Astrological symbol for True Light Moon Arta.svg",
[ 0x2BE0 ] = "Astrological planet Cupido.svg",
[ 0x2BE1 ] = "Astrological planet Hades.svg",
[ 0x2BE2 ] = "Astrological planet Zeus.svg",
[ 0x2BE3 ] = "Astrological planet Kronos.svg",
[ 0x2BE4 ] = "Astrological planet Apollon.svg",
[ 0x2BE5 ] = "Astrological planet Admetos.svg",
[ 0x2BE6 ] = "Astrological planet Vulcanus.svg",
[ 0x2BE7 ] = "Astrological planet Poseidon.svg",
[ 0x2BE8 ] = "Left half star.svg",
[ 0x2BE9 ] = "Right half star.svg",
[ 0x2BEA ] = "Star solid left.svg",
[ 0x2BEB ] = "Star solid right.svg",
[ 0x2BF0 ] = "Eris symbol (fixed width).svg",
[ 0x2BF1 ] = "Eris arrow symbol (fixed width).svg",
[ 0x2BF2 ] = "Sedna symbol (fixed width).svg",
[ 0x2BF3 ] = "Russian astrological symbol vigintile.svg",
[ 0x2BF4 ] = "Russian astrological symbol novile.svg",
[ 0x2BF5 ] = "Russian astrological symbol quintile.svg",
[ 0x2BF6 ] = "Russian astrological symbol binovile.svg",
[ 0x2BF7 ] = "Russian astrological symbol sentagon.svg",
[ 0x2BF8 ] = "Russian astrological symbol tredecile.svg",
[ 0x2BF9 ] = "Equals sign with infinity below.svg",
[ 0x2BFA ] = "United symbol.svg",
[ 0x2BFB ] = "Separated symbol.svg",
[ 0x2BFC ] = "Doubled symbol.svg",
[ 0x2BFD ] = "Mars symbol up arrow.svg",
[ 0x2C00 ] = "Glagolitic az.svg",
[ 0x2C01 ] = "Glagolitic buky.svg",
[ 0x2C02 ] = "Glagolitic vedi.svg",
[ 0x2C03 ] = "Glagolitic glagoli.svg",
[ 0x2C04 ] = "Glagolitic dobro.svg",
[ 0x2C05 ] = "Glagolitic jest.svg",
[ 0x2C06 ] = "Glagolitic zhivete.svg",
[ 0x2C07 ] = "Glagolitic dzelo.svg",
[ 0x2C08 ] = "Glagolitic zemlja.svg",
[ 0x2C09 ] = "Glagolitic Iota.svg",
[ 0x2C0A ] = "Glagolitic izhe.svg",
[ 0x2C0B ] = "Glagolitic i.svg",
[ 0x2C0C ] = "Glagolitic djerv.svg",
[ 0x2C0D ] = "Glagolitic kako.svg",
[ 0x2C0E ] = "Glagolitic ljudi.svg",
[ 0x2C0F ] = "Glagolitic mislete.svg",
[ 0x2C10 ] = "Glagolitic nash.svg",
[ 0x2C11 ] = "Glagolitic on.svg",
[ 0x2C12 ] = "Glagolitic pokoi.svg",
[ 0x2C13 ] = "Glagolitic rtsi.svg",
[ 0x2C14 ] = "Glagolitic slovo.svg",
[ 0x2C15 ] = "Glagolitic tverdo.svg",
[ 0x2C16 ] = "Glagolitic uk.svg",
[ 0x2C17 ] = "Glagolitic fert.svg",
[ 0x2C18 ] = "Glagolitic kher.svg",
[ 0x2C19 ] = "Glagolitic ot.svg",
[ 0x2C1A ] = "Glagolitic shta.svg",
[ 0x2C1B ] = "Glagolitic tsi.svg",
[ 0x2C1C ] = "Glagolitic cherv.svg",
[ 0x2C1D ] = "Glagolitic sha.svg",
[ 0x2C1E ] = "Glagolitic yer.svg",
[ 0x2C1F ] = "Glagolitic yeri.svg",
[ 0x2C20 ] = "Glagolitic yerj.svg",
[ 0x2C21 ] = "Glagolitic yat.svg",
[ 0x2C22 ] = "Glagolitic capital letter Spidery Ha.svg",
[ 0x2C23 ] = "Glagolitic yu.svg",
[ 0x2C24 ] = "Glagolitic ens.svg",
[ 0x2C25 ] = "Glagolitic capital letter Small Yus with tail.svg",
[ 0x2C26 ] = "Glagolitic capital letter Yo.svg",
[ 0x2C27 ] = "Glagolitic yens.svg",
[ 0x2C28 ] = "Glagolitic ons.svg",
[ 0x2C29 ] = "Glagolitic yons.svg",
[ 0x2C2A ] = "Glagolitic fita.svg",
[ 0x2C2B ] = "Glagolitic izhitsa.svg",
[ 0x2C2C ] = "Glagolitic capital letter Shtapic.svg",
[ 0x2C2D ] = "Glagolitic Letter Trokutasti A.svg",
[ 0x2C2E ] = "Glagolitic capital letter Latinate Myslite.svg",
[ 0x2C7A ] = "OwLowRingInside.svg",
[ 0x2C80 ] = "Coptic Alpha-maj.svg",
[ 0x2C81 ] = "Coptic Alpha-min.svg",
[ 0x2C82 ] = "Coptic Beta-maj.svg",
[ 0x2C83 ] = "Coptic Beta-min.svg",
[ 0x2C84 ] = "Coptic Gamma-maj.svg",
[ 0x2C85 ] = "Coptic Gamma-min.svg",
[ 0x2C86 ] = "Coptic Dalda-maj.svg",
[ 0x2C87 ] = "Coptic Dalda-min.svg",
[ 0x2C88 ] = "Coptic Ei-maj.svg",
[ 0x2C89 ] = "Coptic Ei-min.svg",
[ 0x2C8A ] = "Coptic Sou.svg",
[ 0x2C8C ] = "Coptic Zeta-maj.svg",
[ 0x2C8D ] = "Coptic Zeta-min.svg",
[ 0x2C8E ] = "Coptic Eta-maj.svg",
[ 0x2C8F ] = "Coptic Eta-min.svg",
[ 0x2C90 ] = "Coptic Theta-maj.svg",
[ 0x2C91 ] = "Coptic Theta-min.svg",
[ 0x2C92 ] = "Coptic Iota-maj.svg",
[ 0x2C93 ] = "Coptic Iota-min.svg",
[ 0x2C94 ] = "Coptic Kappa-maj.svg",
[ 0x2C95 ] = "Coptic Kappa-min.svg",
[ 0x2C96 ] = "Coptic Laula-maj.svg",
[ 0x2C97 ] = "Coptic Laula-min.svg",
[ 0x2C98 ] = "Coptic Me-maj.svg",
[ 0x2C99 ] = "Coptic Me-min.svg",
[ 0x2C9A ] = "Coptic Ne-maj.svg",
[ 0x2C9B ] = "Coptic Ne-min.svg",
[ 0x2C9C ] = "Coptic Kxi-maj.svg",
[ 0x2C9D ] = "Coptic Kxi-min.svg",
[ 0x2C9E ] = "Coptic Ou-maj.svg",
[ 0x2C9F ] = "Coptic Ou-min.svg",
[ 0x2CA0 ] = "Coptic Pi-maj.svg",
[ 0x2CA1 ] = "Coptic Pi-min.svg",
[ 0x2CA2 ] = "Coptic Ro-maj.svg",
[ 0x2CA3 ] = "Coptic Ro-min.svg",
[ 0x2CA4 ] = "Coptic Semma-maj.svg",
[ 0x2CA5 ] = "Coptic Semma-min.svg",
[ 0x2CA6 ] = "Coptic Tau-maj.svg",
[ 0x2CA7 ] = "Coptic Tau-min.svg",
[ 0x2CA8 ] = "Coptic He-maj.svg",
[ 0x2CA9 ] = "Coptic He-min.svg",
[ 0x2CAA ] = "Coptic Phi-maj.svg",
[ 0x2CAB ] = "Coptic Phi-min.svg",
[ 0x2CAC ] = "Coptic Khi-maj.svg",
[ 0x2CAD ] = "Coptic Khi-min.svg",
[ 0x2CAE ] = "Coptic Pxi-maj.svg",
[ 0x2CAF ] = "Coptic Pxi-min.svg",
[ 0x2CB0 ] = "Coptic O-maj.svg",
[ 0x2CB1 ] = "Coptic O-min.svg",
[ 0x2CC0 ] = "Coptic Sampi.svg",
[ 0x2CE7 ] = "Coptic Stauros.svg",
[ 0x2CE9 ] = "Coptic Khi Ro.svg",
[ 0x2D30 ] = "Tifinagh Letter Ya.svg",
[ 0x2D31 ] = "Tifinagh Letter Yab.svg",
[ 0x2D32 ] = "Tifinagh Letter Yabh.svg",
[ 0x2D33 ] = "Tifinagh Letter Yag.svg",
[ 0x2D34 ] = "Tifinagh Letter Yaghh.svg",
[ 0x2D35 ] = "Tifinagh Letter Berber Academy Yaj.svg",
[ 0x2D36 ] = "Tifinagh Letter Yaj.svg",
[ 0x2D37 ] = "Tifinagh Letter Yad.svg",
[ 0x2D38 ] = "Tifinagh Letter Yadh.svg",
[ 0x2D39 ] = "Tifinagh Letter Yadd.svg",
[ 0x2D3A ] = "Tifinagh Letter Yaddh.svg",
[ 0x2D3B ] = "Tifinagh Letter Yey.svg",
[ 0x2D3C ] = "Tifinagh Letter Yaf.svg",
[ 0x2D3D ] = "Tifinagh Letter Yak.svg",
[ 0x2D3E ] = "Tifinagh Letter Tuareg Yak.svg",
[ 0x2D3F ] = "Tifinagh Letter Yakhh.svg",
[ 0x2D40 ] = "Tifinagh Letter Yah.svg",
[ 0x2D41 ] = "Tifinagh Letter Berber Academy Yah.svg",
[ 0x2D42 ] = "Tifinagh Letter Tuareg Yah.svg",
[ 0x2D43 ] = "Tifinagh Letter Yahh.svg",
[ 0x2D44 ] = "Tifinagh Letter Yaa.svg",
[ 0x2D45 ] = "Tifinagh Letter Yakh.svg",
[ 0x2D46 ] = "Tifinagh Letter Tuareg Yakh.svg",
[ 0x2D47 ] = "Tifinagh Letter Yaq.svg",
[ 0x2D48 ] = "Tifinagh Letter Tuareg Yaq.svg",
[ 0x2D49 ] = "Tifinagh Letter Yi.svg",
[ 0x2D4A ] = "Tifinagh Letter Yazh.svg",
[ 0x2D4B ] = "Tifinagh Letter Ahaggar Yazh.svg",
[ 0x2D4C ] = "Tifinagh Letter Tuareg Yazh.svg",
[ 0x2D4D ] = "Tifinagh Letter Yal.svg",
[ 0x2D4E ] = "Tifinagh Letter Yam.svg",
[ 0x2D4F ] = "Tifinagh Letter Yan.svg",
[ 0x2D50 ] = "Tifinagh Letter Tuareg Yagn.svg",
[ 0x2D51 ] = "Tifinagh Letter Tuareg Yang.svg",
[ 0x2D52 ] = "Tifinagh Letter Yap.svg",
[ 0x2D53 ] = "Tifinagh Letter Yu.svg",
[ 0x2D54 ] = "Tifinagh Letter Yar.svg",
[ 0x2D55 ] = "Tifinagh Letter Yarr.svg",
[ 0x2D56 ] = "Tifinagh Letter Yagh.svg",
[ 0x2D57 ] = "Tifinagh Letter Tuareg Yagh.svg",
[ 0x2D58 ] = "Tifinagh Letter Ayer Yagh.svg",
[ 0x2D59 ] = "Tifinagh Letter Yas.svg",
[ 0x2D5A ] = "Tifinagh Letter Yass.svg",
[ 0x2D5B ] = "Tifinagh Letter Yash.svg",
[ 0x2D5C ] = "Tifinagh Letter Yat.svg",
[ 0x2D5D ] = "Tifinagh Letter Yath.svg",
[ 0x2D5E ] = "Tifinagh Letter Yach.svg",
[ 0x2D5F ] = "Tifinagh Letter Yatt.svg",
[ 0x2D60 ] = "Tifinagh Letter Yav.svg",
[ 0x2D61 ] = "Tifinagh Letter Yaw.svg",
[ 0x2D62 ] = "Tifinagh Letter Yay.svg",
[ 0x2D63 ] = "Tifinagh Letter Yaz.svg",
[ 0x2D64 ] = "Tifinagh Letter Tawellemet Yaz.svg",
[ 0x2D65 ] = "Tifinagh Letter Yazz.svg",
[ 0x2D66 ] = "Tifinagh Letter Ye.svg",
[ 0x2D67 ] = "Tifinagh Letter Yo.svg",
[ 0x2D6F ] = "Tifinagh Modifier Letter Labialization Mark.svg",
[ 0x2D70 ] = "Tifinagh Separator Mark.svg",
[ 0x2D7F ] = "Tifinagh Consonant Joiner.svg",
[ 0x2D80 ] = "ETHIOPIC SYLLABLE LOA.svg",
[ 0x2D81 ] = "ETHIOPIC SYLLABLE MOA.svg",
[ 0x2D82 ] = "ETHIOPIC SYLLABLE ROA.svg",
[ 0x2D83 ] = "ETHIOPIC SYLLABLE SOA.svg",
[ 0x2D84 ] = "ETHIOPIC SYLLABLE SHOA.svg",
[ 0x2D85 ] = "ETHIOPIC SYLLABLE BOA.svg",
[ 0x2D86 ] = "ETHIOPIC SYLLABLE TOA.svg",
[ 0x2D87 ] = "ETHIOPIC SYLLABLE COA.svg",
[ 0x2D88 ] = "ETHIOPIC SYLLABLE NOA.svg",
[ 0x2D89 ] = "ETHIOPIC SYLLABLE NYOA.svg",
[ 0x2D8A ] = "ETHIOPIC SYLLABLE GLOTTAL OA.svg",
[ 0x2D8B ] = "ETHIOPIC SYLLABLE ZOA.svg",
[ 0x2D8C ] = "ETHIOPIC SYLLABLE DOA.svg",
[ 0x2D8D ] = "ETHIOPIC SYLLABLE DDOA.svg",
[ 0x2D8E ] = "ETHIOPIC SYLLABLE JOA.svg",
[ 0x2D8F ] = "ETHIOPIC SYLLABLE THOA.svg",
[ 0x2D90 ] = "ETHIOPIC SYLLABLE CHOA.svg",
[ 0x2D91 ] = "ETHIOPIC SYLLABLE PHOA.svg",
[ 0x2D92 ] = "ETHIOPIC SYLLABLE POA.svg",
[ 0x2D93 ] = "ETHIOPIC SYLLABLE GGWA.svg",
[ 0x2D94 ] = "ETHIOPIC SYLLABLE GGWI.svg",
[ 0x2D95 ] = "ETHIOPIC SYLLABLE GGWEE.svg",
[ 0x2D96 ] = "ETHIOPIC SYLLABLE GGWE.svg",
[ 0x2DA0 ] = "ETHIOPIC SYLLABLE SSA.svg",
[ 0x2DA1 ] = "ETHIOPIC SYLLABLE SSU.svg",
[ 0x2DA2 ] = "ETHIOPIC SYLLABLE SSI.svg",
[ 0x2DA3 ] = "ETHIOPIC SYLLABLE SSAA.svg",
[ 0x2DA4 ] = "ETHIOPIC SYLLABLE SSEE.svg",
[ 0x2DA5 ] = "ETHIOPIC SYLLABLE SSE.svg",
[ 0x2DA6 ] = "ETHIOPIC SYLLABLE SSO.svg",
[ 0x2DA8 ] = "ETHIOPIC SYLLABLE CCA.svg",
[ 0x2DA9 ] = "ETHIOPIC SYLLABLE CCU.svg",
[ 0x2DAA ] = "ETHIOPIC SYLLABLE CCI.svg",
[ 0x2DAB ] = "ETHIOPIC SYLLABLE CCAA.svg",
[ 0x2DAC ] = "ETHIOPIC SYLLABLE CCEE.svg",
[ 0x2DAD ] = "ETHIOPIC SYLLABLE CCE.svg",
[ 0x2DAE ] = "ETHIOPIC SYLLABLE CCO.svg",
[ 0x2DB0 ] = "ETHIOPIC SYLLABLE ZZA.svg",
[ 0x2DB1 ] = "ETHIOPIC SYLLABLE ZZU.svg",
[ 0x2DB2 ] = "ETHIOPIC SYLLABLE ZZI.svg",
[ 0x2DB3 ] = "ETHIOPIC SYLLABLE ZZAA.svg",
[ 0x2DB4 ] = "ETHIOPIC SYLLABLE ZZEE.svg",
[ 0x2DB5 ] = "ETHIOPIC SYLLABLE ZZE.svg",
[ 0x2DB6 ] = "ETHIOPIC SYLLABLE ZZO.svg",
[ 0x2DB8 ] = "ETHIOPIC SYLLABLE CCHA.svg",
[ 0x2DB9 ] = "ETHIOPIC SYLLABLE CCHU.svg",
[ 0x2DBA ] = "ETHIOPIC SYLLABLE CCHI.svg",
[ 0x2DBB ] = "ETHIOPIC SYLLABLE CCHAA.svg",
[ 0x2DBC ] = "ETHIOPIC SYLLABLE CCHEE.svg",
[ 0x2DBD ] = "ETHIOPIC SYLLABLE CCHE.svg",
[ 0x2DBE ] = "ETHIOPIC SYLLABLE CCHO.svg",
[ 0x2DC0 ] = "ETHIOPIC SYLLABLE QYA.svg",
[ 0x2DC1 ] = "ETHIOPIC SYLLABLE QYU.svg",
[ 0x2DC2 ] = "ETHIOPIC SYLLABLE QYI.svg",
[ 0x2DC3 ] = "ETHIOPIC SYLLABLE QYAA.svg",
[ 0x2DC4 ] = "ETHIOPIC SYLLABLE QYEE.svg",
[ 0x2DC5 ] = "ETHIOPIC SYLLABLE QYE.svg",
[ 0x2DC6 ] = "ETHIOPIC SYLLABLE QYO.svg",
[ 0x2DC8 ] = "ETHIOPIC SYLLABLE KYA.svg",
[ 0x2DC9 ] = "ETHIOPIC SYLLABLE KYU.svg",
[ 0x2DCA ] = "ETHIOPIC SYLLABLE KYI.svg",
[ 0x2DCB ] = "ETHIOPIC SYLLABLE KYAA.svg",
[ 0x2DCC ] = "ETHIOPIC SYLLABLE KYEE.svg",
[ 0x2DCD ] = "ETHIOPIC SYLLABLE KYE.svg",
[ 0x2DCE ] = "ETHIOPIC SYLLABLE KYO.svg",
[ 0x2DD0 ] = "ETHIOPIC SYLLABLE XYA.svg",
[ 0x2DD1 ] = "ETHIOPIC SYLLABLE XYU.svg",
[ 0x2DD2 ] = "ETHIOPIC SYLLABLE XYI.svg",
[ 0x2DD3 ] = "ETHIOPIC SYLLABLE XYAA.svg",
[ 0x2DD4 ] = "ETHIOPIC SYLLABLE XYEE.svg",
[ 0x2DD5 ] = "ETHIOPIC SYLLABLE XYE.svg",
[ 0x2DD6 ] = "ETHIOPIC SYLLABLE XYO.svg",
[ 0x2DD8 ] = "ETHIOPIC SYLLABLE GYA.svg",
[ 0x2DD9 ] = "ETHIOPIC SYLLABLE GYU.svg",
[ 0x2DDA ] = "ETHIOPIC SYLLABLE GYI.svg",
[ 0x2DDB ] = "ETHIOPIC SYLLABLE GYAA.svg",
[ 0x2DDC ] = "ETHIOPIC SYLLABLE GYEE.svg",
[ 0x2DDD ] = "ETHIOPIC SYLLABLE GYE.svg",
[ 0x2DDE ] = "ETHIOPIC SYLLABLE GYO.svg",
[ 0x2E18 ] = "Gnaborretni.svg",
[ 0x2E2E ] = "Irony mark full.svg",
[ 0x2E52 ] = "Latin capital letter tironian Et.svg",
[ 0x2E80 ] = "Cjrm-y6.svg",
[ 0x2E86 ] = "Cjrm-b9.svg",
[ 0x2E8A ] = "Cjrm-y1.svg",
[ 0x2E8C ] = "Cjrm-f6.svg",
[ 0x2E95 ] = "Cjr6m-s2.svg",
[ 0x2E9C ] = "Cjrm-a2.svg",
[ 0x2E9D ] = "Cjrm-b3.svg",
[ 0x2EBB ] = "Cjwm-lm3.svg",
[ 0x2EBC ] = "Cjrm-b2.svg",
[ 0x2ECF ] = "Regular Style CJKV Radical 163 (1).svg",
[ 0x2FF0 ] = "U+2FF0.svg",
[ 0x2FF1 ] = "U+2FF1.svg",
[ 0x2FF2 ] = "U+2FF2.svg",
[ 0x2FF3 ] = "U+2FF3.svg",
[ 0x2FF4 ] = "U+2FF4.svg",
[ 0x2FF5 ] = "U+2FF5.svg",
[ 0x2FF6 ] = "U+2FF6.svg",
[ 0x2FF7 ] = "U+2FF7.svg",
[ 0x2FF8 ] = "U+2FF8.svg",
[ 0x2FF9 ] = "U+2FF9.svg",
[ 0x2FFA ] = "U+2FFA.svg",
[ 0x2FFB ] = "U+2FFB.svg",
}
7myusthpsjd3tu3c5ze8h7ed1ttof2y
Module:category tree/poscatboiler/data/languages
828
5079
13293
13008
2022-08-01T21:16:13Z
Asinis632
1829
Scribunto
text/plain
local raw_categories = {}
local raw_handlers = {}
local m_languages = require("Module:languages")
-- This handles language categories of the form e.g. [[Category:French language]] and
-- [[:Category:British Sign Language]] and regional variant categories of the form
-- e.g. [[Category:Regional French]].
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Regionalisms"] = {
description = "Categories that group terms in regional varieties of various languages.",
additional = "{{{umbrella_msg}}}",
parents = {
"Kirapim",
},
}
raw_categories["All languages"] = {
intro = "{{sisterlinks|Category:Languages}}\n[[File:Languages world map-transparent background.svg|thumb|right|250px|Rough world map of language families]]",
description = "This category contains the categories for every language on Wiktionary.",
additional = "Not all languages that Wiktionary recognises may have a category here yet. There are many that have " ..
"not yet received any attention from editors, mainly because not all Wiktionary users know about every single " ..
"language. See [[Wiktionary:List of languages]] for a full list.",
parents = {
"Kirapim",
},
}
raw_categories["All extinct languages"] = {
description = "This category contains the categories for every [[extinct language]] on Wiktionary.",
additional = "Do not confuse this category with [[:Category:Extinct languages]] which is for the names of extinct languages.",
parents = {
"All languages",
},
}
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
local function makeCategoryLink(object)
return "[[:Grup:" .. object:getCategoryName() .. "|" .. object:getCanonicalName() .. "]]"
end
local function ucfirst(text)
return mw.getContentLanguage():ucfirst(text)
end
local function linkbox(lang, setwiki, setwikt, setsister, entryname)
local wiktionarylinks = "''None.''"
local canonicalName = lang:getCanonicalName()
local wikimediaLanguages = lang:getWikimediaLanguages()
local nameWithLanguage = lang:getCategoryName("nocap")
local categoryName = lang:getCategoryName()
local wikipediaArticle = setwiki or lang:getWikipediaArticle()
setsister = setsister and ucfirst(setsister) or nil
if setwikt then
require "Module:debug".track "langcatboiler/setwikt"
if setwikt == "-" then
require "Module:debug".track "langcatboiler/setwikt/hyphen"
end
end
if setwikt ~= "-" and wikimediaLanguages and wikimediaLanguages[1] then
wiktionarylinks = {}
for _, wikimedialang in ipairs(wikimediaLanguages) do
table.insert(wiktionarylinks,
(wikimedialang:getCanonicalName() ~= canonicalName and "(''" .. wikimedialang:getCanonicalName() .. "'') " or "") ..
"'''[[:" .. wikimedialang:getCode() .. ":|" .. wikimedialang:getCode() .. ".wiktionary.org]]'''")
end
wiktionarylinks = table.concat(wiktionarylinks, "<br/>")
end
local plural = wikimediaLanguages[2] and "s" or ""
return table.concat{
[=[<div style="clear: right; border: solid #aaa 1px; margin: 1 1 1 1; background: #f9f9f9; width: 270px; padding: 5px; margin: 5px; text-align: left; float: right">
<div style="text-align: center; margin-bottom: 10px; margin-top: 5px">''']=], nameWithLanguage, [=['''</div>
{| style="font-size: 90%; background: #f9f9f9;"
|-
| style="vertical-align: middle; height: 35px; width: 35px;" | [[File:Wiktionary-logo-v2.svg|35px|none|Wiktionary]]
|| '']=], nameWithLanguage, [=[ edition]=], plural, [=[ of Wiktionary''
|-
| colspan="2" style="padding-left: 10px; border-bottom: 1px solid lightgray;" | ]=], wiktionarylinks, [=[
|-
| style="vertical-align: middle; height: 35px" | [[File:Wikipedia-logo.png|35px|none|Wikipedia]]
|| ''Wikipedia article about ]=], nameWithLanguage, [=[''
|-
| colspan="2" style="padding-left: 10px; border-bottom: 1px solid lightgray;" | ]=], (setwiki == "-" and "''None.''" or "'''[[w:" .. wikipediaArticle .. "|" .. wikipediaArticle .. "]]'''"), [=[
|-
| style="vertical-align: middle; height: 35px" | [[File:Wikimedia-logo.svg|35px|none|Wikimedia Commons]]
|| ''Links related to ]=], nameWithLanguage, [=[ in sister projects at Wikimedia Commons''
|-
| colspan="2" style="padding-left: 10px; border-bottom: 1px solid lightgray;" | ]=], (setsister == "-" and "''None.''" or "'''[[commons:Category:" .. (setsister or categoryName) .. "|" .. (setsister or categoryName) .. "]]'''"), [=[
|-
| style="vertical-align: middle; height: 35px" | [[File:Crystal kfind.png|35px|none|Considerations]]
|| ]=], nameWithLanguage, [=[ considerations
|-
| colspan="2" style="padding-left: 10px; border-bottom: 1px solid lightgray;" | '''[[Wiktionary:About ]=], canonicalName, [=[]]'''
|-
| style="vertical-align: middle; height: 35px" | [[File:Open book nae 02.svg|35px|none|Entry]]
|| ]=], nameWithLanguage, [=[ entry
|-
| colspan="2" style="padding-left: 10px;" | ''']=], require("Module:links").full_link({lang = m_languages.getByCode("en"), term = entryname or canonicalName}), [=['''
|}
</div>]=]
}
end
local function edit_link(title, text)
return '<span class="plainlinks">['
.. tostring(mw.uri.fullUrl(title, { action = "edit" }))
.. ' ' .. text .. ']</span>'
end
-- Should perhaps use wiki syntax.
local function infobox(lang)
local ret = {}
table.insert(ret, '<table class="wikitable language-category-info"')
if type(lang.getRawData) == "function" then
local raw_data = lang:getRawData()
if raw_data then
local replacements = {
[1] = "canonical-name",
[2] = "wikidata-item",
[3] = "family",
}
local function replacer(letter1, letter2)
return letter1:lower() .. "-" .. letter2:lower()
end
-- For each key in the language data modules, returns a descriptive
-- kebab-case version (containing ASCII lowercase words separated
-- by hyphens).
local function kebab_case(key)
key = replacements[key] or key
key = key:gsub("(%l)(%u)", replacer):gsub("(%l)_(%l)", replacer)
return key
end
local function html_attribute_encode(str)
str = mw.text.jsonEncode(str)
:gsub('"', """)
-- & in attributes is automatically escaped.
-- :gsub("&", "&")
:gsub("<", "<")
:gsub(">", ">")
return str
end
pcall(function ()
table.insert(ret, ' data-code="' .. lang:getCode() .. '"')
for k, v in require("Module:table").sortedPairs(lang:getRawData()) do
table.insert(ret, " data-" .. kebab_case(k)
.. '="'
.. html_attribute_encode(v)
.. '"')
end
end)
end
end
table.insert(ret, '>\n')
table.insert(ret, '<tr class="language-category-data">\n<th colspan="2">'
.. edit_link("Module:" .. m_languages.getDataModuleName(lang:getCode()),
"Edit language data")
.. "</th>\n</tr>\n")
table.insert(ret, "<tr>\n<th>Canonical name</th><td>" .. lang:getCanonicalName() .. "</td>\n</tr>\n")
local otherNames = lang:getOtherNames(true)
if otherNames then
local names = {}
for _, name in ipairs(otherNames) do
table.insert(names, "<li>" .. name .. "</li>")
end
if #names > 0 then
table.insert(ret, "<tr>\n<th>Other names</th><td><ul>" .. table.concat(names, "\n") .. "</ul></td>\n</tr>\n")
end
end
local aliases = lang:getAliases()
if aliases then
local names = {}
for _, name in ipairs(aliases) do
table.insert(names, "<li>" .. name .. "</li>")
end
if #names > 0 then
table.insert(ret, "<tr>\n<th>Aliases</th><td><ul>" .. table.concat(names, "\n") .. "</ul></td>\n</tr>\n")
end
end
local varieties = lang:getVarieties()
if varieties then
local names = {}
for _, name in ipairs(varieties) do
if type(name) == "string" then
table.insert(names, "<li>" .. name .. "</li>")
else
assert(type(name) == "table")
local first_var
local subvars = {}
for i, var in ipairs(name) do
if i == 1 then
first_var = var
else
table.insert(subvars, "<li>" .. var .. "</li>")
end
end
if #subvars > 0 then
table.insert(names, "<li><dl><dt>" .. first_var .. "</dt>\n<dd><ul>" .. table.concat(subvars, "\n") .. "</ul></dd></dl></li>")
elseif first_var then
table.insert(names, "<li>" .. first_var .. "</li>")
end
end
end
if #names > 0 then
table.insert(ret, "<tr>\n<th>Varieties</th><td><ul>" .. table.concat(names, "\n") .. "</ul></td>\n</tr>\n")
end
end
table.insert(ret, "<tr>\n<th>[[Wiktionary:Languages|Language code]]</th><td><code>" .. lang:getCode() .. "</code></td>\n</tr>\n")
table.insert(ret, "<tr>\n<th>[[Wiktionary:Families|Language family]]</th>\n")
local fam = lang:getFamily()
local famCode = fam and fam:getCode()
if not fam then
table.insert(ret, "<td>unclassified</td>")
elseif famCode == "qfa-iso" then
table.insert(ret, "<td>[[:Category:Language isolates|language isolate]]</td>")
elseif famCode == "qfa-mix" then
table.insert(ret, "<td>[[:Category:Mixed languages|mixed language]]</td>")
elseif famCode == "sgn" then
table.insert(ret, "<td>[[:Category:Sign languages|sign language]]</td>")
elseif famCode == "crp" then
table.insert(ret, "<td>[[:Category:Creole or pidgin languages|creole or pidgin]]</td>")
elseif famCode == "art" then
table.insert(ret, "<td>[[:Category:Constructed languages|constructed language]]</td>")
else
table.insert(ret, "<td>" .. makeCategoryLink(fam) .. "</td>")
end
table.insert(ret, "\n</tr>\n<tr>\n<th>Ancestors</th>\n")
local ancestors, ancestorChain = lang:getAncestors(), lang:getAncestorChain()
if ancestors[2] then
local ancestorList = {}
for i, anc in ipairs(ancestors) do
ancestorList[i] = "<li>" .. makeCategoryLink(anc) .. "</li>"
end
table.insert(ret, "<td><ul>\n" .. table.concat(ancestorList, "\n") .. "</ul></td>\n")
elseif ancestorChain[1] then
table.insert(ret, "<td><ul>\n")
local chain = {}
for i, anc in ipairs(ancestorChain) do
chain[i] = "<li>" .. makeCategoryLink(anc) .. "</li>"
end
table.insert(ret, table.concat(chain, "\n<ul>\n"))
for _, _ in ipairs(chain) do
table.insert(ret, "</ul>")
end
table.insert(ret, "</td>\n")
else
table.insert(ret, "<td>unknown</td>\n")
end
table.insert(ret, "</tr>\n")
local scripts = lang:getScripts()
if scripts[1] then
local script_text = {}
for _, sc in ipairs(scripts) do
local text = {}
local code = sc:getCode()
if code ~= "Hira" then
table.insert(text, "<li>" .. makeCategoryLink(sc))
end
if code == "Jpan" then
local m_scripts = require("Module:scripts")
local Hani = m_scripts.getByCode("Hani")
local Hira = m_scripts.getByCode("Hira")
local Kana = m_scripts.getByCode("Kana")
table.insert(text, "<ul>")
table.insert(text, "<li>" .. makeCategoryLink(Hani) .. "</li>")
table.insert(text, "<li>" .. makeCategoryLink(Hira) .. "</li>")
table.insert(text, "<li>" .. makeCategoryLink(Kana) .. "</li>")
table.insert(text, "</ul>")
elseif code == "Kore" then
local m_scripts = require("Module:scripts")
local Hang = m_scripts.getByCode("Hang")
local Hani = m_scripts.getByCode("Hani")
table.insert(text, "<ul>")
table.insert(text, "<li>" .. makeCategoryLink(Hang) .. "</li>")
table.insert(text, "<li>" .. makeCategoryLink(Hani) .. "</li>")
table.insert(text, "</ul>")
end
table.insert(text, "</li>")
table.insert(script_text, table.concat(text, "\n"))
end
table.insert(ret, "<tr>\n<th>[[Wiktionary:Scripts|Scripts]]</th>\n<td><ul>\n" .. table.concat(script_text, "\n") .. "</ul></td>\n</tr>\n")
else
table.insert(ret, "<tr>\n<th>[[Wiktionary:Scripts|Scripts]]</th>\n<td>not specified</td>\n</tr>\n")
end
if lang._rawData.translit_module then
local translit_module = lang._rawData.translit_module
local translit_module_info = {}
table.insert(translit_module_info,
("[[Module:%s]]"):format(translit_module))
if translit_module == "translit-redirect" then
local data = mw.loadData("Module:translit-redirect/data")[lang:getCode()]
if data then
table.insert(translit_module_info, ":")
local redirects_to = {}
local m_scripts = require "Module:scripts"
for script, data in require "Module:table".sortedPairs(data) do
-- Skip boolean fields like "debug_mode" and "noError".
if type(data) == "table" then
table.insert(redirects_to,
("\n* <code>%s</code>: %s"):format(
script,
data.module and ("[[Module:%s]]"):format(data.module)
or "(none)"))
end
end
table.insert(translit_module_info, table.concat(redirects_to))
end
end
table.insert(ret, [=[
<tr>
<th>[[Wiktionary:Transliteration and romanization|Transliteration<br>module]]</th>
<td>]=] .. table.concat(translit_module_info) .. [=[</td>
</tr>
]=])
end
local wikidataItem = lang:getWikidataItem()
if lang:getWikidataItem() and mw.wikibase then
local URL = mw.wikibase.getEntityUrl(wikidataItem)
local link
if URL then
link = '[' .. URL .. ' ' .. wikidataItem .. ']'
else
link = '<span class="error">Invalid Wikidata item: <code>' .. wikidataItem .. '</code></span>'
end
table.insert(ret, "<tr><th>Wikidata</th><td>" .. link .. "</td></tr>")
end
table.insert(ret, "</table>")
return table.concat(ret)
end
local function NavFrame(content, title)
return '<div class="NavFrame"><div class="NavHead">'
.. (title or '{{{title}}}') .. '</div>'
.. '<div class="NavContent" style="text-align: left;">'
.. content
.. '</div></div>'
end
local function get_description_intro_additional(lang, countries, extinct, setwiki, setwikt, setsister, entryname)
local nameWithLanguage = lang:getCategoryName("nocap")
if lang:getCode() == "und" then
local description =
"This is the main category of the '''" .. nameWithLanguage .. "''', represented in Wiktionary by the [[Wiktionary:Languages|code]] '''" .. lang:getCode() .. "'''. " ..
"This language contains terms in historical writing, whose meaning has not yet been determined by scholars."
return description, nil, nil
end
local canonicalName = lang:getCanonicalName()
local intro = linkbox(lang, setwiki, setwikt, setsister, entryname)
local the_prefix
if canonicalName:find(" Language$") then
the_prefix = ""
else
the_prefix = "the "
end
local description = "This is the main category of " .. the_prefix .. "'''" .. nameWithLanguage .. "'''."
local country_links = {}
for _, country in ipairs(countries) do
if country ~= "UNKNOWN" then
local country_without_the = country:match("^the (.*)$")
if country_without_the then
table.insert(country_links, "the [[" .. country_without_the .. "]]")
else
table.insert(country_links, "[[" .. country .. "]]")
end
end
end
local country_desc
if #country_links > 0 then
local country_link_text = require("Module:table").serialCommaJoin(country_links)
if extinct then
country_desc = "It is an [[extinct language]] that was formerly spoken in " .. country_link_text .. ".\n\n"
else
country_desc = "It is spoken in " .. country_link_text .. ".\n\n"
end
elseif extinct then
country_desc = "It is an [[extinct language]]."
else
country_desc = ""
end
local add = country_desc .. "Information about " .. canonicalName .. ":\n\n" .. infobox(lang)
if lang:getType() == "reconstructed" then
add = add .. "\n\n" ..
ucfirst(canonicalName) .. " is a reconstructed language. Its words and roots are not directly attested in any written works, but have been reconstructed through the ''comparative method'', " ..
"which finds regular similarities between languages that cannot be explained by coincidence or word-borrowing, and extrapolates ancient forms from these similarities.\n\n" ..
"According to our [[Wiktionary:Criteria for inclusion|criteria for inclusion]], terms in " .. canonicalName ..
" should '''not''' be present in entries in the main namespace, but may be added to the Reconstruction: namespace."
elseif lang:getType() == "appendix-constructed" then
add = add .. "\n\n" ..
ucfirst(canonicalName) .. " is a constructed language that is only in sporadic use. " ..
"According to our [[Wiktionary:Criteria for inclusion|criteria for inclusion]], terms in " .. canonicalName ..
" should '''not''' be present in entries in the main namespace, but may be added to the Appendix: namespace. " ..
"All terms in this language may be available at [[Appendix:" .. ucfirst(canonicalName) .. "]]."
end
local about = mw.title.new("Wiktionary:About " .. canonicalName)
if about.exists then
add = add .. "\n\n" ..
"Please see '''[[Wiktionary:About " .. canonicalName .. "]]''' for information and special considerations for creating " .. nameWithLanguage .. " entries."
end
local ok, tree_of_descendants = pcall(
require("Module:family tree").print_children,
lang:getCode(), {
protolanguage_under_family = true,
must_have_descendants = true
})
if ok then
if tree_of_descendants then
add = add .. NavFrame(
tree_of_descendants,
"Family tree")
else
add = add .. "\n\n" .. ucfirst(lang:getCanonicalName())
.. " has no descendants or varieties listed in Wiktionary's language data modules."
end
else
mw.log("error while generating tree: " .. tostring(tree_of_descendants))
end
return description, intro, add
end
local function get_parents(lang, countries, extinct)
local canonicalName = lang:getCanonicalName()
local ret = {{name = "All languages", sort = canonicalName}}
local fam = lang:getFamily()
local famCode = fam and fam:getCode()
-- FIXME: Some of the following categories should be added to this module.
if not fam then
table.insert(ret, {name = "Category:Unclassified languages", sort = canonicalName})
elseif famCode == "qfa-iso" then
table.insert(ret, {name = "Category:Language isolates", sort = canonicalName})
elseif famCode == "qfa-mix" then
table.insert(ret, {name = "Category:Mixed languages", sort = canonicalName})
elseif famCode == "sgn" then
table.insert(ret, {name = "Category:All sign languages", sort = canonicalName})
elseif famCode == "crp" then
table.insert(ret, {name = "Category:Creole or pidgin languages", sort = canonicalName})
for _, anc in ipairs(lang:getAncestors()) do
table.insert(ret, {name = "Category:" .. ucfirst(anc:getCanonicalName()) .. "-based creole or pidgin languages", sort = canonicalName})
end
elseif famCode == "art" then
if lang:getType() == "appendix-constructed" then
table.insert(ret, {name = "Category:Appendix-only constructed languages", sort = canonicalName})
else
table.insert(ret, {name = "Category:Constructed languages", sort = canonicalName})
end
for _, anc in ipairs(lang:getAncestors()) do
table.insert(ret, {name = "Category:" .. ucfirst(anc:getCanonicalName()) .. "-based constructed languages", sort = canonicalName})
end
else
table.insert(ret, {name = "Category:" .. fam:getCategoryName(), sort = canonicalName})
if lang:getType() == "reconstructed" then
table.insert(ret, {name = "Category:Reconstructed languages", sort = (mw.ustring.gsub(canonicalName, "^Proto%-", ""))})
end
end
for _, sc in ipairs(lang:getScripts()) do
table.insert(ret, {name = "Category:" .. sc:getCategoryName() .. " languages", sort = canonicalName})
if sc:getCode() == "Jpan" then
table.insert(ret, {name = "Category:" .. require("Module:scripts").getByCode("Hani"):getCategoryName() .. " languages", sort = canonicalName})
table.insert(ret, {name = "Category:" .. require("Module:scripts").getByCode("Hira"):getCategoryName() .. " languages", sort = canonicalName})
table.insert(ret, {name = "Category:" .. require("Module:scripts").getByCode("Kana"):getCategoryName() .. " languages", sort = canonicalName})
elseif sc:getCode() == "Kore" then
table.insert(ret, {name = "Category:" .. require("Module:scripts").getByCode("Hang"):getCategoryName() .. " languages", sort = canonicalName})
table.insert(ret, {name = "Category:" .. require("Module:scripts").getByCode("Hani"):getCategoryName() .. " languages", sort = canonicalName})
end
end
if lang:hasTranslit() then
table.insert(ret, {name = "Category:Languages with automatic transliteration", sort = canonicalName})
end
local saw_country = false
for _, country in ipairs(countries) do
if country ~= "UNKNOWN" then
table.insert(ret, "Category:Languages of " .. country)
saw_country = true
end
end
if extinct then
table.insert(ret, {name = "All extinct languages", sort = canonicalName})
end
if not saw_country then
table.insert(ret, "Category:Languages not sorted into a country category")
end
return ret
end
local function get_children(lang)
local ret = {}
-- FIXME: We should work on the children mechanism so it isn't necessary to manually specify these.
for _, label in ipairs({"appendices", "entry maintenance", "lemmas", "names", "phrases", "rhymes", "symbols", "templates", "terms by etymology", "terms by usage"}) do
table.insert(ret, {name = label, is_label = true})
end
table.insert(ret, {name = "terms derived from {{{langname}}}", is_label = true, lang = false})
table.insert(ret, {module = "topic cat", args = {code = "{{{langcode}}}", label = "all topics"}, sort = "all topics"})
table.insert(ret, {name = "Regional {{{langname}}}"})
table.insert(ret, {name = "Requests concerning {{{langname}}}"})
table.insert(ret, {name = "Category:Rhymes:{{{langname}}}", description = "Lists of {{{langname}}} words by their rhymes."})
table.insert(ret, {name = "Category:User {{{langcode}}}", description = "Wiktionary users categorized by fluency levels in {{{langname}}}."})
return ret
end
-- Handle language categories of the form e.g. [[:Category:French language]] and
-- [[:Category:British Sign Language]].
table.insert(raw_handlers, function(data)
local lang
local langname = data.category:match("^(.*) language$")
if langname then
lang = m_languages.getByCanonicalName(langname)
elseif data.category:find(" Language$") then
lang = m_languages.getByCanonicalName(data.category)
end
if not lang then
return nil
end
local params = {
[4] = {list = true},
["setwiki"] = {},
["setwikt"] = {},
["setsister"] = {},
["entryname"] = {},
["extinct"] = {type = "boolean"},
}
local args = require("Module:parameters").process(data.args, params)
-- If called from inside, don't require any arguments, as they can't be known
-- in general and aren't needed just to generate the first parent (used for
-- breadcrumbs).
if #args[4] == 0 and not data.called_from_inside then
-- At least one country must be specified unless the language is constructed (e.g. Esperanto) or reconstructed (e.g. Proto-Indo-European).
local fam = lang:getFamily()
if lang:getType() ~= "reconstructed" and not (fam and fam:getCode() == "art") then
error("At least one country (param 1=) must be specified for language '" .. lang:getCanonicalName() .. "' (code '" .. lang:getCode() .. "'). " ..
"Use the value UNKNOWN if the language's location is truly unknown.")
end
end
local description, intro, additional = "", "", ""
-- If called from inside the category tree system, it's called when generating
-- parents or children, and we don't need to generate the description or additional
-- text (which is very expensive in terms of memory because it calls [[Module:family tree]],
-- which calls [[Module:languages/alldata]]).
if not data.called_from_inside then
description, intro, additional = get_description_intro_additional(
lang, args[4], args.extinct, args.setwiki, args.setwikt, args.setsister, args.entryname
)
end
return {
description = description,
lang = lang:getCode(),
intro = intro,
additional = additional,
breadcrumb = lang:getCanonicalName(),
parents = get_parents(lang, args[4], args.extinct),
extra_children = get_children(lang),
umbrella = false,
can_be_empty = true,
}, true
end)
-- Handle categories such as [[:Category:Regional French]] and [[:Category:Regional Ancient Greek]].
table.insert(raw_handlers, function(data)
local langname = data.category:match("^Regional (.*)$")
if langname then
local lang = require("Module:languages").getByCanonicalName(langname)
if lang then
return {
lang = lang:getCode(),
description = "Categories containing terms in regional varieties or dialects of " .. lang:makeCategoryLink() .. ".",
additional = "This category may also directly contain terms that are uncategorized regionalisms. Such terms should usually be recategorized by the particular regional variety they belong to.",
parents = {
"{{{langcat}}}",
{name = "Regionalisms", sort = langname},
},
breadcrumb = "Regional",
}
end
end
end)
return {RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}
fd7juyirmmv47q017ldhfa0mhbqyekk
Module:category tree/poscatboiler/data/lemmas
828
5080
13299
13009
2022-08-01T21:37:57Z
Asinis632
1829
Scribunto
text/plain
local labels = {}
local raw_categories = {}
local handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
local diminutive_augmentative_poses = {
"adjectives",
"adveb",
"interjections",
"nouns",
"numerals",
"prefixes",
"proper nouns",
"pronouns",
"suffixes",
"verbs"
}
labels["lemmas"] = {
description = "{{{langname}}} [[Wiktionary:Lemmas|lemmas]], categorized by their part of speech.",
umbrella_parents = "Fundamental",
parents = {{name = "{{{langcat}}}", raw = true, sort = " "}},
}
labels["abstract verbs"] = {
description = "{{{langname}}} abstract verbs of motion whose motion is multidirectional (as opposed to unidirectional) or indirect, or whose action is repeated or in a series, instead of being a single, completed action. Abstract verbs are always imperfective in aspect, even with prefixes that are normally associated with the perfective aspect.",
additional = "See also [[abstract verb]].",
parents = {"verbs"},
}
labels["action nouns"] = {
description = "{{{langname}}} nouns denoting action of a verb or verbal root that it is derived from.",
parents = {"nouns"},
}
labels["act-related adverbs"] = {
description = "{{{langname}}} adverbs that indicate the motive or other background information for an action.",
parents = {"adveb"},
}
labels["active verbs"] = {
description = "{{{langname}}} verbs that indicate an activity",
parents = {"verbs"},
}
labels["adjective concords"] = {
description = "{{{langname}}} concords that are prefixed to adjective stems.",
parents = {"concords"},
}
labels["adjectives"] = {
description = "{{{langname}}} terms that give attributes to nouns, extending their definitions.",
parents = {"lemmas"},
}
labels["adverbial accusatives"] = {
description = "Accusative case-forms in {{{langname}}} used as adverbs.",
parents = {"adveb"},
}
labels["adveb"] = {
description = "{{{langname}}} terms that modify clauses, sentences and phrases directly.",
parents = {"lemmas"},
}
labels["affixes"] = {
description = "Morphemes attached to existing {{{langname}}} words.",
parents = {"morphemes"},
}
labels["agent nouns"] = {
description = "{{{langname}}} nouns that denote an agent that performs the action denoted by the verb from which the noun is derived.",
parents = {"nouns"},
}
labels["ambipositions"] = {
description = "{{{langname}}} adpositions that can occur either before or after their objects.",
parents = {"lemmas"},
}
labels["ambitransitive verbs"] = {
description = "{{{langname}}} verbs that may or may not direct actions, occurrences or states to grammatical objects.",
parents = {"verbs", "transitive verbs", "intransitive verbs"},
}
labels["animal commands"] = {
description = "{{{langname}}} words used to communicate with animals.",
parents = {"interjections"},
}
labels["articles"] = {
description = "{{{langname}}} terms that indicate and specify nouns.",
parents = {"determiners"},
}
labels["aspect adverbs"] = {
description = "{{{langname}}} adverbs that express [[w:Grammatical aspect|grammatical aspect]], describing the flow of time in relation to a statement.",
parents = {"adveb"},
}
for _, pos in ipairs(diminutive_augmentative_poses) do
labels["augmentative " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are derived from a base word to convey big size or big intensity.",
parents = {pos},
}
end
labels["attenuative verbs"] = {
description = "{{{langname}}} verbs that indicate that an action or event is performed or takes place gently, lightly, partially, perfunctorily or to an otherwise reduced extent.",
parents = {"verbs"},
}
labels["autobenefactive verbs"] = {
description = "{{{langname}}} verbs that indicate that the agent of an action is also its benefactor.",
parents = {"verbs"},
}
labels["automative verbs"] = {
description = "{{{langname}}} verbs that indicate actions directed at or a change of state of the grammatical subject.",
parents = {"verbs"},
}
labels["auxiliary verbs"] = {
description = "{{{langname}}} verbs that provide additional conjugations for other verbs.",
parents = {"verbs"},
}
labels["biaspectual verbs"] = {
description = "{{{langname}}} verbs that can be both imperfective and perfective.",
parents = {"verbs"},
}
labels["causative verbs"] = {
description = "{{{langname}}} verbs that express causing actions or states rather than performing or being them directly. Use this only for separate verbs (as opposed to causative forms that are part of the inflection of verbs).",
parents = {"verbs"},
}
labels["circumfixes"] = {
description = "Affixes attached to both the beginning and the end of {{{langname}}} words, functioning together as single units.",
parents = {"morphemes"},
}
labels["circumpositions"] = {
description = "{{{langname}}} adpositions that appear on both sides of their objects.",
parents = {"lemmas"},
}
labels["classifiers"] = {
description = "{{{langname}}} terms that classify nouns according to their meanings.",
parents = {"lemmas"},
}
labels["clitics"] = {
description = "{{{langname}}} morphemes that function as independent words, but are always attached to another word.",
parents = {"morphemes"},
}
for _, pos in ipairs { "nouns", "suffixes" } do
labels["collective " .. pos] = {
description = "{{{langname}}} " .. pos .. " that indicate groups of related things or beings, without the need of grammatical pluralization.",
parents = {pos},
}
end
labels["combining forms"] = {
description = "Forms of {{{langname}}} words that do not occur independently, but are used when joined with other words.",
parents = {"morphemes"},
}
labels["comparative-only adjectives"] = {
description = "{{{langname}}} adjectives that are only used in their comparative forms.",
parents = {"adjectives"},
}
labels["completive verbs"] = {
description = "{{{langname}}} verbs which refer to the completion of an action which has already commenced or which has already been performed upon a subset of the entities which it affects.",
parents = {"verbs"},
}
labels["concords"] = {
description = "{{{langname}}} prefixes attached to words to show agreement with a noun or pronoun.",
parents = {"prefixes"},
}
labels["concrete verbs"] = {
description = "{{{langname}}} concrete verbs refer to a verbal aspect in verbs of motion that is unidirectional (as opposed to multidirectional), a definitely directed motion, or a single, completed action (instead of a repeated action or series of actions). Concrete verbs may be either imperfective or perfective.",
additional = "See also [[concrete verb]].",
parents = {"verbs"},
}
labels["conjunctions"] = {
description = "{{{langname}}} terms that connect words, phrases or clauses together.",
parents = {"lemmas"},
}
labels["conjunctive adverbs"] = {
description = "{{{langname}}} adverbs that connect two independent clauses together.",
parents = {"adveb"},
}
labels["continuative verbs"] = {
description = "{{{langname}}} verbs that express continuing action.",
parents = {"verbs"},
}
labels["control verbs"] = {
description = "{{{langname}}} verbs that take multiple arguments, one of which is another verb. One of the control verb's arguments is syntactically both an argument of the control verb and an argument of the other verb.",
parents = {"verbs"},
}
labels["cooperative verbs"] = {
description = "{{{langname}}} verbs that indicate cooperation",
parents = {"verbs"},
}
labels["coordinating conjunctions"] = {
description = "{{{langname}}} conjunctions that indicate equal syntactic importance between connected items.",
parents = {"conjunctions"},
}
labels["copulative verbs"] = {
description = "{{{langname}}} verbs that may take adjectives as their complement.",
parents = {"verbs"},
}
for _, pos in ipairs { "nouns", "proper nouns" } do
labels["countable " .. pos] = {
description = "{{{langname}}} " .. pos .. " that can be quantified directly by numerals.",
parents = {pos},
}
end
labels["counters"] = {
description = "{{{langname}}} terms that combine with numerals to express quantity of nouns.",
parents = {"lemmas"},
}
labels["cumulative verbs"] = {
description = "{{{langname}}} verbs which indicate that an action or event gradually yields a certain or significant quantity or effect.",
parents = {"verbs"},
}
labels["degree adverbs"] = {
description = "{{{langname}}} adverbs that express a particular degree to which the word they modify applies.",
parents = {"adveb"},
}
labels["delimitative verbs"] = {
description = "{{{langname}}} verbs which indicate that an action or event is performed or takes place briefly or to an otherwise reduced extent.",
parents = {"verbs"},
}
labels["demonstrative adjectives"] = {
description = "{{{langname}}} adjectives that refer to nouns, comparing them to external references.",
parents = {"adjectives", {name = "demonstrative pro-forms", sort = "adjectives"}},
}
labels["demonstrative adverbs"] = {
description = "{{{langname}}} adverbs that refer to other adverbs, comparing them to external references.",
parents = {"adveb", {name = "demonstrative pro-forms", sort = "adveb"}},
}
labels["denominal verbs"] = { -- in [[Appendix:Glossary]]; "denominative" more frequent?
description = "{{{langname}}} verbs that derive from nouns.",
parents = { "verbs" },
}
labels["demonstrative determiners"] = {
description = "{{{langname}}} determiners that refer to nouns, comparing them to external references.",
parents = {"determiners", {name = "demonstrative pro-forms", sort = "determiners"}},
}
labels["demonstrative pronouns"] = {
description = "{{{langname}}} pronouns that refer to nouns, comparing them to external references.",
parents = {"pronouns", {name = "demonstrative pro-forms", sort = "pronouns"}},
}
labels["deponent verbs"] = {
description = "{{{langname}}} verbs that have active meanings but are not conjugated in the active voice.",
parents = {"verbs"},
}
labels["derivational prefixes"] = {
description = "{{{langname}}} prefixes that are used to create new words.",
parents = {"prefixes"},
}
labels["derivational suffixes"] = {
description = "{{{langname}}} suffixes that are used to create new words.",
parents = {"suffixes"},
}
labels["derivative verbs"] = {
description = "{{{langname}}} verbs that are derived from nouns and adjectives.",
parents = {"verbs"},
}
labels["desiderative verbs"] = {
description = "{{{langname}}} verbs with the following morphology: verbal root xxx + [[desiderative]] affix, and the following semantics: to wish to do the action xxx.",
parents = {"verbs"},
}
labels["determinatives"] = {
description = "{{{langname}}} terms that indicate the general class to which the following logogram belongs.",
parents = {"lemmas"},
}
labels["determiners"] = {
description = "{{{langname}}} terms that narrow down, within the conversational context, the referent of the following noun.",
parents = {"lemmas"},
}
labels["diminutiva tantum"] = {
description = "{{{langname}}} nouns or noun senses that are mostly or exclusively used in the diminutive form.",
parents = {"nouns"},
}
for _, pos in ipairs(diminutive_augmentative_poses) do
labels["diminutive " .. pos] = {
description = "{{{langname}}} " .. pos .. " that are derived from a base word to convey endearment, small size or small intensity.",
parents = {pos},
}
end
labels["discourse particles"] = {
description = "{{{langname}}} particles that manage the flow and structure of discourse.",
parents = {"particles"},
}
labels["distributive verbs"] = {
description = "{{{langname}}} verbs which indicate that an action or event involves multiple participants or a large quantity of an uncountable mass, usually as the grammatical subject in the case of intransitive verbs and as the grammatical object in the case of transitive verbs.",
parents = {"verbs"},
}
labels["ditransitive verbs"] = {
description = "{{{langname}}} verbs that indicate actions, occurrences or states of two grammatical objects simultaneously, one direct and one indirect.",
parents = {"verbs", "transitive verbs"},
}
labels["dualia tantum"] = {
description = "{{{langname}}} nouns that are mostly or exclusively used in the dual form.",
parents = {"nouns"},
}
labels["duration adverbs"] = {
description = "{{{langname}}} adverbs that express duration in time.",
parents = {"time adverbs"},
}
labels["ergative verbs"] = {
description = "{{{langname}}} [[Appendix:Glossary#ergative|ergative verb]]s: intransitive verbs that become causatives when used transitively.",
parents = {"verbs", "intransitive verbs", "transitive verbs"},
}
labels["elative adjectives"] = {
description = "{{{langname}}} adjectives that express attributes in a relatively higher degree, or in the highest possible degree.",
parents = {"adjectives"},
}
labels["excessive verbs"] = {
description = "{{{langname}}} verbs that indicate that an action is performed to an excessive extent.",
parents = {"verbs"},
}
labels["enclitics"] = {
description = "{{{langname}}} clitics that attach to the preceding word.",
parents = {"clitics"},
}
labels["nouns with other-gender equivalents"] = {
description = "{{{langname}}} nouns that refer to gendered concepts (e.g. [[actor]] vs. [[actress]], [[king]] vs. [[queen]]) and have corresponding other-gender equivalent terms.",
parents = {"nouns"},
}
labels["female equivalent nouns"] = {
description = "{{{langname}}} nouns that refer to female beings with the same characteristics as the base noun.",
parents = {"nouns with other-gender equivalents"},
}
labels["female equivalent suffixes"] = {
description = "{{{langname}}} suffixes that refer to female beings with the same characteristics as the base suffix.",
parents = {"noun-forming suffixes"},
}
labels["focus adverbs"] = {
description = "{{{langname}}} adverbs that indicate [[w:Focus (linguistics)|focus]] within the sentence.",
parents = {"adveb"},
}
labels["frequency adverbs"] = {
description = "{{{langname}}} adverbs that express repetition with a certain frequency or interval.",
parents = {"time adverbs"},
}
labels["frequentative verbs"] = {
description = "{{{langname}}} verbs that express repeated action.",
parents = {"verbs"},
}
labels["general pronouns"] = {
description = "{{{langname}}} pronouns that refer to all persons, things, abstract ideas and their characteristics.",
parents = {"pronouns"},
}
labels["generational moieties"] = {
description = "{{{langname}}} moieties that alternate every generation.",
parents = {"moieties"},
}
labels["ideophones"] = {
description = "{{{langname}}} terms that evoke an idea, especially a sensation or impression, with a sound.",
parents = {"lemmas"},
}
labels["imperfective verbs"] = {
description = "{{{langname}}} verbs that express actions considered as ongoing or continuous, as opposed to completed events.",
parents = {"verbs"},
}
labels["impersonal verbs"] = {
description = "{{{langname}}} verbs that do not indicate actions, occurrences or states of any specific grammatical subject.",
parents = {"verbs"},
}
labels["inchoative verbs"] = {
description = "{{{langname}}} verbs that indicate the beginning of an action or event.",
parents = {"verbs"},
}
labels["indefinite adjectives"] = {
description = "{{{langname}}} adjectives that refer to unspecified adjective meanings.",
parents = {"adjectives", {name = "indefinite pro-forms", sort = "adjectives"}},
}
labels["indefinite adverbs"] = {
description = "{{{langname}}} adverbs that refer to unspecified adverbial meanings.",
parents = {"adveb", {name = "indefinite pro-forms", sort = "adveb"}},
}
labels["indefinite determiners"] = {
description = "{{{langname}}} determiners that designate an unidentified noun.",
parents = {"determiners", {name = "indefinite pro-forms", sort = "determiners"}},
}
labels["indefinite pronouns"] = {
description = "{{{langname}}} pronouns that refer to unspecified nouns.",
parents = {"pronouns", {name = "indefinite pro-forms", sort = "pronouns"}},
}
labels["infixes"] = {
description = "Affixes inserted inside {{{langname}}} words.",
parents = {"morphemes"},
}
labels["inflectional prefixes"] = {
description = "{{{langname}}} prefixes that are used as inflectional beginnings in noun, adjective or verb paradigms.",
parents = {"prefixes"},
}
labels["inflectional suffixes"] = {
description = "{{{langname}}} suffixes that are used as inflectional endings in noun, adjective or verb paradigms.",
parents = {"suffixes"},
}
labels["intensive verbs"] = {
description = "{{{langname}}} verbs which indicate that an action is performed vigorously, enthusiastically, forcefully or to an otherwise enlarged extent.",
parents = {"verbs"},
}
labels["interfixes"] = {
description = "Affixes used to join two {{{langname}}} words or morphemes together.",
parents = {"morphemes"},
}
labels["interjections"] = {
description = "{{{langname}}} terms that express emotions, sounds, etc. as exclamations.",
parents = {"lemmas"},
}
labels["interrogative adjectives"] = {
description = "{{{langname}}} adjectives that indicate questions.",
parents = {"adjectives", {name = "interrogative pro-forms", sort = "adjectives"}},
}
labels["interrogative adverbs"] = {
description = "{{{langname}}} adverbs that indicate questions.",
parents = {"adveb", {name = "interrogative pro-forms", sort = "adveb"}},
}
labels["interrogative determiners"] = {
description = "{{{langname}}} determiners that indicate questions.",
parents = {"determiners", {name = "interrogative pro-forms", sort = "determiners"}},
}
labels["interrogative particles"] = {
description = "{{{langname}}} particles that indicate questions.",
parents = {"particles", {name = "interrogative pro-forms", sort = "particles"}},
}
labels["interrogative pronouns"] = {
description = "{{{langname}}} pronouns that indicate questions.",
parents = {"pronouns", {name = "interrogative pro-forms", sort = "pronouns"}},
}
labels["intransitive verbs"] = {
description = "{{{langname}}} verbs that don't require any grammatical objects.",
parents = {"verbs"},
}
labels["iterative verbs"] = {
description = "{{{langname}}} verbs that express the repetition of an event.",
parents = {"verbs"},
}
labels["location adverbs"] = {
description = "{{{langname}}} adverbs that indicate location.",
parents = {"adveb"},
}
labels["male equivalent nouns"] = {
description = "{{{langname}}} nouns that refer to male beings with the same characteristics as the base noun.",
parents = {"nouns with other-gender equivalents"},
}
labels["manner adverbs"] = {
description = "{{{langname}}} adverbs that indicate the manner, way or style in which an action is performed.",
parents = {"adveb"},
}
labels["modal adverbs"] = {
description = "{{{langname}}} adverbs that express [[w:Linguistic modality|linguistic modality]], indicating the mood or attitude of the speaker with respect to what is being said.",
parents = {"sentence adverbs"},
}
labels["modal particles"] = {
description = "{{{langname}}} particles that reflect the mood or attitude of the speaker, without changing the basic meaning of the sentence.",
parents = {"particles"},
}
labels["modal verbs"] = {
description = "{{{langname}}} verbs that indicate [[grammatical mood]].",
parents = {"auxiliary verbs"},
}
labels["moieties"] = {
description = "{{{langname}}} pairs of abstract categories separating people and the environment.",
parents = {"lemmas"},
}
labels["morphemes"] = {
description = "{{{langname}}} word-elements used to form full words.",
parents = {"lemmas"},
}
labels["multiword terms"] = {
description = "{{{langname}}} lemmas that are an [[WT:CFI#Idiomaticity|idiomatic]] combination of multiple words.",
parents = {"lemmas"},
}
labels["negative verbs"] = {
description = "{{{langname}}} verbs that indicate the lack of an action.",
parents = {"verbs"},
}
labels["negative particles"] = {
description = "{{{langname}}} particles that indicate negation.",
parents = {"particles"},
}
labels["negative pronouns"] = {
description = "{{{langname}}} pronouns that refer to negative or non-existent references.",
parents = {"pronouns"},
}
labels["neutral verbs"] = {
description = "{{{langname}}} verbs that indicate either or both an activity or a result of an activity",
parents = {"verbs"},
}
labels["nominalized adjectives"] = {
description = "{{{langname}}} adjectives that are used as nouns.",
parents = {"nouns", "adjectives"},
}
labels["non-constituents"] = {
description = "{{{langname}}} terms that are not grammatical [[constituent#Noun|constituents]], and therefore need to be combined with additional terms to form a complete phrase.",
parents = {"phrases"},
}
labels["noun prefixes"] = {
description = "{{{langname}}} prefixes attached to a noun that display its noun class.",
parents = {"prefixes"},
}
labels["nouns"] = {
description = "{{{langname}}} terms that indicate people, beings, things, places, phenomena, qualities or ideas.",
parents = {"lemmas"},
}
labels["nouns by classifier"] = {
description = "{{{langname}}} nouns organized by the classifier they are used with.",
parents = {{name = "nouns", sort = "classifier"}},
}
labels["numerals"] = {
description = "{{{langname}}} terms that quantify nouns.",
parents = {"lemmas"},
}
labels["object concords"] = {
description = "{{{langname}}} concords used to show the grammatical object.",
parents = {"concords"},
}
labels["object pronouns"] = {
description = "{{{langname}}} pronouns that refer to grammatical objects.",
parents = {"pronouns"},
}
labels["particles"] = {
description = "{{{langname}}} terms that do not belong to any of the inflected grammatical word classes, often lacking their own grammatical functions and forming other parts of speech or expressing the relationship between clauses.",
parents = {"lemmas"},
}
labels["passive verbs"] = {
description = "{{{langname}}} verbs that are usually used in passive voice.",
parents = {"verbs"},
}
labels["perfective verbs"] = {
description = "{{{langname}}} verbs that express actions considered as completed events, as opposed to ongoing or continuous.",
parents = {"verbs"},
}
labels["personal pronouns"] = {
description = "{{{langname}}} pronouns that are used as substitutes for known nouns.",
parents = {"pronouns"},
}
labels["phrasal verbs"] = {
description = "{{{langname}}} verbs accompanied by particles, such as prepositions and adverbs.",
parents = {"verbs", "phrases"},
}
labels["phrasal prepositions"] = {
description = "{{{langname}}} prepositions formed with combinations of other terms.",
parents = {"prepositions", "phrases"},
}
labels["pluralia tantum"] = {
description = "{{{langname}}} nouns that are mostly or exclusively used in the plural form.",
parents = {"nouns"},
}
labels["possessional adjectives"] = {
description = "{{{langname}}} adjectives that indicate that a noun is in possession of something.",
parents = {"adjectives"},
}
labels["possessive adjectives"] = {
description = "{{{langname}}} adjectives that indicate ownership.",
parents = {"adjectives"},
}
labels["possessive concords"] = {
description = "{{{langname}}} concords used to show possession.",
parents = {"concords"},
}
labels["possessive determiners"] = {
description = "{{{langname}}} determiners that indicate ownership.",
parents = {"determiners"},
}
labels["possessive pronouns"] = {
description = "{{{langname}}} pronouns that indicate ownership.",
parents = {"pronouns"},
}
labels["postpositional phrases"] = {
description = "{{{langname}}} phrases headed by a postposition.",
parents = {"phrases", "postpositions"},
}
labels["postpositions"] = {
description = "{{{langname}}} adpositions that are placed after their objects.",
parents = {"lemmas"},
}
labels["predicatives"] = {
description = "{{{langname}}} elements of the predicate that supplement the subject or object of a sentence via the verb.",
parents = {"lemmas"},
}
labels["prefixes"] = {
description = "Affixes attached to the beginning of {{{langname}}} words.",
parents = {"morphemes"},
}
labels["prepositional phrases"] = {
description = "{{{langname}}} phrases headed by a preposition.",
parents = {"phrases", "prepositions"},
}
labels["prepositions"] = {
description = "{{{langname}}} adpositions that are placed before their objects.",
parents = {"lemmas"},
}
labels["ablative prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the ablative case.",
parents = {"prepositions"},
}
labels["accusative prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the accusative case.",
parents = {"prepositions"},
}
labels["dative prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the dative case.",
parents = {"prepositions"},
}
labels["genitive prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the genitive case.",
parents = {"prepositions"},
}
labels["instrumental prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the instrumental case.",
parents = {"prepositions"},
}
labels["matrilineal moieties"] = {
description = "{{{langname}}} moieties inherited from an individual's mother.",
parents = {"moieties"},
}
labels["nominative prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the nominative case.",
parents = {"prepositions"},
}
labels["patrilineal moieties"] = {
description = "{{{langname}}} moieties inherited from an individual's father.",
parents = {"moieties"},
}
labels["prepositional prepositions"] = {
description = "{{{langname}}} prepositions that cause the succeeding noun to be in the prepositional case.",
parents = {"prepositions"},
}
labels["prenouns"] = {
description = "{{{langname}}} prefixes of various kinds that are attached to nouns.",
parents = {"prefixes"},
}
labels["preverbs"] = {
description = "{{{langname}}} prefixes of various kinds that are attached to verbs.",
parents = {"prefixes"},
}
labels["privative verbs"] = {
description = "{{{langname}}} verbs that indicate that the grammatical object is deprived of something or that something is removed from the object.",
parents = {"verbs"},
}
labels["pronominal adverbs"] = {
description = "{{{langname}}} adverbs that are formed by combining a pronoun with a preposition.",
parents = {"adveb", "prepositions", "pronouns"},
}
labels["pronominal concords"] = {
description = "{{{langname}}} concords that are prefixed to pronominal stems.",
parents = {"concords"},
}
labels["pronouns"] = {
description = "{{{langname}}} terms that refer to and substitute nouns.",
parents = {"lemmas"},
}
labels["proper nouns"] = {
description = "{{{langname}}} nouns that indicate individual entities, such as names of persons, places or organizations.",
parents = {"nouns"},
}
labels["punctual adverbs"] = {
description = "{{{langname}}} adverbs that express a single point or span in time.",
parents = {"time adverbs"},
}
labels["raising verbs"] = {
description = "{{{langname}}} verbs that, in a matrix or main clause, take an argument from an embedded or subordinate clause; in other words, a raising verb appears with a syntactic argument that is not its semantic argument, but is rather the semantic argument of an embedded predicate.",
parents = {"verbs"},
}
labels["reciprocal pronouns"] = {
description = "{{{langname}}} pronouns that refer back to a plural subject and express an action done in two or more directions.",
parents = {"pronouns", "personal pronouns"},
}
labels["reciprocal verbs"] = {
description = "{{{langname}}} verbs that indicate actions, occurrences or states directed from multiple subjects to each other.",
parents = {"verbs"},
}
labels["reflexive pronouns"] = {
description = "{{{langname}}} pronouns that refer back to the subject.",
parents = {"pronouns", "personal pronouns"},
}
labels["reflexive verbs"] = {
description = "{{{langname}}} verbs that indicate actions, occurrences or states directed from the grammatical subjects to themselves.",
parents = {"verbs"},
}
labels["relational adjectives"] = {
description = "{{{langname}}} adjectives that stand in place of a noun when modifying another noun.",
parents = {"adjectives"},
}
labels["relational nouns"] = {
description = "{{{langname}}} nouns used to indicate a relation between other two nouns by means of possession.",
parents = {"nouns"},
}
labels["relative adjectives"] = {
description = "{{{langname}}} adjectives used to indicate [[relative clause]]s.",
parents = {"adjectives", {name = "relative pro-forms", sort = "adjectives"}},
}
labels["relative adverbs"] = {
description = "{{{langname}}} adverbs used to indicate [[relative clause]]s.",
parents = {"adveb", {name = "relative pro-forms", sort = "adveb"}},
}
labels["relative determiners"] = {
description = "{{{langname}}} determiners used to indicate [[relative clause]]s.",
parents = {"determiners", {name = "relative pro-forms", sort = "determiners"}},
}
labels["relative concords"] = {
description = "{{{langname}}} concords that are prefixed to relative stems.",
parents = {"concords"},
}
labels["relative pronouns"] = {
description = "{{{langname}}} pronouns used to indicate [[relative clause]]s.",
parents = {"pronouns", {name = "relative pro-forms", sort = "pronouns"}},
}
labels["relatives"] = {
description = "{{{langname}}} terms that give attributes to nouns, acting grammatically as relative clauses.",
parents = {"lemmas"},
}
labels["repetitive verbs"] = {
description = "{{{langname}}} verbs that indicate actions or events which are performed or occur again, anew or differently.",
parents = {"verbs"},
}
labels["resultative verbs"] = {
description = "{{{langname}}} verbs that indicate a result of some action",
parents = {"verbs"},
}
labels["reversative verbs"] = {
description = "{{{langname}}} verbs that indicate that the reversal or undoing of an action, event or state.",
parents = {"verbs"},
}
labels["saturative verbs"] = {
description = "{{{langname}}} verbs which indicate that an action is performed to the point of saturation or satisfaction.",
parents = {"verbs"},
}
labels["semelfactive verbs"] = {
description = "{{{langname}}} verbs that are punctual (instantaneous, momentive), perfective (treated as a unitary whole with no explicit internal temporal structure), and telic (having a boundary out of which the activity cannot be said to have taken place or continue).",
parents = {"verbs"},
}
labels["sentence adverbs"] = {
description = "{{{langname}}} adverbs that modify an entire clause or sentence.",
parents = {"adveb"},
}
labels["sequence adverbs"] = {
description = "{{{langname}}} conjunctive adverbs that express sequence in space or time.",
parents = {"conjunctive adverbs"},
}
labels["simulfixes"] = {
description = "Affixes replacing positions in {{{langname}}} words.",
parents = {"morphemes"},
}
labels["singulative nouns"] = {
description = "{{{langname}}} nouns that indicate a single item of a group of related things or beings.",
parents = {"nouns"},
}
labels["singularia tantum"] = {
description = "{{{langname}}} nouns that are mostly or exclusively used in the singular form.",
parents = {"nouns"},
}
labels["stative verbs"] = {
description = "{{{langname}}} verbs that define a state with no or insignificant internal dynamics.",
parents = {"verbs"},
}
labels["stems"] = {
description = "Morphemes from which {{{langname}}} words are formed.",
parents = {"morphemes"},
}
labels["subordinating conjunctions"] = {
description = "{{{langname}}} conjunctions that indicate relations of syntactic dependence between connected items.",
parents = {"conjunctions"},
}
labels["subject concords"] = {
description = "{{{langname}}} concords used to show the grammatical subject.",
parents = {"concords"},
}
labels["subject pronouns"] = {
description = "{{{langname}}} pronouns that refer to grammatical subjects.",
parents = {"pronouns"},
}
labels["suffixes"] = {
description = "Affixes attached to the end of {{{langname}}} words.",
parents = {"morphemes"},
}
labels["splitting verbs"] = {
description = "{{{langname}}} bisyllabic verbs that obligatorily split around a direct object or pronoun.",
parents = {"verbs"},
}
labels["terminative verbs"] = {
description = "{{{langname}}} verbs that indicate that an action or event ceases.",
parents = {"verbs"},
}
labels["time adverbs"] = {
description = "{{{langname}}} adverbs that indicate time.",
parents = {"adveb"},
}
labels["transfixes"] = {
description = "Discontinuous affixes inserted within a word root.",
parents = {"morphemes"},
}
labels["transformative verbs"] = {
description = "{{{langname}}} verbs that indicate a change of state or nature, in the subject for intransitive verbs and in the object for transitive verbs.",
parents = {"verbs"},
}
labels["transitive verbs"] = {
description = "{{{langname}}} verbs that indicate actions, occurrences or states directed to one or more grammatical objects.",
parents = {"verbs"},
}
labels["uncomparable adjectives"] = {
description = "{{{langname}}} adjectives that are not inflected to display different degrees of comparison.",
parents = {"adjectives"},
}
labels["uncomparable adverbs"] = {
description = "{{{langname}}} adverbs that are not inflected to display different degrees of comparison.",
parents = {"adveb"},
}
labels["uncountable nouns"] = {
description = "{{{langname}}} nouns that indicate qualities, ideas, unbounded mass or other abstract concepts that cannot be quantified directly by numerals.",
parents = {"nouns"},
}
labels["verbal nouns"] = {
description = "{{{langname}}} nouns morphologically related to a verb and similar to it in meaning.",
parents = {"nouns"},
}
labels["verbs"] = {
description = "{{{langname}}} terms that indicate actions, occurrences or states.",
parents = {"lemmas"},
}
labels["verbs of movement"] = {
description = "{{{langname}}} verbs that indicate physical movement of the grammatical subject across a trajectory, with a starting point and an endpoint.",
parents = {"verbs"},
}
-- Add "POS-forming suffixes".
local poses_derived_by_suffix = {
"adjective", "adveb", "noun", "verb",
}
for _, pos in pairs(poses_derived_by_suffix) do
labels[pos .. "-forming suffixes"] = {
description = "{{{langname}}} suffixes that are used to derive " .. pos .. "s from other words.",
parents = {"derivational suffixes"},
}
end
local labels2 = {}
-- Add "reconstructed" subcategories; add 'umbrella_parents' key if not
-- already present.
for key, data in pairs(labels) do
labels2[key] = data
if not data.umbrella_parents then
data.umbrella_parents = "Lemmas subcategories by language"
end
labels2["reconstructed " .. key] = {
description = "{{{langname}}} " .. key .. " that have been linguistically [[Wiktionary:Reconstructed terms|reconstructed]].",
umbrella_parents = "Lemmas subcategories by language",
parents = {key, {name = "reconstructed terms", sort = key}}
}
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Lemmas subcategories by language"] = {
description = "Umbrella categories covering topics related to lemmas.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Umbrella metacategories",
{name = "lemmas", is_label = true, sort = " "},
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
-- Handler for e.g. [[:Category:English phrasal verbs with particle (around)]].
table.insert(handlers, function(data)
local particle = data.label:match("^phrasal verbs with particle %((.-)%)$")
if particle then
local tagged_text = require("Module:script utilities").tag_text(particle, data.lang, nil, "term")
local link = require("Module:links").full_link({ term = particle, lang = data.lang }, "term")
return {
description = "{{{langname}}} {{w|phrasal verb}}s using the particle " .. link .. ".",
displaytitle = "{{{langname}}} phrasal verbs with particle (" .. tagged_text .. ")",
breadcrumb = tagged_text,
parents = {{ name = "phrasal verbs", sort = particle }},
umbrella = false,
}
end
end)
return {LABELS = labels2, RAW_CATEGORIES = raw_categories, HANDLERS = handlers}
6fsqrpi641hhuduh6rauoe442u5q0ub
Yusa:Asinis632
2
5280
13288
2022-08-01T21:05:02Z
Asinis632
1829
Created page with "Ја сам Синиша Стаматовић. [[file:Fabulous inari.png|right|450п|mini|Коцка]]"
wikitext
text/x-wiki
Ја сам Синиша Стаматовић.
[[file:Fabulous inari.png|right|450п|mini|Коцка]]
n7qqm6g8ttb35pillfgva1y9atcfwx9
pamukmeri
0
5281
13289
2022-08-01T21:12:03Z
Asinis632
1829
Created page with "{{-tpi-}} {{attention|tpi}} ===Etymology=== From {{af|tpi|pamuk|meri}}. ===Noun=== {{head|tpi|noun}} # [[prostitute]] ===References=== * {{cite-book|2008|Christian Lehmann; Geert E. Booij; Joachim Mugdan; Stavros Skopeteas; Wolfgang Kesselheim|Morphologie / Morphology|volume=2|publisher=De Gruyter|isbn=9783110194272||1764|entry=pamukmeri|pageurl=https://books.google.com/books?id=wqikmIpNjjYC&pg=PA1764}} {{topics|tpi|Sex}}"
wikitext
text/x-wiki
{{-tpi-}}
{{attention|tpi}}
===Etymology===
From {{af|tpi|pamuk|meri}}.
===Noun===
{{head|tpi|noun}}
# [[prostitute]]
===References===
* {{cite-book|2008|Christian Lehmann; Geert E. Booij; Joachim Mugdan; Stavros Skopeteas; Wolfgang Kesselheim|Morphologie / Morphology|volume=2|publisher=De Gruyter|isbn=9783110194272||1764|entry=pamukmeri|pageurl=https://books.google.com/books?id=wqikmIpNjjYC&pg=PA1764}}
{{topics|tpi|Sex}}
dzqzx9q464lmqa64p5yqa6j2wkgdofx
Grup:tpi:Sex
14
5282
13290
2022-08-01T21:12:36Z
Asinis632
1829
Created page with "{{auto cat}}"
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Module:category tree/poscatboiler
828
5283
13291
2022-08-01T21:13:16Z
Asinis632
1829
Created page with "local export = {} local label_data = require("Module:category tree/poscatboiler/data") -- Category object local Category = {} Category.__index = Category function Category.new_main(frame) local self = setmetatable({}, Category) local params = { [1] = {}, [2] = {required = true}, [3] = {}, ["raw"] = {type = "boolean"}, } local args, remaining_args = require("Module:parameters").process(frame:getParent().args, params, true) self._info = {code = args[1],..."
Scribunto
text/plain
local export = {}
local label_data = require("Module:category tree/poscatboiler/data")
-- Category object
local Category = {}
Category.__index = Category
function Category.new_main(frame)
local self = setmetatable({}, Category)
local params = {
[1] = {},
[2] = {required = true},
[3] = {},
["raw"] = {type = "boolean"},
}
local args, remaining_args = require("Module:parameters").process(frame:getParent().args, params, true)
self._info = {code = args[1], label = args[2], sc = args[3], raw = args.raw, args = remaining_args}
self:initCommon()
if not self._data then
return nil
end
return self
end
function Category:get_originating_info()
local originating_info = ""
if self._info.originating_label then
originating_info = " (originating from label \"" .. self._info.originating_label .. "\" in module [[" .. self._info.originating_module .. "]])"
end
return originating_info
end
function Category.new(info)
for key, val in pairs(info) do
if not (key == "code" or key == "label" or key == "sc" or key == "raw" or key == "args"
or key == "called_from_inside" or key == "originating_label" or key == "originating_module") then
error("The parameter \"" .. key .. "\" was not recognized.")
end
end
local self = setmetatable({}, Category)
self._info = info
if not self._info.label then
error("No label was specified.")
end
self:initCommon()
if not self._data then
error("The " .. (self._info.raw and "raw " or "") .. "label \"" .. self._info.label .. "\" does not exist" .. self:get_originating_info() .. ".")
end
return self
end
export.new = Category.new
export.new_main = Category.new_main
function Category:initCommon()
local args_handled = false
if self._info.raw then
-- Check if the category exists
local raw_categories = label_data["RAW_CATEGORIES"]
self._data = raw_categories[self._info.label]
if self._data then
if self._data.lang then
self._lang = require("Module:languages").getByCode(self._data.lang, true)
self._info.code = self._lang:getCode()
end
if self._data.sc then
self._sc = require("Module:scripts").getByCode(self._data.sc, true)
self._info.sc = self._sc:getCode()
end
else
-- Go through raw handlers
local data = {
category = self._info.label,
args = self._info.args or {},
called_from_inside = self._info.called_from_inside,
}
for _, handler in ipairs(label_data["RAW_HANDLERS"]) do
self._data, args_handled = handler.handler(data)
if self._data then
self._data.module = self._data.module or handler.module
break
end
end
if self._data then
if self._data.lang then
if type(self._data.lang) ~= "string" then
error("Received non-string value " .. mw.dumpObject(self._data.lang) .. " for self._data.lang, label \"" .. self._info.label .. "\"" .. self:get_originating_info() .. ".")
end
self._lang = require("Module:languages").getByCode(self._data.lang, true)
self._info.code = self._lang:getCode()
end
if self._data.sc then
if type(self._data.sc) ~= "string" then
error("Received non-string value " .. mw.dumpObject(self._data.sc) .. " for self._data.sc, label \"" .. self._info.label .. "\"" .. self:get_originating_info() .. ".")
end
self._sc = require("Module:scripts").getByCode(self._data.sc, true)
self._info.sc = self._sc:getCode()
end
end
end
else
-- Already parsed into language + label
if self._info.code then
self._lang = require("Module:languages").getByCode(self._info.code, 1)
else
self._lang = nil
end
if self._info.sc then
self._sc = require("Module:scripts").getByCode(self._info.sc) or error("The script code \"" .. self._info.sc .. "\" is not valid.")
else
self._sc = nil
end
-- Check if the label exists
local labels = label_data["LABELS"]
self._data = labels[self._info.label]
-- Go through handlers
if not self._data then
local data = {
label = self._info.label,
lang = self._lang,
sc = self._sc,
args = self._info.args or {},
called_from_inside = self._info.called_from_inside,
}
for _, handler in ipairs(label_data["HANDLERS"]) do
self._data, args_handled = handler.handler(data)
if self._data then
self._data.module = self._data.module or handler.module
break
end
end
end
end
if not args_handled and self._data and self._info.args and next(self._info.args) then
local module_text = " (handled in [[" .. (self._data.module or "UNKNOWN").. "]])"
local args_text = {}
for k, v in pairs(self._info.args) do
table.insert(args_text, k .. "=" .. ((type(v) == "string" or type(v) == "number") and v or mw.dumpObject(v)))
end
error("poscatboiler label '" .. self._info.label .. "' " .. module_text .. " doesn't accept extra args " ..
table.concat(args_text, ", "))
end
if self._sc and not self._lang then
error("Umbrella categories cannot have a script specified.")
end
end
function Category:substitute_template_specs(desc)
if not desc then
return desc
end
if type(desc) == "number" then
desc = tostring(desc)
end
desc = desc:gsub("{{PAGENAME}}", mw.title.getCurrentTitle().text)
desc = desc:gsub("{{{umbrella_msg}}}", "This is an umbrella category. It contains no dictionary entries, but only other, language-specific categories, which in turn contain relevant terms in a given language.")
desc = desc:gsub("{{{umbrella_meta_msg}}}", 'This is an umbrella metacategory, covering a general area such as "lemmas", "names" or "terms by etymology". It contains no dictionary entries, but holds only umbrella ("by language") categories covering specific subtopics, which in turn contain language-specific categories holding terms in a given language for that same topic.')
if self._lang then
desc = desc:gsub("{{{langname}}}", self._lang:getCanonicalName())
desc = desc:gsub("{{{langcode}}}", self._lang:getCode())
desc = desc:gsub("{{{langcat}}}", self._lang:getCategoryName())
desc = desc:gsub("{{{langlink}}}", self._lang:makeCategoryLink())
end
if self._sc then
desc = desc:gsub("{{{scname}}}", self._sc:getCanonicalName())
desc = desc:gsub("{{{sccode}}}", self._sc:getCode())
desc = desc:gsub("{{{sccat}}}", self._sc:getCategoryName())
desc = desc:gsub("{{{scdisp}}}", self._sc:getDisplayForm())
desc = desc:gsub("{{{sclink}}}", self._sc:makeCategoryLink())
end
if desc:find("{") then
desc = mw.getCurrentFrame():preprocess(desc)
end
return desc
end
function Category:substitute_template_specs_in_args(args)
if not args then
return args
end
local pinfo = {}
for k, v in pairs(args) do
k = self:substitute_template_specs(k)
v = self:substitute_template_specs(v)
pinfo[k] = v
end
return pinfo
end
function Category:make_new(info)
info.originating_label = self._info.label
info.originating_module = self._data.module
info.called_from_inside = true
return Category.new(info)
end
function Category:getBreadcrumbName()
local ret
if self._lang or self._info.raw then
ret = self._data.breadcrumb
else
ret = self._data.umbrella and self._data.umbrella.breadcrumb
end
if not ret then
ret = self._info.label
end
if type(ret) == "string" or type(ret) == "number" then
ret = {name = ret}
end
local name = self:substitute_template_specs(ret.name)
local nocap = ret.nocap
if self._sc then
name = name .. " in " .. self._sc:getDisplayForm()
end
return name, nocap
end
function Category:getTOC(toc_type)
local ret
-- type "none" means everything fits on a single page; fall back to normal behavior (display nothing)
if toc_type == "none" then
return true
end
-- Return the textual expansion of the first existing template among the given templates, first performing
-- substitutions on the template name such as replacing {{{langcode}}} with the current language's code (if any).
-- If no templates exist after expansion, or if nil is passed in, return nil. If a single string is passed in,
-- treat it like a one-element list consisting of that string.
local function get_template_text(templates)
if templates == nil then
return nil
end
if type(templates) ~= "table" then
templates = {templates}
end
for _, template in ipairs(templates) do
if template == false then
return false
end
template = self:substitute_template_specs(template)
local template_obj = mw.title.new("Template:" .. template)
if template_obj.exists then
return mw.getCurrentFrame():expandTemplate{title = template_obj.text, args = {}}
end
end
return nil
end
local templates, fallback_templates
-- If TOC type is "full" (more than 2500 entries), do the following, in order:
-- 1. look up and expand the `toc_template_full` templates (normal or umbrella, depending on whether there is
-- a current language);
-- 2. look up and expand the `toc_template` templates (normal or umbrella, as above);
-- 3. do the default behavior, which is as follows:
-- 3a. look up a language-specific "full" template according to the current language (using English if there
-- is no current language);
-- 3b. look up a language-specific "normal" template according to the current language (using English if there
-- is no current language);
-- 3c. display nothing.
--
-- If TOC type is "normal" (between 200 and 2500 entries), do the following, in order:
-- 1. look up and expand the `toc_template` templates (normal or umbrella, depending on whether there is
-- a current language);
-- 2. do the default behavior, which is as follows:
-- 2a. look up a language-specific "normal" template according to the current language (using English if there
-- is no current language);
-- 2b. display nothing.
local data_source
if self._lang or self._info.raw then
data_source = self._data
else
data_source = self._data.umbrella
end
if data_source then
if toc_type == "full" then
templates = data_source.toc_template_full
fallback_templates = data_source.toc_template
else
templates = data_source.toc_template
end
end
local text = get_template_text(templates)
if text then
return text
end
if text == false then
return nil
end
text = get_template_text(fallback_templates)
if text then
return text
end
if text == false then
return nil
end
return true
end
function Category:getInfo()
return self._info
end
function Category:getDataModule()
return self._data.module
end
function Category:canBeEmpty()
if self._lang or self._info.raw then
return self._data.can_be_empty
else
return self._data.umbrella and self._data.umbrella.can_be_empty
end
end
function Category:isHidden()
if self._lang or self._info.raw then
return self._data.hidden
else
return self._data.umbrella and self._data.umbrella.hidden
end
end
function Category:getCategoryName()
if self._info.raw then
return self._info.label
elseif self._lang then
local ret = self._lang:getCanonicalName() .. " " .. self._info.label
if self._sc then
ret = ret .. " in " .. self._sc:getDisplayForm()
end
return mw.getContentLanguage():ucfirst(ret)
else
local ret = mw.getContentLanguage():ucfirst(self._info.label)
if not (self._data.umbrella and self._data.umbrella.no_by_language) then
ret = ret .. " by language"
end
return ret
end
end
function Category:getIntro()
if self._lang or self._info.raw then
return self:substitute_template_specs(self._data.intro)
else
return self._data.umbrella and self:substitute_template_specs(self._data.umbrella.intro)
end
end
local function remove_lang_params(desc)
desc = desc:gsub("{{{langname}}} ", "")
desc = desc:gsub("{{{langcode}}} ", "")
desc = desc:gsub("{{{langcat}}} ", "")
return desc
end
function Category:getDescription(isChild)
-- Allows different text in the list of a category's children
local isChild = isChild == "child"
local function display_title(displaytitle, lang)
if type(displaytitle) == "string" then
displaytitle = self:substitute_template_specs(displaytitle)
else
displaytitle = displaytitle(self:getCategoryName(), lang)
end
mw.getCurrentFrame():callParserFunction("DISPLAYTITLE", "Category:" .. displaytitle)
end
if self._lang or self._info.raw then
if not isChild and self._data.displaytitle then
display_title(self._data.displaytitle, self._lang)
end
if self._sc then
return self:getCategoryName() .. "."
else
local desc = self._data.description
if not isChild and desc and self._data.additional then
desc = desc .. "\n\n" .. self._data.additional
end
return self:substitute_template_specs(desc)
end
else
if not isChild and self._data.umbrella and self._data.umbrella.displaytitle then
display_title(self._data.umbrella.displaytitle, nil)
end
local desc = self._data.umbrella and self._data.umbrella.description
local has_umbrella_desc = not not desc
if not desc then
desc = self._data.description
if desc then
desc = remove_lang_params(desc)
desc = mw.getContentLanguage():lcfirst(desc)
desc = desc:gsub("%.$", "")
desc = "Categories with " .. desc .. "."
end
end
if not desc then
desc = "Categories with " .. self._info.label .. " in various specific languages."
end
if not isChild then
local additional = self._data.umbrella and self._data.umbrella.additional or not has_umbrella_desc and self._data.additional
if additional then
desc = desc .. "\n\n" .. remove_lang_params(additional)
end
desc = desc .. "\n\n{{{umbrella_msg}}}"
end
desc = self:substitute_template_specs(desc)
return desc
end
end
function Category:canonicalize_parents_children(cats, is_children)
if not cats then
return nil
end
if type(cats) ~= "table" then
cats = {cats}
end
if cats.name or cats.module then
cats = {cats}
end
if #cats == 0 then
return nil
end
local ret = {}
for _, cat in ipairs(cats) do
if type(cat) ~= "table" or not cat.name and not cat.module then
cat = {name = cat}
end
table.insert(ret, cat)
end
local is_umbrella = not self._lang and not self._info.raw
local table_type = is_children and "extra_children" or "parents"
for i, cat in ipairs(ret) do
local sort_key = self:substitute_template_specs(cat.sort)
local name = cat.name
if cat.module then
-- A reference to a category using another category tree module.
if not cat.args then
error("Missing .args in '" .. table_type .. "' table with module=\"" .. cat.module .. "\" for '" ..
self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'")
end
name = require("Module:category tree/" .. cat.module).new(self:substitute_template_specs_in_args(cat.args))
else
if not name then
error("Missing .name in " .. (is_umbrella and "umbrella " or "") .. "'" .. table_type .. "' table for '" ..
self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'")
end
if type(name) ~= "string" then
-- assume it's a category object and use it directly
else
name = self:substitute_template_specs(name)
if name:find("^Category:") then
-- It's a non-poscatboiler category name.
sort_key = sort_key or is_children and name:gsub("^Category:", "") or self:getCategoryName()
else
-- It's a label.
local raw
if self._info.raw or is_umbrella then
raw = not cat.is_label
else
raw = cat.raw
end
local cat_code
if cat.lang == false then
cat_code = nil
elseif cat.lang then
cat_code = self:substitute_template_specs(cat.lang)
elseif not raw then
cat_code = self._info.code
end
sort_key = sort_key or is_children and name or self._info.label
name = self:make_new({
label = name, code = cat_code, sc = self:substitute_template_specs(cat.sc),
raw = raw, args = self:substitute_template_specs_in_args(cat.args)
})
end
end
end
sort_key = mw.ustring.upper(sort_key or is_children and " " or self._info.label)
local description = is_children and self:substitute_template_specs(cat.description) or nil
ret[i] = {name = name, description = description, sort = sort_key}
end
return ret
end
function Category:getParents()
local is_umbrella = not self._lang and not self._info.raw
if self._sc then
local parent1 = self:make_new({code = self._info.code, label = "terms in " .. self._sc:getCanonicalName() .. " script"})
local parent2 = self:make_new({code = self._info.code, label = self._info.label, raw = self._info.raw, args = self._info.args})
return {
{name = parent1, sort = self._sc:getCanonicalName()},
{name = parent2, sort = self._sc:getCanonicalName()},
}
else
local parents
if is_umbrella then
parents = self._data.umbrella and self._data.umbrella.parents or self._data.umbrella_parents
else
parents = self._data.parents
end
return self:canonicalize_parents_children(parents)
end
end
function Category:getChildren()
local is_umbrella = not self._lang and not self._info.raw
local children = self._data.children
local ret = {}
if not is_umbrella and children then
for _, child in ipairs(children) do
child = mw.clone(child)
if type(child) ~= "table" then
child = {name = child}
end
if not child.sort then
child.sort = child.name
end
-- FIXME, is preserving the script correct?
child.name = self:make_new({code = self._info.code, label = child.name, raw = child.raw, sc = self._info.sc})
table.insert(ret, child)
end
end
local extra_children
if is_umbrella then
extra_children = self._data.umbrella and self._data.umbrella.extra_children
else
extra_children = self._data.extra_children
end
extra_children = self:canonicalize_parents_children(extra_children, "children")
if extra_children then
for _, child in ipairs(extra_children) do
table.insert(ret, child)
end
end
if #ret == 0 then
return nil
end
return ret
end
function Category:getUmbrella()
if self._info.raw or not self._lang or self._sc or self._data.umbrella == false then
return nil
end
return self:make_new({label = self._info.label})
end
function Category:getAppendix()
-- FIXME, this should be customizable.
if not self._info.raw and self._info.label and self._lang then
local appendixName = "Appendix:" .. self._lang:getCanonicalName() .. " " .. self._info.label
local appendix = mw.title.new(appendixName).exists
if appendix then
return appendixName
else
return nil
end
else
return nil
end
end
function Category:getCatfixInfo()
if self._lang or self._info.raw then
if self._data.catfix == false then
return nil
end
local lang, sc
if self._data.catfix then
lang = require("Module:languages").getByCode(self:substitute_template_specs(self._data.catfix), true)
else
lang = self._lang
end
if self._data.catfix_sc then
sc = require("Module:scripts").getByCode(self:substitute_template_specs(self._data.catfix_sc), true)
else
sc = self._sc
end
return lang, sc
else -- umbrella
if not self._data.umbrella or not self._data.umbrella.catfix then
return nil
end
local lang = require("Module:languages").getByCode(self:substitute_template_specs(self._data.umbrella.catfix), true)
local sc = self:substitute_template_specs(self._data.umbrella.catfix_sc)
if sc then
sc = require("Module:scripts").getByCode(sc, true)
end
return lang, sc
end
end
function Category:getTOCTemplateName()
local lang, sc = self:getCatfixInfo()
local code = lang and lang:getCode() or "en"
return "Template:" .. code .. "-" .. (self._data.toctemplateprefix or "") .. "categoryTOC"
end
return export
3ebgs1qcb3ygyb5am2w9q88a6v2pgpr
13292
13291
2022-08-01T21:15:05Z
Asinis632
1829
Scribunto
text/plain
local export = {}
local label_data = require("Module:category tree/poscatboiler/data")
-- Category object
local Category = {}
Category.__index = Category
function Category.new_main(frame)
local self = setmetatable({}, Category)
local params = {
[1] = {},
[2] = {required = true},
[3] = {},
["raw"] = {type = "boolean"},
}
local args, remaining_args = require("Module:parameters").process(frame:getParent().args, params, true)
self._info = {code = args[1], label = args[2], sc = args[3], raw = args.raw, args = remaining_args}
self:initCommon()
if not self._data then
return nil
end
return self
end
function Category:get_originating_info()
local originating_info = ""
if self._info.originating_label then
originating_info = " (originating from label \"" .. self._info.originating_label .. "\" in module [[" .. self._info.originating_module .. "]])"
end
return originating_info
end
function Category.new(info)
for key, val in pairs(info) do
if not (key == "code" or key == "label" or key == "sc" or key == "raw" or key == "args"
or key == "called_from_inside" or key == "originating_label" or key == "originating_module") then
error("The parameter \"" .. key .. "\" was not recognized.")
end
end
local self = setmetatable({}, Category)
self._info = info
if not self._info.label then
error("No label was specified.")
end
self:initCommon()
if not self._data then
error("The " .. (self._info.raw and "raw " or "") .. "label \"" .. self._info.label .. "\" does not exist" .. self:get_originating_info() .. ".")
end
return self
end
export.new = Category.new
export.new_main = Category.new_main
function Category:initCommon()
local args_handled = false
if self._info.raw then
-- Check if the category exists
local raw_categories = label_data["RAW_CATEGORIES"]
self._data = raw_categories[self._info.label]
if self._data then
if self._data.lang then
self._lang = require("Module:languages").getByCode(self._data.lang, true)
self._info.code = self._lang:getCode()
end
if self._data.sc then
self._sc = require("Module:scripts").getByCode(self._data.sc, true)
self._info.sc = self._sc:getCode()
end
else
-- Go through raw handlers
local data = {
category = self._info.label,
args = self._info.args or {},
called_from_inside = self._info.called_from_inside,
}
for _, handler in ipairs(label_data["RAW_HANDLERS"]) do
self._data, args_handled = handler.handler(data)
if self._data then
self._data.module = self._data.module or handler.module
break
end
end
if self._data then
if self._data.lang then
if type(self._data.lang) ~= "string" then
error("Received non-string value " .. mw.dumpObject(self._data.lang) .. " for self._data.lang, label \"" .. self._info.label .. "\"" .. self:get_originating_info() .. ".")
end
self._lang = require("Module:languages").getByCode(self._data.lang, true)
self._info.code = self._lang:getCode()
end
if self._data.sc then
if type(self._data.sc) ~= "string" then
error("Received non-string value " .. mw.dumpObject(self._data.sc) .. " for self._data.sc, label \"" .. self._info.label .. "\"" .. self:get_originating_info() .. ".")
end
self._sc = require("Module:scripts").getByCode(self._data.sc, true)
self._info.sc = self._sc:getCode()
end
end
end
else
-- Already parsed into language + label
if self._info.code then
self._lang = require("Module:languages").getByCode(self._info.code, 1)
else
self._lang = nil
end
if self._info.sc then
self._sc = require("Module:scripts").getByCode(self._info.sc) or error("The script code \"" .. self._info.sc .. "\" is not valid.")
else
self._sc = nil
end
-- Check if the label exists
local labels = label_data["LABELS"]
self._data = labels[self._info.label]
-- Go through handlers
if not self._data then
local data = {
label = self._info.label,
lang = self._lang,
sc = self._sc,
args = self._info.args or {},
called_from_inside = self._info.called_from_inside,
}
for _, handler in ipairs(label_data["HANDLERS"]) do
self._data, args_handled = handler.handler(data)
if self._data then
self._data.module = self._data.module or handler.module
break
end
end
end
end
if not args_handled and self._data and self._info.args and next(self._info.args) then
local module_text = " (handled in [[" .. (self._data.module or "UNKNOWN").. "]])"
local args_text = {}
for k, v in pairs(self._info.args) do
table.insert(args_text, k .. "=" .. ((type(v) == "string" or type(v) == "number") and v or mw.dumpObject(v)))
end
error("poscatboiler label '" .. self._info.label .. "' " .. module_text .. " doesn't accept extra args " ..
table.concat(args_text, ", "))
end
if self._sc and not self._lang then
error("Umbrella categories cannot have a script specified.")
end
end
function Category:substitute_template_specs(desc)
if not desc then
return desc
end
if type(desc) == "number" then
desc = tostring(desc)
end
desc = desc:gsub("{{PAGENAME}}", mw.title.getCurrentTitle().text)
desc = desc:gsub("{{{umbrella_msg}}}", "This is an umbrella category. It contains no dictionary entries, but only other, language-specific categories, which in turn contain relevant terms in a given language.")
desc = desc:gsub("{{{umbrella_meta_msg}}}", 'This is an umbrella metacategory, covering a general area such as "lemmas", "names" or "terms by etymology". It contains no dictionary entries, but holds only umbrella ("by language") categories covering specific subtopics, which in turn contain language-specific categories holding terms in a given language for that same topic.')
if self._lang then
desc = desc:gsub("{{{langname}}}", self._lang:getCanonicalName())
desc = desc:gsub("{{{langcode}}}", self._lang:getCode())
desc = desc:gsub("{{{langcat}}}", self._lang:getCategoryName())
desc = desc:gsub("{{{langlink}}}", self._lang:makeCategoryLink())
end
if self._sc then
desc = desc:gsub("{{{scname}}}", self._sc:getCanonicalName())
desc = desc:gsub("{{{sccode}}}", self._sc:getCode())
desc = desc:gsub("{{{sccat}}}", self._sc:getCategoryName())
desc = desc:gsub("{{{scdisp}}}", self._sc:getDisplayForm())
desc = desc:gsub("{{{sclink}}}", self._sc:makeCategoryLink())
end
if desc:find("{") then
desc = mw.getCurrentFrame():preprocess(desc)
end
return desc
end
function Category:substitute_template_specs_in_args(args)
if not args then
return args
end
local pinfo = {}
for k, v in pairs(args) do
k = self:substitute_template_specs(k)
v = self:substitute_template_specs(v)
pinfo[k] = v
end
return pinfo
end
function Category:make_new(info)
info.originating_label = self._info.label
info.originating_module = self._data.module
info.called_from_inside = true
return Category.new(info)
end
function Category:getBreadcrumbName()
local ret
if self._lang or self._info.raw then
ret = self._data.breadcrumb
else
ret = self._data.umbrella and self._data.umbrella.breadcrumb
end
if not ret then
ret = self._info.label
end
if type(ret) == "string" or type(ret) == "number" then
ret = {name = ret}
end
local name = self:substitute_template_specs(ret.name)
local nocap = ret.nocap
if self._sc then
name = name .. " in " .. self._sc:getDisplayForm()
end
return name, nocap
end
function Category:getTOC(toc_type)
local ret
-- type "none" means everything fits on a single page; fall back to normal behavior (display nothing)
if toc_type == "none" then
return true
end
-- Return the textual expansion of the first existing template among the given templates, first performing
-- substitutions on the template name such as replacing {{{langcode}}} with the current language's code (if any).
-- If no templates exist after expansion, or if nil is passed in, return nil. If a single string is passed in,
-- treat it like a one-element list consisting of that string.
local function get_template_text(templates)
if templates == nil then
return nil
end
if type(templates) ~= "table" then
templates = {templates}
end
for _, template in ipairs(templates) do
if template == false then
return false
end
template = self:substitute_template_specs(template)
local template_obj = mw.title.new("Template:" .. template)
if template_obj.exists then
return mw.getCurrentFrame():expandTemplate{title = template_obj.text, args = {}}
end
end
return nil
end
local templates, fallback_templates
-- If TOC type is "full" (more than 2500 entries), do the following, in order:
-- 1. look up and expand the `toc_template_full` templates (normal or umbrella, depending on whether there is
-- a current language);
-- 2. look up and expand the `toc_template` templates (normal or umbrella, as above);
-- 3. do the default behavior, which is as follows:
-- 3a. look up a language-specific "full" template according to the current language (using English if there
-- is no current language);
-- 3b. look up a language-specific "normal" template according to the current language (using English if there
-- is no current language);
-- 3c. display nothing.
--
-- If TOC type is "normal" (between 200 and 2500 entries), do the following, in order:
-- 1. look up and expand the `toc_template` templates (normal or umbrella, depending on whether there is
-- a current language);
-- 2. do the default behavior, which is as follows:
-- 2a. look up a language-specific "normal" template according to the current language (using English if there
-- is no current language);
-- 2b. display nothing.
local data_source
if self._lang or self._info.raw then
data_source = self._data
else
data_source = self._data.umbrella
end
if data_source then
if toc_type == "full" then
templates = data_source.toc_template_full
fallback_templates = data_source.toc_template
else
templates = data_source.toc_template
end
end
local text = get_template_text(templates)
if text then
return text
end
if text == false then
return nil
end
text = get_template_text(fallback_templates)
if text then
return text
end
if text == false then
return nil
end
return true
end
function Category:getInfo()
return self._info
end
function Category:getDataModule()
return self._data.module
end
function Category:canBeEmpty()
if self._lang or self._info.raw then
return self._data.can_be_empty
else
return self._data.umbrella and self._data.umbrella.can_be_empty
end
end
function Category:isHidden()
if self._lang or self._info.raw then
return self._data.hidden
else
return self._data.umbrella and self._data.umbrella.hidden
end
end
function Category:getCategoryName()
if self._info.raw then
return self._info.label
elseif self._lang then
local ret = self._lang:getCanonicalName() .. " " .. self._info.label
if self._sc then
ret = ret .. " in " .. self._sc:getDisplayForm()
end
return mw.getContentLanguage():ucfirst(ret)
else
local ret = mw.getContentLanguage():ucfirst(self._info.label)
if not (self._data.umbrella and self._data.umbrella.no_by_language) then
ret = ret .. " by language"
end
return ret
end
end
function Category:getIntro()
if self._lang or self._info.raw then
return self:substitute_template_specs(self._data.intro)
else
return self._data.umbrella and self:substitute_template_specs(self._data.umbrella.intro)
end
end
local function remove_lang_params(desc)
desc = desc:gsub("{{{langname}}} ", "")
desc = desc:gsub("{{{langcode}}} ", "")
desc = desc:gsub("{{{langcat}}} ", "")
return desc
end
function Category:getDescription(isChild)
-- Allows different text in the list of a category's children
local isChild = isChild == "child"
local function display_title(displaytitle, lang)
if type(displaytitle) == "string" then
displaytitle = self:substitute_template_specs(displaytitle)
else
displaytitle = displaytitle(self:getCategoryName(), lang)
end
mw.getCurrentFrame():callParserFunction("DISPLAYTITLE", "Category:" .. displaytitle)
end
if self._lang or self._info.raw then
if not isChild and self._data.displaytitle then
display_title(self._data.displaytitle, self._lang)
end
if self._sc then
return self:getCategoryName() .. "."
else
local desc = self._data.description
if not isChild and desc and self._data.additional then
desc = desc .. "\n\n" .. self._data.additional
end
return self:substitute_template_specs(desc)
end
else
if not isChild and self._data.umbrella and self._data.umbrella.displaytitle then
display_title(self._data.umbrella.displaytitle, nil)
end
local desc = self._data.umbrella and self._data.umbrella.description
local has_umbrella_desc = not not desc
if not desc then
desc = self._data.description
if desc then
desc = remove_lang_params(desc)
desc = mw.getContentLanguage():lcfirst(desc)
desc = desc:gsub("%.$", "")
desc = "Categories with " .. desc .. "."
end
end
if not desc then
desc = "Categories with " .. self._info.label .. " in various specific languages."
end
if not isChild then
local additional = self._data.umbrella and self._data.umbrella.additional or not has_umbrella_desc and self._data.additional
if additional then
desc = desc .. "\n\n" .. remove_lang_params(additional)
end
desc = desc .. "\n\n{{{umbrella_msg}}}"
end
desc = self:substitute_template_specs(desc)
return desc
end
end
function Category:canonicalize_parents_children(cats, is_children)
if not cats then
return nil
end
if type(cats) ~= "table" then
cats = {cats}
end
if cats.name or cats.module then
cats = {cats}
end
if #cats == 0 then
return nil
end
local ret = {}
for _, cat in ipairs(cats) do
if type(cat) ~= "table" or not cat.name and not cat.module then
cat = {name = cat}
end
table.insert(ret, cat)
end
local is_umbrella = not self._lang and not self._info.raw
local table_type = is_children and "extra_children" or "parents"
for i, cat in ipairs(ret) do
local sort_key = self:substitute_template_specs(cat.sort)
local name = cat.name
if cat.module then
-- A reference to a category using another category tree module.
if not cat.args then
error("Missing .args in '" .. table_type .. "' table with module=\"" .. cat.module .. "\" for '" ..
self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'")
end
name = require("Module:category tree/" .. cat.module).new(self:substitute_template_specs_in_args(cat.args))
else
if not name then
error("Missing .name in " .. (is_umbrella and "umbrella " or "") .. "'" .. table_type .. "' table for '" ..
self._info.label .. "' category entry in module '" .. (self._data.module or "unknown") .. "'")
end
if type(name) ~= "string" then
-- assume it's a category object and use it directly
else
name = self:substitute_template_specs(name)
if name:find("^Category:") then
-- It's a non-poscatboiler category name.
sort_key = sort_key or is_children and name:gsub("^Category:", "") or self:getCategoryName()
else
-- It's a label.
local raw
if self._info.raw or is_umbrella then
raw = not cat.is_label
else
raw = cat.raw
end
local cat_code
if cat.lang == false then
cat_code = nil
elseif cat.lang then
cat_code = self:substitute_template_specs(cat.lang)
elseif not raw then
cat_code = self._info.code
end
sort_key = sort_key or is_children and name or self._info.label
name = self:make_new({
label = name, code = cat_code, sc = self:substitute_template_specs(cat.sc),
raw = raw, args = self:substitute_template_specs_in_args(cat.args)
})
end
end
end
sort_key = mw.ustring.upper(sort_key or is_children and " " or self._info.label)
local description = is_children and self:substitute_template_specs(cat.description) or nil
ret[i] = {name = name, description = description, sort = sort_key}
end
return ret
end
function Category:getParents()
local is_umbrella = not self._lang and not self._info.raw
if self._sc then
local parent1 = self:make_new({code = self._info.code, label = "terms in " .. self._sc:getCanonicalName() .. " script"})
local parent2 = self:make_new({code = self._info.code, label = self._info.label, raw = self._info.raw, args = self._info.args})
return {
{name = parent1, sort = self._sc:getCanonicalName()},
{name = parent2, sort = self._sc:getCanonicalName()},
}
else
local parents
if is_umbrella then
parents = self._data.umbrella and self._data.umbrella.parents or self._data.umbrella_parents
else
parents = self._data.parents
end
return self:canonicalize_parents_children(parents)
end
end
function Category:getChildren()
local is_umbrella = not self._lang and not self._info.raw
local children = self._data.children
local ret = {}
if not is_umbrella and children then
for _, child in ipairs(children) do
child = mw.clone(child)
if type(child) ~= "table" then
child = {name = child}
end
if not child.sort then
child.sort = child.name
end
-- FIXME, is preserving the script correct?
child.name = self:make_new({code = self._info.code, label = child.name, raw = child.raw, sc = self._info.sc})
table.insert(ret, child)
end
end
local extra_children
if is_umbrella then
extra_children = self._data.umbrella and self._data.umbrella.extra_children
else
extra_children = self._data.extra_children
end
extra_children = self:canonicalize_parents_children(extra_children, "children")
if extra_children then
for _, child in ipairs(extra_children) do
table.insert(ret, child)
end
end
if #ret == 0 then
return nil
end
return ret
end
function Category:getUmbrella()
if self._info.raw or not self._lang or self._sc or self._data.umbrella == false then
return nil
end
return self:make_new({label = self._info.label})
end
function Category:getAppendix()
-- FIXME, this should be customizable.
if not self._info.raw and self._info.label and self._lang then
local appendixName = "Appendix:" .. self._lang:getCanonicalName() .. " " .. self._info.label
local appendix = mw.title.new(appendixName).exists
if appendix then
return appendixName
else
return nil
end
else
return nil
end
end
function Category:getCatfixInfo()
if self._lang or self._info.raw then
if self._data.catfix == false then
return nil
end
local lang, sc
if self._data.catfix then
lang = require("Module:languages").getByCode(self:substitute_template_specs(self._data.catfix), true)
else
lang = self._lang
end
if self._data.catfix_sc then
sc = require("Module:scripts").getByCode(self:substitute_template_specs(self._data.catfix_sc), true)
else
sc = self._sc
end
return lang, sc
else -- umbrella
if not self._data.umbrella or not self._data.umbrella.catfix then
return nil
end
local lang = require("Module:languages").getByCode(self:substitute_template_specs(self._data.umbrella.catfix), true)
local sc = self:substitute_template_specs(self._data.umbrella.catfix_sc)
if sc then
sc = require("Module:scripts").getByCode(sc, true)
end
return lang, sc
end
end
function Category:getTOCTemplateName()
local lang, sc = self:getCatfixInfo()
local code = lang and lang:getCode() or "en"
return "Templet:" .. code .. "-" .. (self._data.toctemplateprefix or "") .. "categoryTOC"
end
return export
h5hn4m47urhlt044oxgkc41uwyl6wr2
Grup:Sex
14
5284
13294
2022-08-01T21:17:03Z
Asinis632
1829
Created page with "{{auto cat}}"
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Grup:en:Sex
14
5286
13295
2022-08-01T21:17:42Z
Asinis632
1829
Created page with "{{auto cat}}"
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Templet:attention
10
5287
13297
2022-08-01T21:30:29Z
Asinis632
1829
Created page with "<onlyinclude><!-- --><span id="attentionseeking{{{1|}}}{{{id|}}}" class="attentionseeking" lang="{{{1|}}}" {{#if:{{{2|}}}|title="{{#invoke:ugly hacks|escape_html|{{{2}}}}}"}}></span><!-- --><includeonly><!-- -->{{#if:{{{nocat|}}}||<!-- -->{{categorize<!-- -->|{{{1}}}<!-- -->|Requests for attention concerning {{langname|{{{1}}}}}<!-- -->|{{#if:{{{topic|}}}|Entries needing topical attention}}<!-- -->|sort={{{sort|}}}<!-- -->}}<!-- -->{{#if:{{{2|}}}||Cat..."
wikitext
text/x-wiki
<onlyinclude><!--
--><span id="attentionseeking{{{1|}}}{{{id|}}}" class="attentionseeking" lang="{{{1|}}}" {{#if:{{{2|}}}|title="{{#invoke:ugly hacks|escape_html|{{{2}}}}}"}}></span><!--
--><includeonly><!--
-->{{#if:{{{nocat|}}}||<!--
-->{{categorize<!--
-->|{{{1}}}<!--
-->|Requests for attention concerning {{langname|{{{1}}}}}<!--
-->|{{#if:{{{topic|}}}|Entries needing topical attention}}<!--
-->|sort={{{sort|}}}<!--
-->}}<!--
-->{{#if:{{{2|}}}||[[Category:attention lacking explanation]]}}<!--
-->}}<!--
--></includeonly><!--
--></onlyinclude>{{documentation}}
73b8jh574kyf2hmyua9dzn5d9iydkql
Grup:ja:Adveb
14
5288
13303
2022-08-01T21:43:05Z
Asinis632
1829
Created page with "{{auto cat}}"
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
13306
13303
2022-08-01T21:47:09Z
Asinis632
1829
wikitext
text/x-wiki
{{delete}}
35r2j9t4ectnt1cmb7mlgcqvwz6h5k6
Grup:Siapan adveb
14
5289
13305
2022-08-01T21:46:24Z
Asinis632
1829
Created page with "{{auto cat}}"
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx