ဝိက်ရှေန်နရဳ
mnwwiktionary
https://mnw.wiktionary.org/wiki/%E1%80%9D%E1%80%AD%E1%80%80%E1%80%BA%E1%80%9B%E1%80%BE%E1%80%B1%E1%80%94%E1%80%BA%E1%80%94%E1%80%9B%E1%80%B3:%E1%80%99%E1%80%AF%E1%80%80%E1%80%BA%E1%80%9C%E1%80%AD%E1%80%80%E1%80%BA%E1%80%90%E1%80%99%E1%80%BA
MediaWiki 1.47.0-wmf.5
case-sensitive
မဳဒဳယာ
တၟေင်
ဓရီုကျာ
ညးလွပ်
ညးလွပ် ဓရီုကျာ
ဝိက်ရှေန်နရဳ
ဝိက်ရှေန်နရဳ ဓရီုကျာ
ဝှာင်
ဝှာင် ဓရီုကျာ
မဳဒဳယာဝဳကဳ
မဳဒဳယာဝဳကဳ ဓရီုကျာ
ထာမ်ပလိက်
ထာမ်ပလိက် ဓရီုကျာ
ရီု
ရီု ဓရီုကျာ
ကဏ္ဍ
ကဏ္ဍ ဓရီုကျာ
အဆက်လက္ကရဴ
အဆက်လက္ကရဴ ဓရီုကျာ
ကာရန်
ကာရန် ဓရီုကျာ
အဘိဓာန်
အဘိဓာန် ဓရီုကျာ
ဗီုပြၚ်သိုၚ်တၟိ
ဗီုပြၚ်သိုၚ်တၟိ ဓရီုကျာ
TimedText
TimedText talk
မဝ်ဂျူ
မဝ်ဂျူ ဓရီုကျာ
Event
Event talk
ထာမ်ပလိက်:mention
10
97
396649
153491
2026-06-08T16:55:26Z
咽頭べさ
33
咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[ထာမ်ပလိက်:m]] ဇရေင် [[ထာမ်ပလိက်:mention]] နကု မကလေင်ပညုင်
153491
wikitext
text/x-wiki
<includeonly><onlyinclude>{{safesubst:<noinclude/>#invoke:links/templates|l_term_t|face=term}}</onlyinclude></includeonly><!--
-->{{m|en|term}}{{documentation}}
h4xj9n1e4dg6e4acumj649ey2dtagiw
အဆက်လက္ကရဴ:ယူနဳကုဒ်/အာရဗဳ
100
2126
396659
184313
2026-06-08T17:28:50Z
咽頭べさ
33
咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[အဆက်လက္ကရဴ:ယူနဳကုဒ်/ဍုၚ်အာရဗဳ]] ဇရေင် [[အဆက်လက္ကရဴ:ယူနဳကုဒ်/အာရဗဳ]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင်
6225
wikitext
text/x-wiki
{{#invoke:character list|show_header|block=ဍုင်အာရဗဳ}}
{{#invoke:character list|show|block=ဍုင်အာရဗဳ}}
oi8wzdzdpxx9m5bvqrj6uafup68bkuz
အဆက်လက္ကရဴ:ယူနဳကုဒ်/သဳရဳလေတ်
100
2301
396657
6561
2026-06-08T17:25:14Z
咽頭べさ
33
咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[အဆက်လက္ကရဴ:ယူနဳကုဒ်/စဳရယ်လ်]] ဇရေင် [[အဆက်လက္ကရဴ:ယူနဳကုဒ်/သဳရဳလေတ်]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင်
6561
wikitext
text/x-wiki
{{#invoke:character list|show_header|block=စဳရယ်လ်}}
{{#invoke:character list|show|block=စဳရယ်လ်}}
1why8goi4q0vorqk7n65ewjuhpauuak
အဆက်လက္ကရဴ:ယူနဳကုဒ်/သဳရဳလေတ်အဆက်တၞဟ်
100
13793
396658
21914
2026-06-08T17:26:42Z
咽頭べさ
33
咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[အဆက်လက္ကရဴ:ယူနဳကုဒ်/အခဝ်စဳရယ်လ်အဆက်တၞဟ်]] ဇရေင် [[အဆက်လက္ကရဴ:ယူနဳကုဒ်/သဳရဳလေတ်အဆက်တၞဟ်]] သီုကဵု ဟွံဂွံ ဂိုင်စွံလဝ် မကလေင်ပညုင်
21914
wikitext
text/x-wiki
{{#invoke:character list|show_header|block=အခဝ်စဳရယ်လ်အဆက်တၞဟ်}}
{{#invoke:character list|show|block=အခဝ်စဳရယ်လ်အဆက်တၞဟ်}}
[[nds:Anhang:Unicode/Kyrillsch Ergänzen]]
[[zh:附錄:Unicode/西里爾字母補充]]
[[en:Appendix:Unicode/Cyrillic Supplement]]
7cs9w4nd03kf13qnqt8xt4hvmkz0q8p
မဝ်ဂျူ:bg-nominal
828
295760
396591
2026-06-08T13:36:28Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular case/number/definiteness (and gender for adjectives) combination. Example slot names for nouns are "ind_pl" (indefinite plural), "def_obj_sg" (definite objective singular), "voc_sg" (vocative singular). Example slot names for adjectives are "ind_pl" (indefinite plural) and "def_obj_m_sg" (definite objec..."
396591
Scribunto
text/plain
local export = {}
--[=[
Authorship: Ben Wing <benwing2>
]=]
--[=[
TERMINOLOGY:
-- "slot" = A particular case/number/definiteness (and gender for adjectives) combination.
Example slot names for nouns are "ind_pl" (indefinite plural), "def_obj_sg" (definite objective
singular), "voc_sg" (vocative singular). Example slot names for adjectives are "ind_pl"
(indefinite plural) and "def_obj_m_sg" (definite object masculine singular) Each slot is filled
with zero or more forms.
-- "form" = The declined Bulgarian form representing the value of a given slot. For example, мо́мко
is a form, representing the value of the voc_sg slot of the lemma мо́мък "youth".
-- "lemma" = The dictionary form of a given Bulgarian term. Generally the indefinite (masculine)
singular, but will be the indefinite plural of plurale tantum nouns (e.g. га́щи "pants"), and
may occasionally be another form if the indefinite (masculine) singular is missing.
-- "plurale tantum" (plural "pluralia tantum") = A noun that exists only in the plural. Examples are
очила́ "glasses" and три́ци "bran".
-- "singulare tantum" (plural "singularia tantum") = A noun that exists only in the singular.
Examples are ори́з "rice" and Бълга́рия "Bulgaria".
]=]
local lang = require("Module:languages").getByCode("bg")
local m_table = require("Module:table")
local m_links = require("Module:links")
local m_string_utilities = require("Module:string utilities")
local iut = require("Module:inflection utilities")
local put = require("Module:parse utilities")
local m_para = require("Module:parameters")
local com = require("Module:bg-common")
local u = require("Module:string/char")
local rsplit = mw.text.split
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rgmatch = mw.ustring.gmatch
local rsubn = mw.ustring.gsub
local ulen = mw.ustring.len
local uupper = mw.ustring.upper
local AC = u(0x0301) -- acute = ́
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
-- version of rsubn() that returns a 2nd argument boolean indicating whether
-- a substitution was made.
local function rsubb(term, foo, bar)
local retval, nsubs = rsubn(term, foo, bar)
return retval, nsubs > 0
end
local noun_overriding_forms = {
["pl"] = true,
["ind"] = true,
["def"] = true,
["def_sub"] = true,
["def_obj"] = true,
["count"] = true,
["voc"] = true,
["acc"] = true,
["gen"] = true,
["dat"] = true,
["ind_pl"] = true,
["def_pl"] = true,
["voc_pl"] = true,
["acc_pl"] = true,
["gen_pl"] = true,
["dat_pl"] = true,
}
local boolean_noun_overriding_props = {
["-pl"] = true,
["-def"] = true,
["-def_pl"] = true,
["-count"] = true,
}
local boolean_adj_overriding_props = {
["dva"] = true,
["koj"] = true,
["chij"] = true,
["+voc"] = true,
}
local noun_slots = {
["ind_sg"] = "indef|s",
["def_sub_sg"] = "def|sbj|s",
["def_obj_sg"] = "def|obj|s",
["voc_sg"] = "voc|s",
["acc_sg"] = "acc|s",
["gen_sg"] = "gen|s",
["dat_sg"] = "dat|s",
["voc_pl"] = "voc|p",
["acc_pl"] = "acc|p",
["gen_pl"] = "gen|p",
["dat_pl"] = "dat|p",
["ind_pl"] = "indef|p",
["def_pl"] = "def|p",
["count"] = "count form",
}
local extra_noun_cases = {"acc", "gen", "dat"}
local adj_slots = {
["ind_m_sg"] = "indef|m|s",
["def_sub_m_sg"] = "def|sbj|m|s",
["def_obj_m_sg"] = "def|obj|m|s",
["ind_f_sg"] = "indef|f|s",
["def_f_sg"] = "def|f|s",
["ind_n_sg"] = "indef|n|s",
["def_n_sg"] = "def|n|s",
["ind_pl"] = "indef|p",
["def_pl"] = "def|p",
["voc_m_sg"] = "voc|m|s",
-- Extra slot for possessive forms.
["short"] = "short|form",
-- Extra slots for два and related words.
["ind_m_pl"] = "indef|m|p",
["def_m_pl"] = "def|m|p",
["ind_fn_pl"] = "indef|f|p|;|indef|n|p",
["def_fn_pl"] = "def|f|p|;|def|n|p",
-- Extra slot for demonstrative and interrogative pronouns.
["m_sg"] = "m|s",
["nom_m_sg"] = "nom|m|s",
["acc_m_sg"] = "acc|m|s",
["dat_m_sg"] = "dat|m|s",
["f_sg"] = "f|s",
["n_sg"] = "n|s",
["pl"] = "p",
}
local masc_adj_to_noun_slots = {
["ind_m_sg"] = {"ind_sg", "acc_sg", "gen_sg", "dat_sg"},
["def_sub_m_sg"] = "def_sub_sg",
["def_obj_m_sg"] = "def_obj_sg",
["voc_m_sg"] = "voc_sg",
}
local fem_adj_to_noun_slots = {
["ind_f_sg"] = {"ind_sg", "voc_sg", "acc_sg", "gen_sg", "dat_sg"},
["def_f_sg"] = {"def_sub_sg", "def_obj_sg"},
}
local neut_adj_to_noun_slots = {
["ind_n_sg"] = {"ind_sg", "voc_sg", "acc_sg", "gen_sg", "dat_sg"},
["def_n_sg"] = {"def_sub_sg", "def_obj_sg"},
}
local pl_adj_to_noun_slots = {
["ind_pl"] = {"ind_pl", "count", "voc_pl", "acc_pl", "gen_pl", "dat_pl"},
["def_pl"] = "def_pl",
}
local potential_noun_lemma_slots = {
"ind_sg",
"ind_pl"
}
local potential_adj_lemma_slots = {
"ind_m_sg",
"ind_pl"
}
-- Add a tracking category to the page.
local function track(page)
require("Module:debug").track("bg-nominal/" .. page)
return true
end
-- Given an alternating run of the format returned by `parse_balanced_segment_run`,
-- where the even-numbered segments are footnotes and the whole run describes an adjective
-- accent spec (e.g. "b*(я)" split as {"b*(я)"}), parse the accent spec and return an object
-- describing this spec. No footnotes are currently allowed in the accent spec and hence an
-- error will be thrown if there are any even-numbered segments. The returned object is e.g.
-- (for the above spec)
--
-- {
-- accents = {"b"},
-- reducible = true,
-- ya = true,
-- }
--
-- Other possible fields of the object:
--
-- soft_sign = BOOLEAN
-- nocomp = BOOLEAN
-- ch = BOOLEAN
-- che = BOOLEAN
-- ur = BOOLEAN
local function parse_adj_accent_spec(accent_run)
if #accent_run ~= 1 then
error("Bracketed footnotes not allowed in adjective accent specs: '" .. table.concat(accent_run) .. "'")
end
local retval = {accents = {}}
local accents, rest = accent_run[1]:match("^([ab]*)(.-)$")
for accent in accents:gmatch(".") do
table.insert(retval.accents, accent)
end
rest, retval.reducible = rsubb(rest, "%*", "")
rest, retval.nocomp = rsubb(rest, "!", "")
rest, retval.soft_sign = rsubb(rest, "%(ь%)", "")
rest, retval.ch = rsubb(rest, "%(ч%)", "")
rest, retval.che = rsubb(rest, "%(че%)", "")
rest, retval.ur = rsubb(rest, "%(ър%)", "")
rest, retval.ya = rsubb(rest, "%(я%)", "")
if rest ~= "" then
error("Unrecognized indicator: '" .. rest .. "'")
end
return retval
end
-- Given an alternating run of the format returned by `parse_balanced_segment_run`,
-- where the even-numbered segments are footnotes and the whole run describes
-- a noun accent spec (e.g. "ad(v)+ове++и[a]" split as {"ad(v)+ове++и", "[a]", ""}),
-- parse the accent spec and return an object describing this spec. The returned
-- object is e.g. (for the above spec)
--
-- {
-- accents = {"a", "d"},
-- plurals = {{plural = "ове"}, {plural = "и", double_plus = true, footnotes = {"[a]"}}},
-- vocative = true,
-- }
--
-- Other possible fields of the object:
--
-- gender = STRING (either "m", "f" or "n")
-- reducible = BOOLEAN
-- reducible_vocative = BOOLEAN
-- reducible_count = BOOLEAN
-- reducible_definite = BOOLEAN
-- human = BOOLEAN
-- soft_sign = BOOLEAN
-- no_sign_sign = BOOLEAN
-- remove_in = BOOLEAN
-- ur = BOOLEAN
local function parse_noun_accent_spec(accent_run)
local retval = {accents = {}, plurals = {}}
local plurals = {}
local plural_groups = put.split_alternating_runs(accent_run, "%+")
local double_plus = false
for i, plural_group in ipairs(plural_groups) do
if i > 1 and retval.is_adj then
error("Explicit plurals not allowed with adjectival forms: '" .. table.concat(accent_run) .. "'")
elseif i > 1 then
if #plural_group == 1 and plural_group[1] == "" then
if double_plus then
error("Too many plus signs: '" .. table.concat(accent_run) .. "'")
else
double_plus = true
end
else
local plural = {plural = plural_group[1], double_plus = double_plus}
double_plus = false
for j = 2, #plural_group - 1, 2 do
if plural_group[j + 1] ~= "" then
error("Extraneous text after bracketed footnotes: '" .. table.concat(plural_group) .. "'")
end
if not plural.footnotes then
plural.footnotes = {}
end
table.insert(plural.footnotes, plural_group[j])
end
table.insert(retval.plurals, plural)
end
elseif #plural_group ~= 1 then
error("Bracketed footnotes not allowed in accent specs: '" .. table.concat(plural_group) .. "'")
else
local rest
rest, retval.is_adj = rsubb(plural_group[1], "#", "")
if retval.is_adj then
retval.nocomp = true
rest, retval.has_vocative = rsubb(rest, "%(v%)", "")
rest, retval.human = rsubb(rest, "%(h%)", "")
local adj_accent_spec = parse_adj_accent_spec({rest})
for prop, value in pairs(adj_accent_spec) do
retval[prop] = value
end
else
local accents
local accents, rest = plural_group[1]:match("^([abcd]*)(.-)$")
for accent in accents:gmatch(".") do
table.insert(retval.accents, accent)
end
rest, retval.reducible_vocative = rsubb(rest, "%(v%*%)", "")
rest, retval.reducible_count = rsubb(rest, "%(c%*%)", "")
rest, retval.reducible_definite = rsubb(rest, "%(d%*%)", "")
rest, retval.reducible = rsubb(rest, "%*", "")
rest, retval.has_vocative = rsubb(rest, "%(v%)", "")
rest, retval.human = rsubb(rest, "%(h%)", "")
rest, retval.soft_sign = rsubb(rest, "%(ь%)", "")
rest, retval.no_soft_sign = rsubb(rest, "%(%-ь%)", "")
if retval.soft_sign and retval.no_soft_sign then
error("Conflicting specs: Can't specify both (ь) and (-ь)")
end
rest, retval.remove_in = rsubb(rest, "%(ин%)", "")
rest, retval.ur = rsubb(rest, "%(ър%)", "")
rest, retval.ya = rsubb(rest, "%(я%)", "")
rest, retval.no_ya = rsubb(rest, "%(%-я%)", "")
if retval.ya and retval.no_ya then
error("Conflicting specs: Can't specify both (я) and (-я)")
end
local masc, fem, neut, g
rest, masc = rsubb(rest, "%(m%)", "")
if masc then
g = "m"
end
rest, fem = rsubb(rest, "%(f%)", "")
if fem then
if g then
error("Conflicting gender specs: Can't specify both (m) and (f)")
end
g = "f"
end
rest, neut = rsubb(rest, "%(n%)", "")
if neut then
if g then
error("Conflicting gender specs: Can't specify both (" .. g .. ") and (n)")
end
g = "n"
end
retval.gender = g
if rest ~= "" then
error("Unrecognized indicator: '" .. rest .. "'")
end
end
end
end
return retval
end
-- Given an alternating run of the format returned by `parse_balanced_segment_run`,
-- where the even-numbered segments are footnotes and the whole run describes
-- a form spec (e.g. "pl:+:мо́мце:момци́[a][collective]" split as
-- {"pl:+:мо́мце:момци́", "[a]", "", "[collective]", ""}), parse the form spec and return
-- two values, e.g. (for the above spec)
--
-- "pl", {{value = "+"}, {value = "мо́мце"}, {value = "момци́", footnotes = {"[a]", "[collective]"}}}
--
-- As special cases, if the form name is "n", the second value will be a string, one of
-- "sg", "pl" or "both", and if the form name is in `negative_*_overriding_forms`, the second value
-- will be `true`. Only the following form names are allowed:
-- * if from_noun, "n"
-- * if not is_adj, the keys in `noun_overriding_forms` and `boolean_noun_overriding_props`
-- * if is_adj and not from_noun, the keys in `boolean_adj_overriding_props`
-- * if is_adj and not from_noun, the keys in `adj_slots`
-- * if is_adj and from_noun, the keys in `noun_slots`
-- Note than `from_noun` should be true if the overall declension is of a noun
-- (including adjectival nouns) and `is_adj` should be true if the particular term we're
-- declining is an adjective or adjectival noun.
local function parse_form_spec(form_run, from_noun, is_adj)
local colon_separated_groups = put.split_alternating_runs(form_run, ":")
local form_name_group = colon_separated_groups[1]
if #form_name_group ~= 1 then
error("Bracketed footnotes not allowed after form name: '" .. table.concat(form_name_group) .. "'")
end
local form_name = form_name_group[1]
if from_noun and form_name == "n" then
if #colon_separated_groups == 2 and #colon_separated_groups[2] == 1 then
local number = colon_separated_groups[2][1]
if number == "sg" or number == "pl" or number == "both" then
return "n", number
end
end
error("Number spec should be 'n:sg', 'n:pl' or 'n:both': '" .. table.concat(form_run))
elseif (
not is_adj and boolean_noun_overriding_props[form_name] or
is_adj and not from_noun and boolean_adj_overriding_props[form_name]
) then
if #colon_separated_groups > 1 then
error("Cannot specify a value for boolean spec '" .. form_name .. "'")
end
return form_name, true
elseif (
not is_adj and noun_overriding_forms[form_name] or
is_adj and not from_noun and adj_slots[form_name] or
is_adj and from_noun and noun_slots[form_name]
) then
local forms = {}
for i, colon_separated_group in ipairs(colon_separated_groups) do
if i > 1 then
local form = {value = colon_separated_group[1]}
for j = 2, #colon_separated_group - 1, 2 do
if colon_separated_group[j + 1] ~= "" then
error("Extraneous text after bracketed footnotes: '" .. table.concat(colon_separated_group) .. "'")
end
if not form.footnotes then
form.footnotes = {}
end
table.insert(form.footnotes, colon_separated_group[j])
end
table.insert(forms, form)
end
end
return form_name, forms
else
error("Unrecognized form name: '" .. form_name .. "'")
end
end
-- Given an angle-bracket spec (the entire spec following a lemma, including the angle brackets),
-- parse the noun accent and form specs inside the angle brackets. The return value is a list of
-- accent-and-form specs, where each such spec is an object with a field 'accent_spec' in the
-- format returned by parse_noun_accent_spec(), plus zero or more fields describing forms, where the
-- field name is the form name and the value is the second return value of parse_form_spec().
-- For example, given "<a*+ове+а[d],/pl:момци́[a][collective]>", the return value will be
--
-- {
-- {
-- accent_spec = {
-- accents = {"a"},
-- reducible = true,
-- plurals = {{plural = "ове"}, {plural = "а", footnotes = {"[d]"}}},
-- }
-- },
-- {
-- accent_spec = {
-- accents = {},
-- plurals = {},
-- },
-- pl = {{value = "момци́", footnotes = {"[a]", "[collective]"}}},
-- },
-- }
local function parse_noun_accent_and_form_specs(angle_bracket_spec)
local inside = rmatch(angle_bracket_spec, "^<(.*)>$")
assert(inside)
local bracketed_runs = put.parse_balanced_segment_run(inside, "[", "]")
local comma_separated_groups = put.split_alternating_runs(bracketed_runs, ",")
local accent_and_form_specs = {}
for _, comma_separated_group in ipairs(comma_separated_groups) do
local accent_and_form_spec = {}
local slash_separated_groups = put.split_alternating_runs(comma_separated_group, "/")
accent_and_form_spec.accent_spec = parse_noun_accent_spec(slash_separated_groups[1])
for i, slash_separated_group in ipairs(slash_separated_groups) do
if i > 1 then
local form_name, forms = parse_form_spec(slash_separated_group,
"from noun", accent_and_form_spec.accent_spec.is_adj)
if accent_and_form_spec[form_name] then
error("Cannot specify '" .. form_name .. "' twice")
end
accent_and_form_spec[form_name] = forms
end
end
if accent_and_form_spec["count"] and accent_and_form_spec["-count"] then
error("Can't specify both 'count' and '-count'")
end
if accent_and_form_spec["def"] and accent_and_form_spec["-def"] then
error("Can't specify both 'def' and '-def'")
end
table.insert(accent_and_form_specs, accent_and_form_spec)
end
return accent_and_form_specs
end
-- Given an angle-bracket spec (the entire spec following a lemma, including the angle brackets),
-- parse the adjective accent and form specs inside the angle brackets. The return value is a list of
-- accent-and-form specs, where each such spec is an object with a field 'accent_spec' in the
-- format returned by parse_noun_accent_spec(). Currently there are no other fields describing forms;
-- that may change.
--
-- For example, given "<a*,b/def_f_sg:мо́ята:мо́йта[p]>", the return value will be
--
-- {
-- {
-- accent_spec = {
-- accents = {"a"},
-- reducible = true,
-- }
-- },
-- {
-- accent_spec = {
-- accents = {"b"},
-- },
-- def_f_sg = {{value = "мо́ята"}, {value = "мо́йта", footnotes = {"[p]"}}},
-- },
-- }
local function parse_adj_accent_and_form_specs(angle_bracket_spec)
local inside = rmatch(angle_bracket_spec, "^<(.*)>$")
assert(inside)
local bracketed_runs = put.parse_balanced_segment_run(inside, "[", "]")
local comma_separated_groups = put.split_alternating_runs(bracketed_runs, ",")
local accent_and_form_specs = {}
for _, comma_separated_group in ipairs(comma_separated_groups) do
local accent_and_form_spec = {}
local slash_separated_groups = put.split_alternating_runs(comma_separated_group, "/")
accent_and_form_spec.accent_spec = parse_adj_accent_spec(slash_separated_groups[1])
for i, slash_separated_group in ipairs(slash_separated_groups) do
if i > 1 then
local form_name, forms = parse_form_spec(slash_separated_group, false, "is adj")
if accent_and_form_spec[form_name] then
error("Cannot specify '" .. form_name .. "' twice")
end
accent_and_form_spec[form_name] = forms
end
end
table.insert(accent_and_form_specs, accent_and_form_spec)
end
return accent_and_form_specs
end
-- Parse a multiword spec such as "[[слънчев|слъ́нчева]]<#> [[систе́ма]]<>".
-- The return value is a table of the form
-- {
-- word_specs = {WORD_SPEC, WORD_SPEC, ...},
-- post_text = "TEXT-AT-END",
-- }
--
-- where WORD_SPEC describes an individual declined word and "TEXT-AT-END" is any raw text that
-- may occur after all declined words. Each WORD_SPEC is of the form
--
-- {
-- lemma = "LEMMA",
-- accent_and_form_specs = {ACCENT_AND_FORM_SPEC, ACCENT_AND_FORM_SPEC, ...}
-- before_text = "TEXT-BEFORE-WORD",
-- forms = {},
-- }
--
-- For example, the return value for "[[слънчев|слъ́нчева]]<#> [[систе́ма]]<>" is
-- {
-- word_specs = {
-- {
-- lemma = "[[слънчев|слъ́нчева]]",
-- accent_and_form_specs = {
-- {
-- accent_spec = {
-- is_adj = true,
-- }
-- },
-- }
-- before_text = "",
-- forms = {},
-- },
-- {
-- lemma = "[[систе́ма]]",
-- accent_and_form_specs = {
-- {
-- accent_spec = {
-- }
-- },
-- }
-- before_text = " ",
-- forms = {},
-- },
-- },
-- post_text = "",
-- }
local function parse_multiword_spec(segments, is_adj)
local multiword_spec = {
word_specs = {}
}
for i = 2, #segments - 1, 2 do
local word_spec = {}
local bracketed_runs = put.parse_balanced_segment_run(segments[i - 1], "[", "]")
local space_separated_groups = put.split_alternating_runs(bracketed_runs, "[ %-]", "preserve splitchar")
local before_text = {}
for j, space_separated_group in ipairs(space_separated_groups) do
if j == #space_separated_groups then
word_spec.lemma = m_links.remove_links(table.concat(space_separated_group))
if word_spec.lemma == "" then
error("Word is blank: '" .. table.concat(segments) .. "'")
end
else
table.insert(before_text, table.concat(space_separated_group))
end
end
word_spec.before_text = m_links.remove_links(table.concat(before_text))
word_spec.accent_and_form_specs = is_adj and parse_adj_accent_and_form_specs(segments[i]) or
parse_noun_accent_and_form_specs(segments[i])
word_spec.forms = {}
table.insert(multiword_spec.word_specs, word_spec)
end
multiword_spec.post_text = m_links.remove_links(segments[#segments])
return multiword_spec
end
-- Parse an alternant, e.g. "((мо́лив<>,моли́в<>))". The return value is a table of the form
-- {
-- alternants = {MULTIWORD_SPEC, MULTIWORD_SPEC, ...}
-- }
--
-- where MULTIWORD_SPEC describes a given alternant and is as returned by parse_multiword_spec().
local function parse_alternant(alternant, is_adj)
local parsed_alternants = {}
local alternant_text = rmatch(alternant, "^%(%((.*)%)%)$")
local segments = put.parse_balanced_segment_run(alternant_text, "<", ">")
local comma_separated_groups = put.split_alternating_runs(segments, ",")
local alternant_spec = {alternants = {}}
for _, comma_separated_group in ipairs(comma_separated_groups) do
table.insert(alternant_spec.alternants, parse_multiword_spec(comma_separated_group, is_adj))
end
return alternant_spec
end
-- Top-level parsing function. Parse a multiword spec that may have alternants in it.
-- The return value is a table of the form
-- {
-- alternant_or_word_specs = {ALTERNANT_OR_WORD_SPEC, ALTERNANT_OR_WORD_SPEC, ...}
-- post_text = "TEXT-AT-END",
-- }
--
-- where ALTERNANT_OR_WORD_SPEC is either an alternant spec as returned by parse_alternant()
-- or a word spec as described in the comment above parse_multiword_spec(). An alternant spec
-- looks as follows:
-- {
-- alternants = {MULTIWORD_SPEC, MULTIWORD_SPEC, ...},
-- before_text = "TEXT-BEFORE-ALTERNANT",
-- }
-- i.e. it is like what is returned by parse_alternant() but has an extra `before_text` field.
local function parse_alternant_multiword_spec(text, is_adj)
local alternant_multiword_spec = {alternant_or_word_specs = {}}
local alternant_segments = m_string_utilities.capturing_split(text, "(%(%(.-%)%))")
local last_post_text
for i = 1, #alternant_segments do
if i % 2 == 1 then
local segments = put.parse_balanced_segment_run(alternant_segments[i], "<", ">")
local multiword_spec = parse_multiword_spec(segments, is_adj)
for _, word_spec in ipairs(multiword_spec.word_specs) do
table.insert(alternant_multiword_spec.alternant_or_word_specs, word_spec)
end
last_post_text = multiword_spec.post_text
else
local alternant_spec = parse_alternant(alternant_segments[i], is_adj)
alternant_spec.before_text = last_post_text
table.insert(alternant_multiword_spec.alternant_or_word_specs, alternant_spec)
end
end
alternant_multiword_spec.post_text = last_post_text
return alternant_multiword_spec
end
local function map_word_specs(alternant_multiword_spec, fun)
for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do
if alternant_or_word_spec.alternants then
for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do
for _, word_spec in ipairs(multiword_spec.word_specs) do
fun(word_spec)
end
end
else
fun(alternant_or_word_spec)
end
end
end
-- Check that multisyllabic lemmas have stress, and add stress to monosyllabic
-- lemmas if needed.
local function check_lemma_stress(alternant_multiword_spec)
map_word_specs(alternant_multiword_spec, function(word_spec)
word_spec.lemma = com.add_monosyllabic_stress(word_spec.lemma)
if not rfind(word_spec.lemma, AC) then
error("Multisyllabic lemma '" .. word_spec.lemma .. "' needs an accent")
end
end)
end
-- Construct the "reduced" version of a stem. This removes an е or ъ followed by a word-final
-- consonant, stresses the final syllable of the result if necessary, and converts бое́ц into бо́йц- and бо́як into бо́йк-.
-- An error is thrown if the stem can't be reduced.
local function reduce_stem(stem)
local vowel_ending_stem, final_cons = rmatch(stem, "^(.*" .. com.vowel_c .. AC .. "?)[ея]́?(" .. com.cons_c .. ")$")
if vowel_ending_stem then
-- бое́ц etc.
return com.maybe_stress_final_syllable(vowel_ending_stem .. "й" .. final_cons)
end
local initial_stem, final_cons = rmatch(stem, "^(.*)[еъ]́?(" .. com.cons_c .. ")$")
if initial_stem then
return com.maybe_stress_final_syllable(initial_stem .. final_cons)
end
error("Unable to reduce stem: '" .. stem .. "'")
end
-- Return the stem of a given noun. This removes any endings -а/-я/-е/-о/-й, and if
-- the result lacks an accent, it is added onto the last syllable.
local function get_noun_stem(lemma)
local stem
stem = rmatch(lemma, "^(.*)[аеоя]́?$")
if stem then
return com.maybe_stress_final_syllable(stem)
end
stem = rmatch(lemma, "^(%u.*)и́?$")
if stem then
-- proper names like До́бри
return com.maybe_stress_final_syllable(stem)
end
stem = rmatch(lemma, "^(.*)й$")
if stem then
return stem
end
return lemma
end
-- Return the stem of a given adjective. This does the following:
-- (1) removes an ending -и, and if the result lacks an accent, it is added onto the last syllable;
-- (2) if (ър) was given, converts -ъ́р- to -ръ́- and vice-versa;
-- (3) if (я) was given, converts -е́- to -я́-;
-- (4) reduces the stem if appropriate.
local function get_adj_stem(lemma, accent_and_form_spec, as_noun)
local accent_spec = accent_and_form_spec.accent_spec
if as_noun and (accent_and_form_spec.n == "pl" or accent_spec.gender ~= "m") then
-- If we're dealing with a feminine singular, neuter singular or plural adjectival noun form,
-- we need to remove the ending to get the stem. No need to do any further frobbing, as the
-- resulting stem will be used for all forms.
local stem = rsub(lemma, "[аяеои]́?$", "")
return com.maybe_stress_final_syllable(stem)
end
local stem = rmatch(lemma, "^(.*)и́?$")
if stem then
stem = com.maybe_stress_final_syllable(stem)
else
stem = rmatch(lemma, "^(.*)й$") or lemma
end
if accent_spec.ur then
if rfind(stem, "ъ́р") then
stem = rsub(stem, "ъ́р", "ръ́")
elseif rfind(stem, "ръ́") then
stem = rsub(stem, "ръ́", "ъ́р")
else
error("Indicator (ър) specified but stem doesn't contain -ъ́р- or -ръ́-")
end
elseif accent_spec.ya then
if rfind(stem, "е́") then
stem = rsub(stem, "е́", "я́")
elseif not rfind(stem, "я́") then
error("Indicator (я) specified but stem doesn't contain -я́- or -е́-")
end
end
if accent_spec.reducible then
return reduce_stem(stem)
else
return stem
end
end
-- Construct all the stems needed for declining an adjective. This does the following:
-- (1) adds stress to a monosyllabic lemma if needed;
-- (2) throws an error if a multisyllabic lemma is given without any stress;
-- (3) constructs the stem of each accent_spec using get_adj_stem().
local function construct_adj_stems(alternant_multiword_spec)
map_word_specs(alternant_multiword_spec, function(word_spec)
for _, accent_and_form_spec in ipairs(word_spec.accent_and_form_specs) do
local accent_spec = accent_and_form_spec.accent_spec
accent_spec.stem = get_adj_stem(word_spec.lemma, accent_and_form_spec)
end
end)
end
-- Construct all the stems needed for declining a noun. This does the following:
-- (1) constructs the stem using get_noun_stem();
-- (2) constructs the reduced stem using reduce_stem(), if needed.
-- We don't construct the reduced stem unless the user gave a reduction spec somewhere;
-- otherwise we'll get an error on non-reducible stems.
local function construct_noun_stems(alternant_multiword_spec)
map_word_specs(alternant_multiword_spec, function(word_spec)
word_spec.stem = get_noun_stem(word_spec.lemma)
local needs_reduced_stem = false
for _, accent_and_form_spec in ipairs(word_spec.accent_and_form_specs) do
local accent_spec = accent_and_form_spec.accent_spec
if accent_spec.is_adj then
accent_spec.stem = get_adj_stem(word_spec.lemma, accent_and_form_spec, "as noun")
elseif accent_spec.reducible or accent_spec.reducible_definite or accent_spec.reducible_count or
accent_spec.reducible_vocative then
needs_reduced_stem = true
break
end
end
if needs_reduced_stem then
word_spec.reduced_stem = reduce_stem(word_spec.stem)
end
end)
end
-- Concatenate a stem and an ending. If the ending has an accent, any accent on the stem is removed.
-- If UR is specified, convert the sequence CръC to CърC, preserving any accent on -ъ-.
local function combine_stem_and_ending(stem, ending, accent_spec, is_adj)
if not is_adj and accent_spec.ur and rfind(ending, "^" .. com.vowel_c) then
stem = rsub(stem, "(" .. com.cons_c .. ")ръ(" .. AC .. "?)(" .. com.cons_c .. ")", "%1ъ%2р%3")
end
if not accent_spec.no_ya and (rfind(ending, AC) or (accent_spec.ya and rfind(ending, "^[еиь]"))) then
stem = rsub(stem, "я́", "е́")
end
if rfind(ending, AC) then
stem = rsub(stem, AC, "")
end
return stem .. ending
end
-- Given an adjective and an accent-and-form spec (an element of the list returned by parse_accent_and_form_specs()),
-- do any autodetection of gender, accent and indicators. This modifies the accent-and-form spec in place.
local function detect_adj_accent_and_form_spec(lemma, accent_and_form_spec)
local accent_spec = accent_and_form_spec.accent_spec
-- Detect accent if not specified.
if #accent_spec.accents == 0 then
local accent
if rfind(lemma, "и́$") then
accent = "b"
elseif accent_spec.reducible and rfind(lemma, "[ъяе]́" .. com.cons_c .. "$") then
-- Reducible adjective and accent on reducible vowel, e.g. добъ́р -> fem добра́
accent = "b"
else
accent = "a"
end
table.insert(accent_spec.accents, accent)
end
-- Detect soft-sign indicator.
local accent_spec = accent_and_form_spec.accent_spec
if rfind(lemma, "и́?$") and accent_spec.soft_sign then
accent_spec.soft_sign_i = true
end
if rfind(lemma, "й$") then
-- мой, твой, etc.
accent_spec.soft_sign = true
accent_spec.soft_sign_i = true
end
end
-- Given a noun and an accent-and-form spec (an element of the list returned by parse_accent_and_form_specs()),
-- do any autodetection of gender, accent and indicators. This modifies the accent-and-form spec in place.
local function detect_noun_accent_and_form_spec(lemma, accent_and_form_spec)
local accent_spec = accent_and_form_spec.accent_spec
if accent_spec.is_adj then
-- Detect gender if not specified.
if rfind(lemma, "[ая]́?$") then
g = "f"
elseif rfind(lemma, "[ео]́?$") then
g = "n"
else
g = "m"
end
accent_spec.gender = g
-- Detect has-vocative indicator.
if accent_spec.human or accent_and_form_spec.voc_sg or accent_and_form_spec.voc_pl then
accent_spec.has_vocative = true
end
-- Detect has-count indicator.
if accent_and_form_spec.count then
accent_spec.has_count = true
end
detect_adj_accent_and_form_spec(lemma, accent_and_form_spec)
else
-- Detect gender if not specified.
local g = accent_spec.gender
if not g then
if rfind(lemma, "[ая]́?$") then
g = "f"
elseif rfind(lemma, com.vowel_c .. "[^ ]*о́?ст$") then
-- If the lemma ends in -ост and there is a preceding vowel, then this is the feminine abstract noun suffix -ост
g = "f"
elseif rfind(lemma, "^%u.*и́?$") then
-- proper names like До́бри
g = "m"
elseif rfind(lemma, "[еиоую]́?$") then
g = "n"
else
g = "m"
end
accent_spec.gender = g
end
-- Detect accent if not specified.
if #accent_spec.accents == 0 then
local accent
if g == "f" and rfind(lemma, com.cons_c .. "$") then
accent = "d"
elseif accent_spec.reducible and rfind(lemma, "[ъе]́" .. com.cons_c .. "$") then
-- Reducible noun and accent on reducible vowel, e.g. чуждене́ц -> чужденци́
accent = "c"
elseif rfind(lemma, "[еоая]́$") then
accent = "c"
else
accent = "a"
end
table.insert(accent_spec.accents, accent)
end
-- Detect soft-sign indicator.
if g == "m" and not accent_spec.no_soft_sign and (
rfind(lemma, "й$") or rfind(lemma, com.vowel_c .. AC .. "?тел$") or rfind(lemma, com.vowel_c .. AC .. "?" .. com.cons_c .. "+а́?р$")
) then
accent_spec.soft_sign = true
end
-- Detect plural if not specified.
if #accent_spec.plurals == 0 then
local plural
if g == "f" then
plural = "и"
elseif g == "m" then
if rfind(lemma, "^%u") then
if rfind(lemma, "[ияй]́?$") then
-- До́бри, Или́я, Благо́й
plural = "евци"
elseif rfind(lemma, "[ое]́?в$") then
-- Ива́нов/Ивано́в, Пе́нчев
plural = {"и", "ци"}
else
-- Пе́тър, Ива́н, Кру́м, Нико́ла
plural = "овци"
end
elseif rfind(lemma, "о́?$") then
-- дя́до, гле́зльо
plural = "овци"
elseif rfind(lemma, "е́?$") then
-- аташе́
plural = "ета"
elseif not com.is_monosyllabic(lemma) then
-- ези́к, друга́р, геро́й, etc.; баща́, коле́га
plural = "и"
elseif rfind(lemma, "й$") then
-- край, брой
plural = "еве"
elseif accent_spec.soft_sign then
-- кон, зет, цар
plural = "ьове"
else
plural = "ове"
end
elseif rfind(lemma, "о́?$") or rfind(lemma, "[щц]е́?$") then
plural = "а"
elseif rfind(lemma, "и́?е$") then
plural = "я"
elseif rfind(lemma, "ане$") then
-- ди́шане, схва́щане, пъту́ване, присти́гане, etc.
plural = "ия"
elseif rfind(lemma, "е́?$") then
plural = "ета"
else
plural = "та"
end
if type(plural) == "table" then
for _, p in ipairs(plural) do
table.insert(accent_spec.plurals, {plural=p})
end
else
table.insert(accent_spec.plurals, {plural=plural})
end
end
-- Detect has-vocative indicator.
if accent_and_form_spec.voc then
-- If explicit override for vocative, we have a vocative regardless.
accent_spec.has_vocative = true
elseif accent_spec.gender == "n" then
-- Otherwise if neuter, no vocative even if (v) or (h) is used.
accent_spec.has_vocative = false
elseif accent_spec.gender == "f" and rfind(lemma, com.cons_c .. "$") then
-- Otherwise if feminine and ending in a consonant, no vocative even if (v) or (h) is used.
accent_spec.has_vocative = false
elseif accent_spec.reducible_vocative or accent_spec.human then
-- Otherwise, respect (v*) and (h). Note that (v) already sets has_vocative = true.
accent_spec.has_vocative = true
end
-- Detect reducible indicators.
if g == "m" and rfind(lemma, com.vowel_c .. AC .. "?зъм$") then
accent_spec.reducible = true
accent_spec.reducible_definite = true
if accent_spec.has_vocative then
accent_spec.reducible_vocative = true
end
end
-- Detect no-def-sg indicator.
if rfind(lemma, "^%u") and not accent_and_form_spec.def then
accent_and_form_spec["-def"] = true
end
-- Detect no-count indicator.
if accent_spec.human and not accent_and_form_spec.count then
accent_and_form_spec["-count"] = true
end
-- Detect has-count indicator.
-- (1) Yes if an explicit count override is given.
accent_spec.has_count = accent_and_form_spec.count or (
-- Otherwise:
-- (2) No if -count is explicitly given.
not accent_and_form_spec["-count"] and
-- (3) Only masculine nouns ending in a consonant normally have a count form.
accent_spec.gender == "m" and
rfind(lemma, com.cons_c .. "$")
)
end
end
-- Call detect_adj_accent_and_form_spec() on all accent-and-form specs in ALTERNANT_MULTIWORD_SPEC.
local function detect_all_adj_accent_and_form_specs(alternant_multiword_spec)
map_word_specs(alternant_multiword_spec, function(word_spec)
for _, accent_and_form_spec in ipairs(word_spec.accent_and_form_specs) do
detect_adj_accent_and_form_spec(word_spec.lemma, accent_and_form_spec)
end
end)
end
-- Call detect_noun_accent_and_form_spec() on all accent-and-form specs in ALTERNANT_MULTIWORD_SPEC.
local function detect_all_noun_accent_and_form_specs(alternant_multiword_spec)
map_word_specs(alternant_multiword_spec, function(word_spec)
for _, accent_and_form_spec in ipairs(word_spec.accent_and_form_specs) do
detect_noun_accent_and_form_spec(word_spec.lemma, accent_and_form_spec)
end
end)
end
local function init_active_adj_slots()
local active_slots = {}
return active_slots
end
local function set_active_adj_slots(active_slots, accent_and_form_spec)
if accent_and_form_spec.koj then
active_slots.nom_m_sg = true
active_slots.acc_m_sg = true
active_slots.dat_m_sg = true
active_slots.f_sg = true
active_slots.n_sg = true
active_slots.pl = true
elseif accent_and_form_spec.chij then
active_slots.m_sg = true
active_slots.f_sg = true
active_slots.n_sg = true
active_slots.pl = true
elseif accent_and_form_spec.dva then
active_slots.ind_m_pl = true
active_slots.def_m_pl = true
active_slots.ind_fn_pl = true
active_slots.def_fn_pl = true
else
active_slots.ind_m_sg = true
active_slots.def_sub_m_sg = true
active_slots.def_obj_m_sg = true
active_slots.ind_f_sg = true
active_slots.def_f_sg = true
active_slots.ind_n_sg = true
active_slots.def_n_sg = true
active_slots.ind_pl = true
active_slots.def_pl = true
if not accent_and_form_spec.accent_spec.nocomp then
active_slots.comp = true
end
end
if accent_and_form_spec["+voc"] then
active_slots.add_voc = true
end
if accent_and_form_spec.short then
active_slots.short = true
end
end
-- Determine overall active adjective slots.
local function compute_overall_active_adj_slots(alternant_multiword_spec)
local active_slots = init_active_adj_slots()
map_word_specs(alternant_multiword_spec, function(word_spec)
for _, accent_and_form_spec in ipairs(word_spec.accent_and_form_specs) do
set_active_adj_slots(active_slots, accent_and_form_spec)
end
end)
if active_slots.add_voc then
active_slots.voc_m_sg = true
end
return active_slots
end
local function init_active_noun_slots()
local active_slots = {}
-- Set the always-active slots.
active_slots.ind_sg = true
return active_slots
end
local function set_active_noun_slots(active_slots, accent_and_form_spec)
-- NOTE: We currently treat singular and plural as always active, and
-- separately calculate the overall number, which is passed into places
-- like make_noun_table() to determine which slots to actually use.
-- The calculations to determine whether there's a vocative and/or a count
-- form were done in detect_noun_accent_and_form_spec().
if accent_and_form_spec.accent_spec.has_vocative then
active_slots.voc_sg = true
active_slots.voc_pl = true
end
if accent_and_form_spec.accent_spec.has_count then
active_slots.count = true
end
for _, case in ipairs(extra_noun_cases) do
-- Adjectival noun overrides currently use acc_sg, gen_sg, dat_sg,
-- while regular noun overrides just use acc, gen, dat.
if accent_and_form_spec[case] or accent_and_form_spec[case .. "_sg"] then
active_slots[case .. "_sg"] = true
end
if accent_and_form_spec[case .. "_pl"] then
active_slots[case .. "_pl"] = true
end
end
if accent_and_form_spec["-def"] then
active_slots.no_def = true
end
if accent_and_form_spec["-pl"] then
active_slots.no_pl = true
end
if accent_and_form_spec["-def_pl"] then
active_slots.no_def_pl = true
end
if accent_and_form_spec.n then
if not active_slots.n then
active_slots.n = accent_and_form_spec.n
elseif active_slots.n ~= accent_and_form_spec.n then
active_slots.n = "both"
end
end
end
local function convert_active_noun_slots_to_active_adj_slots(active_noun_slots)
local active_adj_slots = init_active_adj_slots()
if active_noun_slots.voc_sg then
active_adj_slots.voc_m_sg = true
end
return active_adj_slots
end
-- Determine overall active noun slots.
local function compute_overall_active_noun_slots(alternant_multiword_spec)
local active_slots = init_active_noun_slots()
map_word_specs(alternant_multiword_spec, function(word_spec)
for _, accent_and_form_spec in ipairs(word_spec.accent_and_form_specs) do
set_active_noun_slots(active_slots, accent_and_form_spec)
end
end)
if not active_slots.no_def then
active_slots.def_sub_sg = true
active_slots.def_obj_sg = true
end
if not active_slots.no_pl then
active_slots.ind_pl = true
if not active_slots.no_def_pl then
active_slots.def_pl = true
end
end
return active_slots
end
-- Construct the plural of the lemma specified in WORD_SPEC, given the accent spec
-- (as returned by parse_noun_accent_spec()), the plural ending (e.g. "ове"), and the accent indicator
-- (e.g. "a" or "d"). Return value is a string. This handles accenting the plural ending as necessary,
-- fetching the reduced stem if appropriate, removing final -ин if called for, and applying the
-- second palatalization if appropriate (e.g. ези́к -> ези́ци).
local function generate_noun_plural(word_spec, accent_spec, plural, accent)
local ending = plural.plural
if accent == "b" or accent == "c" then
if accent == "b" and (ending == "ове" or ending == "ьове" or ending == "йове" or ending == "еве") or
ending == "еса" or ending == "ена" then
ending = ending .. AC
else
-- for any other plurals, put the stress on the first vowel if a stress isn't already present
ending = com.maybe_stress_initial_syllable(ending)
end
end
local stem = accent_spec.reducible and word_spec.reduced_stem or word_spec.stem
if accent_spec.remove_in then
local new_stem, removed = rsubb(stem, "и́?н$", "")
if not removed then
error("(ин) specified but stem '" .. stem .. "' doesn't end in -ин")
end
stem = com.maybe_stress_final_syllable(new_stem)
end
if not plural.double_plus and not rfind(word_spec.lemma, "нг$") and (
-- ези́к -> ези́ци
rfind(ending, "^и́?$") and rfind(word_spec.lemma, "[кгх]$") or
-- ръка́ -> ръце́
rfind(ending, "^е́?$") and rfind(word_spec.lemma, "[кгх]а́?$")
) then
local initial, last_cons = rmatch(stem, "^(.*)([кгх])$")
if initial then
return combine_stem_and_ending(initial .. com.second_palatalization[last_cons], ending, accent_spec)
end
end
return combine_stem_and_ending(stem, ending, accent_spec)
end
-- Construct the definite singular of the lemma specified in WORD_SPEC, given the accent spec
-- (as returned by parse_noun_accent_spec()) and the accent indicator (e.g. "a" or "d").
-- Return value is a string. This handles determining the appropriate ending (handling the
-- soft sign spec (ь) as needed), accenting the ending as necessary, and fetching the
-- reduced stem if appropriate.
local function generate_noun_definite_singular(word_spec, accent_spec, accent)
local function stressed_ending()
return accent == "b" or accent == "d"
end
if accent_spec.gender == "m" then
if rfind(word_spec.lemma, "[ая]́?$") then
return word_spec.lemma .. "та"
elseif rfind(word_spec.lemma, "[ео]́?$") then
return word_spec.lemma .. "то"
else
local ending
if accent_spec.soft_sign then
ending = stressed_ending() and "я́т" or "ят"
elseif stressed_ending() then
ending = "ъ́т"
else
ending = "ът"
end
local stem = accent_spec.reducible_definite and word_spec.reduced_stem or word_spec.stem
return combine_stem_and_ending(stem, ending, accent_spec)
end
elseif accent_spec.gender == "f" then
return combine_stem_and_ending(word_spec.lemma, stressed_ending() and "та́" or "та", accent_spec)
else
return combine_stem_and_ending(word_spec.lemma, "то", accent_spec)
end
end
-- Construct the definite objective singular given the definite subjective singular form.
local function generate_noun_definite_objective_singular(def_sg)
local stem, ending = rmatch(def_sg, "^(.*)(ъ́?т)$")
if stem then
return stem .. (ending == "ъ́т" and "а́" or "а")
end
stem = rmatch(def_sg, "^(.*я́?)т$")
if stem then
return stem
end
if rfind(def_sg, "т[ао]́?$") then
return def_sg
end
error("Unrecognized ending for definite subjective singular: '" .. def_sg .. "'")
end
-- Construct the definite plural given the indefinite plural form.
local function generate_noun_definite_plural(plural_form)
if rfind(plural_form, "[еи]́?$") then
return plural_form .. "те"
else
return plural_form .. "та"
end
end
-- Construct the count form of the lemma specified in WORD_SPEC, given the accent spec
-- (as returned by parse_noun_accent_spec()). Return value is a string, or nil if no count
-- form can be constructed (not a masculine lemma ending in a consonant). This handles
-- determining the appropriate ending (handling the soft sign spec (ь) as needed) and
-- fetching the reduced stem if appropriate.
local function generate_noun_count_form(word_spec, accent_spec)
if accent_spec.gender ~= "m" or not rfind(word_spec.lemma, com.cons_c .. "$") then
return nil
end
local stem = accent_spec.reducible_count and word_spec.reduced_stem or word_spec.stem
if accent_spec.soft_sign then
return combine_stem_and_ending(stem, "я", accent_spec)
else
return combine_stem_and_ending(stem, "а", accent_spec)
end
end
-- Construct the vocative of the lemma specified in WORD_SPEC, given the accent spec
-- (as returned by parse_noun_accent_spec()). Return value is a string, or nil if no vocative
-- form can be constructed. This applies the rules described in [[w:Bulgarian nouns]].
local function generate_noun_vocative(word_spec, accent_spec)
if accent_spec.gender == "n" or not accent_spec.has_vocative then
return nil
end
local lemma = word_spec.lemma
if accent_spec.gender == "f" and rfind(lemma, com.cons_c .. "$") then
return nil
end
local stem = accent_spec.reducible_vocative and word_spec.reduced_stem or word_spec.stem
local ending
if accent_spec.soft_sign then
ending = "ю"
elseif rfind(lemma, com.vowel_c .. AC .. "?я́?$") then
ending = "йо"
elseif rfind(lemma, "я́?$") then
ending = "ьо"
elseif rfind(lemma, "ца́?$") or rfind(lemma, "[рч]ка́?$") or rfind(lemma, "^%u.*ка́?$") then
ending = "е"
elseif rfind(lemma, "а́?$") or rfind(lemma, "[кчцх]$") or rfind(lemma, "и́?н$") then
ending = "о"
elseif rfind(lemma, "[гз]$") then
return combine_stem_and_ending(rsub(stem, "[гз]$", "ж"), "е", accent_spec)
else
ending = "е"
end
return combine_stem_and_ending(stem, ending, accent_spec)
end
-- Construct the indefinite adjective forms.
local function generate_indefinite_adj_forms(formtable, accent_spec, accent, active_slots)
local stem = accent_spec.stem
local accent = accent == "b" and AC or ""
iut.insert_form(formtable, "ind_f_sg",
{form=combine_stem_and_ending(stem, (accent_spec.soft_sign and "я" or "а") .. accent, accent_spec, "is adj")})
if accent_spec.ch then
iut.insert_form(formtable, "ind_n_sg",
{form=combine_stem_and_ending(stem, "е" .. accent, accent_spec, "is adj")})
iut.insert_form(formtable, "ind_n_sg",
{form=combine_stem_and_ending(stem, "о" .. accent, accent_spec, "is adj")})
else
iut.insert_form(formtable, "ind_n_sg",
{form=combine_stem_and_ending(stem,
((accent_spec.che or accent_spec.soft_sign_i) and "е" or accent_spec.soft_sign and "ьо" or "о") .. accent,
accent_spec, "is adj")})
end
local ind_pl = combine_stem_and_ending(stem, "и" .. accent, accent_spec, "is adj")
iut.insert_form(formtable, "ind_pl", {form=ind_pl})
if active_slots.voc_m_sg then
iut.insert_form(formtable, "voc_m_sg", {form=ind_pl})
iut.insert_form(formtable, "voc_m_sg", {form=ind_pl .. "й", footnotes={"[a]"}})
end
end
-- Construct the definite adjective forms based on the indefinite ones.
local function generate_definite_adj_forms(formtable, include_definite)
if include_definite then
iut.insert_forms(formtable, "def_sub_m_sg", iut.map_forms(formtable["ind_pl"],
function(form) return form .. "ят" end))
iut.insert_forms(formtable, "def_obj_m_sg", iut.map_forms(formtable["ind_pl"],
function(form) return form .. "я" end))
iut.insert_forms(formtable, "def_f_sg", iut.map_forms(formtable["ind_f_sg"],
function(form) return form .. "та" end))
iut.insert_forms(formtable, "def_n_sg", iut.map_forms(formtable["ind_n_sg"],
function(form) return form .. "то" end))
iut.insert_forms(formtable, "def_pl", iut.map_forms(formtable["ind_pl"],
function(form) return form .. "те" end))
else
iut.insert_forms(formtable, "def_sub_m_sg", formtable["ind_m_sg"])
iut.insert_forms(formtable, "def_obj_m_sg", formtable["ind_m_sg"])
iut.insert_forms(formtable, "def_f_sg", formtable["ind_f_sg"])
iut.insert_forms(formtable, "def_n_sg", formtable["ind_n_sg"])
iut.insert_forms(formtable, "def_pl", formtable["ind_pl"])
end
end
-- Handle a list of overriding forms (e.g. the forms specified by "/pl:мо́мце:момци́[a][collective]").
-- FORMS is the list of default forms generated according to the accent spec, and OVERRIDING_FORMS
-- is the list of overriding forms. Both of them are lists of objects of the form
-- {form=FORM, footnotes=FOOTNOTES}. Return the same sort of list. If there are no overriding
-- forms (OVERRIDING_FORMS is nil), the list in FORMS will be returned directly; otherwise a new
-- list of forms will be constructed from OVERRIDING_FORMS. If an element of OVERRIDING_FORMS has
-- the value "+", the forms in FORMS are inserted in its place. LEMMA and STEM are used in handling
-- forms in OVERRIDING_FORMS containing ~ or ~~ in them, replaced respectively lemma and stem.
-- FORMS may be a string such as "dat" or "gen", specifying the name of the overriding form. This
-- indicates that there are no default forms for this slot, and any use of "+" in OVERRIDING_FORMS
-- will cause an error (where the string is inserted into the error message).
local function handle_overriding_forms(lemma, stem, forms, overriding_forms)
if not overriding_forms then
if type(forms) == "table" then
return forms
else
return nil
end
else
local retforms = {}
for _, overriding_spec in ipairs(overriding_forms) do
local form = overriding_spec.value
if form == "+" then
if type(forms) == "string" then
error("'/" .. forms .. "+' not supported, no default value")
end
for _, f in ipairs(forms) do
iut.insert_form_into_list(retforms, {form=f.form, footnotes=overriding_spec.footnotes})
end
else
form = rsub(form, "~~", stem)
form = rsub(form, "~", lemma)
iut.insert_form_into_list(retforms, {form=form, footnotes=overriding_spec.footnotes})
end
end
return retforms
end
end
-- Decline a single adjective term in WORD_SPEC (an object as returned by parse_simplified_specification())
-- corresponding to the accent-and-form spec in `accent_and_form_spec` (see parse_noun_accent_and_form_specs()).
-- This sets the form values in `WORD_SPEC.forms` (and `WORD_SPEC.compforms` and `WORD_SPEC.supforms`
-- if the adjective has comparative forms) for all slots. (If a given slot has no values,
-- it will not be present in `WORD_SPEC.forms`.) If `as_noun` is true, we're declining an adjectival noun
-- rather than an adjective as such.
local function decline_one_adj(word_spec, accent_and_form_spec, active_slots, active_noun_slots, include_definite)
local accent_spec = accent_and_form_spec.accent_spec
local lemma = word_spec.lemma
local stem = accent_spec.stem
local formtable = {[
accent_and_form_spec.dva and "ind_m_pl" or
accent_and_form_spec.koj and "nom_m_sg" or
accent_and_form_spec.chij and "m_sg" or
"ind_m_sg"
] = {{form=lemma}}}
for _, accent in ipairs(accent_spec.accents) do
generate_indefinite_adj_forms(formtable, accent_spec, accent, active_slots)
end
generate_definite_adj_forms(formtable, include_definite)
if active_noun_slots then
local noun_formtable = {}
local function copy_forms(forms_to_copy)
for from_form, to_forms in pairs(forms_to_copy) do
if type(to_forms) ~= "table" then
to_forms = {to_forms}
end
for _, to_form in ipairs(to_forms) do
if active_noun_slots[to_form] then
iut.insert_forms(noun_formtable, to_form, formtable[from_form])
end
end
end
end
if active_noun_slots.n ~= "pl" then
local forms_to_copy =
accent_spec.gender == "m" and masc_adj_to_noun_slots or
accent_spec.gender == "f" and fem_adj_to_noun_slots or
neut_adj_to_noun_slots
copy_forms(forms_to_copy)
end
if active_noun_slots.n ~= "sg" then
copy_forms(pl_adj_to_noun_slots)
end
for slot, _ in pairs(noun_slots) do
iut.insert_forms(word_spec.forms, slot, handle_overriding_forms(lemma, stem, noun_formtable[slot],
accent_and_form_spec[slot]))
end
else
for slot, _ in pairs(adj_slots) do
local forms = handle_overriding_forms(lemma, stem, formtable[slot], accent_and_form_spec[slot])
iut.insert_forms(word_spec.forms, slot, forms)
if active_slots.comp and not accent_spec.nocomp then
if not word_spec.compforms then
word_spec.compforms = {}
end
iut.insert_forms(word_spec.compforms, slot,
iut.map_forms(forms, function(form) return "по́-" .. form end))
if not word_spec.supforms then
word_spec.supforms = {}
end
iut.insert_forms(word_spec.supforms, slot,
iut.map_forms(forms, function(form) return "на́й-" .. form end))
end
end
end
end
-- Decline the adjective in WORD_SPEC (an object as returned by parse_simplified_specification()).
-- This sets the form values in `WORD_SPEC.forms` (and `WORD_SPEC.compforms` and `WORD_SPEC.supforms`
-- if the adjective has comparative forms) for all slots. (If a given slot has no values,
-- it will not be present in `WORD_SPEC.forms`.)
local function decline_adj(word_spec, active_slots, include_definite)
for _, accent_and_form_spec in ipairs(word_spec.accent_and_form_specs) do
decline_one_adj(word_spec, accent_and_form_spec, active_slots, nil, include_definite)
end
end
-- Decline a single noun term in WORD_SPEC (an object as returned by parse_simplified_specification())
-- corresponding to the accent-and-form spec in `accent_and_form_spec` (see parse_noun_accent_and_form_specs()).
-- This sets the form values in `WORD_SPEC.forms` for all slots. (If a given slot has no values,
-- it will not be present in `WORD_SPEC.forms`.)
local function decline_one_noun(word_spec, accent_and_form_spec, active_slots, include_definite)
local lemma = word_spec.lemma
local stem = word_spec.stem
if active_slots.n == "pl" then
for _, overriding_form in ipairs(noun_overriding_forms) do
if not overriding_form:find("_pl$") and accent_and_form_spec[overriding_form] then
error("'/" .. overriding_form .. ":' not allowed for plurale tantum")
end
end
-- Maybe set indefinite plural.
local indefinite_plurals = {{form=lemma}}
if active_slots.ind_pl then
iut.insert_forms(word_spec.forms, "ind_pl",
handle_overriding_forms(lemma, stem, indefinite_plurals, accent_and_form_spec.ind_pl))
end
-- Maybe set definite plural.
if active_slots.def_pl then
iut.insert_forms(word_spec.forms, "def_pl",
handle_overriding_forms(lemma, stem,
include_definite and iut.map_forms(indefinite_plurals, generate_noun_definite_plural) or indefinite_plurals,
accent_and_form_spec.def_pl))
end
-- Maybe set "extra cases".
for _, case in ipairs(extra_noun_cases) do
local pl_slot = case .. "_pl"
if active_slots[pl_slot] then
iut.insert_forms(word_spec.forms, pl_slot, handle_overriding_forms(lemma, stem, indefinite_plurals, accent_and_form_spec[pl_slot]))
end
end
else
local accent_spec = accent_and_form_spec.accent_spec
-- Always generate indefinite singulars since may be needed for the "extra cases" below.
local indefinite_singulars = {{form = lemma}}
-- Always generate indefinite plurals since may be needed for the "extra cases" below.
local indefinite_plurals = {}
for _, plspec in ipairs(accent_spec.plurals) do
for _, accent in ipairs(accent_spec.accents) do
iut.insert_form_into_list(indefinite_plurals,
{form=generate_noun_plural(word_spec, accent_spec, plspec, accent), footnotes=plspec.footnotes}
)
end
end
indefinite_plurals = handle_overriding_forms(lemma, stem, indefinite_plurals, accent_and_form_spec.pl)
-- Maybe set indefinite singular.
if active_slots.ind_sg then
iut.insert_forms(word_spec.forms, "ind_sg",
handle_overriding_forms(lemma, stem, indefinite_singulars, accent_and_form_spec.ind))
end
-- Maybe set definite singular.
if active_slots.def_sub_sg or active_slots.def_obj_sg then
local definite_singulars
if include_definite then
definite_singulars = {}
for _, accent in ipairs(accent_spec.accents) do
iut.insert_form_into_list(definite_singulars,
{form=generate_noun_definite_singular(word_spec, accent_spec, accent)}
)
end
else
definite_singulars = indefinite_singulars
end
definite_singulars = handle_overriding_forms(lemma, stem, definite_singulars, accent_and_form_spec.def)
if active_slots.def_sub_sg then
iut.insert_forms(word_spec.forms, "def_sub_sg",
handle_overriding_forms(lemma, stem, definite_singulars, accent_and_form_spec.def_sub))
end
if active_slots.def_obj_sg then
iut.insert_forms(word_spec.forms, "def_obj_sg",
handle_overriding_forms(lemma, stem,
include_definite and iut.map_forms(definite_singulars, generate_noun_definite_objective_singular) or
definite_singulars,
accent_and_form_spec.def_obj))
end
end
-- Maybe set indefinite plural.
if active_slots.ind_pl then
iut.insert_forms(word_spec.forms, "ind_pl",
handle_overriding_forms(lemma, stem, indefinite_plurals, accent_and_form_spec.ind_pl))
end
-- Maybe set definite plural.
if active_slots.def_pl then
iut.insert_forms(word_spec.forms, "def_pl",
handle_overriding_forms(lemma, stem,
include_definite and iut.map_forms(indefinite_plurals, generate_noun_definite_plural) or
indefinite_plurals,
accent_and_form_spec.def_pl))
end
-- Maybe set count.
if active_slots.count then
local count_forms = {}
iut.insert_form_into_list(count_forms, {form=generate_noun_count_form(word_spec, accent_spec)})
iut.insert_forms(word_spec.forms, "count", handle_overriding_forms(lemma, stem, count_forms, accent_and_form_spec.count))
end
-- Maybe set vocative singular.
if active_slots.voc_sg then
local vocatives = {}
iut.insert_form_into_list(vocatives, {form=generate_noun_vocative(word_spec, accent_spec)})
iut.insert_forms(word_spec.forms, "voc_sg", handle_overriding_forms(lemma, stem, vocatives, accent_and_form_spec.voc))
end
-- Maybe set vocative plural.
if active_slots.voc_pl then
iut.insert_forms(word_spec.forms, "voc_pl", handle_overriding_forms(lemma, stem, indefinite_plurals, accent_and_form_spec.voc_pl))
end
-- Maybe set "extra cases".
for _, case in ipairs(extra_noun_cases) do
local sg_slot = case .. "_sg"
if active_slots[sg_slot] then
iut.insert_forms(word_spec.forms, sg_slot, handle_overriding_forms(lemma, stem, indefinite_singulars, accent_and_form_spec[case]))
end
local pl_slot = case .. "_pl"
if active_slots[pl_slot] then
iut.insert_forms(word_spec.forms, pl_slot, handle_overriding_forms(lemma, stem, indefinite_plurals, accent_and_form_spec[pl_slot]))
end
end
end
end
-- Decline the noun in WORD_SPEC (an object as returned by parse_simplified_specification()).
-- This sets the form values in `WORD_SPEC.forms` for all slots. (If a given slot has no values,
-- it will not be present in `WORD_SPEC.forms`.)
local function decline_noun(word_spec, active_slots, include_definite)
for _, accent_and_form_spec in ipairs(word_spec.accent_and_form_specs) do
if accent_and_form_spec.accent_spec.is_adj then
local active_adj_slots = convert_active_noun_slots_to_active_adj_slots(active_slots)
decline_one_adj(word_spec, accent_and_form_spec, active_adj_slots, active_slots, include_definite)
else
decline_one_noun(word_spec, accent_and_form_spec, active_slots, include_definite)
end
end
end
local decline_multiword_or_alternant_multiword_spec
-- Decline the noun or adjective alternants in ALTERNANT_SPEC (an object as returned by
-- parse_simplified_specification_allowing_alternants()). This sets the form values
-- in `ALTERNANT_SPEC.forms` for all slots. (If a given slot has no values, it will
-- not be present in `ALTERNANT_SPEC.forms`). It also sets `ALTERNANT_SPEC.forms.lemma`,
-- which is a list of strings to use as lemmas (e.g. in the title of the generated table
-- and in accelerators).
local function decline_alternants(alternant_spec, active_slots, is_adj, include_definite)
alternant_spec.forms = {}
if active_slots.comp then
alternant_spec.compforms = {}
alternant_spec.supforms = {}
end
local include_definite_at_end = include_definite
for _, multiword_spec in ipairs(alternant_spec.alternants) do
include_definite_at_end = decline_multiword_or_alternant_multiword_spec(
multiword_spec, active_slots, is_adj, include_definite)
for slot, _ in pairs(active_slots) do
iut.insert_forms(alternant_spec.forms, slot, multiword_spec.forms[slot])
if is_adj and active_slots.comp then
iut.insert_forms(alternant_spec.compforms, slot, multiword_spec.compforms[slot])
iut.insert_forms(alternant_spec.supforms, slot, multiword_spec.supforms[slot])
end
end
end
return include_definite_at_end
end
local function append_forms(formtable, slot, forms, before_text)
local old_forms = formtable[slot]
if #forms == 1 then
-- If there's only one new form, destructively modify the existing
-- forms and notes for this new form and its footnotes.
local form = forms[1]
for _, old_form in ipairs(old_forms) do
old_form.form = old_form.form .. before_text .. form.form
if form.footnotes and #form.footnotes > 0 then
if not old_form.footnotes then
old_form.footnotes = {}
end
for _, footnote in ipairs(form.footnotes) do
m_table.insertIfNot(old_form.footnotes, footnote)
end
end
end
else
-- If there are multiple new forms, we need to loop over all
-- combinations of new and old forms. In that case, use a new table
-- for the combined forms.
local ret_forms = {}
for _, old_form in ipairs(old_forms) do
for _, form in ipairs(forms) do
-- Do a shallow copy of the footnotes because we may modify them in-place.
local new_form = {form=old_form.form .. before_text .. form.form,
footnotes=m_table.shallowCopy(old_form.footnotes)}
if form.footnotes and #form.footnotes > 0 then
if not new_form.footnotes then
new_form.footnotes = {}
end
for _, footnote in ipairs(form.footnotes) do
m_table.insertIfNot(new_form.footnotes, footnote)
end
end
table.insert(ret_forms, new_form)
end
end
formtable[slot] = ret_forms
end
end
decline_multiword_or_alternant_multiword_spec = function(multiword_spec, active_slots, is_adj, include_definite)
multiword_spec.forms = {}
if active_slots.comp then
multiword_spec.compforms = {}
multiword_spec.supforms = {}
end
for slot, _ in pairs(active_slots) do
multiword_spec.forms[slot] = {{form=""}}
if active_slots.comp then
multiword_spec.compforms[slot] = {{form=""}}
multiword_spec.supforms[slot] = {{form=""}}
end
end
local is_alternant_multiword = not not multiword_spec.alternant_or_word_specs
for _, word_spec in ipairs(is_alternant_multiword and multiword_spec.alternant_or_word_specs or multiword_spec.word_specs) do
if word_spec.alternants then
include_definite = decline_alternants(word_spec, active_slots, is_adj, include_definite)
elseif is_adj then
decline_adj(word_spec, active_slots, include_definite)
include_definite = false
else
decline_noun(word_spec, active_slots, include_definite)
include_definite = not word_spec.accent_and_form_specs[1].accent_spec.is_adj
end
for slot, _ in pairs(active_slots) do
if word_spec.forms[slot] then
append_forms(multiword_spec.forms, slot, word_spec.forms[slot], word_spec.before_text)
end
if word_spec.compforms and word_spec.compforms[slot] then
append_forms(multiword_spec.compforms, slot, word_spec.compforms[slot], word_spec.before_text)
end
if word_spec.supforms and word_spec.supforms[slot] then
append_forms(multiword_spec.supforms, slot, word_spec.supforms[slot], word_spec.before_text)
end
end
end
if multiword_spec.post_text ~= "" then
local pseudoform = {{form=""}}
for slot, _ in pairs(active_slots) do
append_forms(multiword_spec.forms, slot, pseudoform, multiword_spec.post_text)
if active_slots.comp then
append_forms(multiword_spec.compforms, slot, pseudoform, multiword_spec.post_text)
append_forms(multiword_spec.supforms, slot, pseudoform, multiword_spec.post_text)
end
end
end
if is_alternant_multiword then
multiword_spec.n = active_slots.n
local lemma_slot =
multiword_spec.forms.ind_m_pl and "ind_m_pl" or -- два
multiword_spec.forms.nom_m_sg and "nom_m_sg" or -- кой, то́зи, etc.
multiword_spec.forms.m_sg and "m_sg" or -- чий, какъ́в, такъ́в, etc.
is_adj and "ind_m_sg" or
multiword_spec.n == "pl" and "ind_pl" or
"ind_sg"
multiword_spec.forms.lemma = {}
for _, form in ipairs(multiword_spec.forms[lemma_slot]) do
m_table.insertIfNot(multiword_spec.forms.lemma, form.form)
end
end
return include_definite
end
-- Convert `ALTERNANT_MULTIWORD_SPEC.forms[SLOT]` (for ALTERNANT_MULTIWORD_SPEC as returned by
-- parse_simplified_specification_allowing_alternants()) for all slots into displayable text.
-- This also sets ALTERNANT_MULTIWORD_SPEC.combined_def_sg to true if the definite subjective and
-- objective singular forms are the same (and hence should be combined in the generated table),
-- and sets ALTERNANT_MULTIWORD_SPEC.forms.footnote to the combined string to insert as a footnote
-- (if there are no footnotes, it will be the empty string).
local function show_forms(alternant_multiword_spec, is_adj)
local lemmas = {}
for _, lemma in ipairs(alternant_multiword_spec.forms.lemma) do
table.insert(lemmas, com.remove_monosyllabic_stress(lemma))
end
local accel_lemma = lemmas[1]
alternant_multiword_spec.forms.lemma = table.concat(lemmas, ", ")
local function get_slot_to_accel_form(combined_def_sg)
return function(slot)
local accel_form = is_adj and adj_slots[slot] or noun_slots[slot]
-- HACK!
if combined_def_sg and slot == "def_sub_sg" then
accel_form = "def|s"
end
return accel_form
end
end
local footnote_obj = com.init_footnote_obj()
if is_adj then
local slot_to_accel_form = get_slot_to_accel_form(false)
com.display_forms(footnote_obj, alternant_multiword_spec.forms, alternant_multiword_spec.forms,
adj_slots, false, accel_lemma, slot_to_accel_form)
if alternant_multiword_spec.compforms then
com.display_forms(footnote_obj, alternant_multiword_spec.compforms, alternant_multiword_spec.compforms,
adj_slots, false, accel_lemma, slot_to_accel_form)
end
if alternant_multiword_spec.supforms then
com.display_forms(footnote_obj, alternant_multiword_spec.supforms, alternant_multiword_spec.supforms,
adj_slots, false, accel_lemma, slot_to_accel_form)
end
else
-- For def_sub_sg and def_obj_sg, first compute "raw" (unlinked) forms so we can
-- compare them properly; linked forms have accelerator info in them which differs
-- between sub and obj.
local raw_forms = {}
com.display_forms(footnote_obj, alternant_multiword_spec.forms, raw_forms, {"def_sub_sg", "def_obj_sg"},
"is list", accel_lemma, get_slot_to_accel_form(true), "raw")
-- Then generate the linked forms, using a special accelerator form if the def_sub_sg and def_obj_sg are the same.
alternant_multiword_spec.combined_def_sg = raw_forms.def_sub_sg == raw_forms.def_obj_sg
com.display_forms(footnote_obj, alternant_multiword_spec.forms, alternant_multiword_spec.forms, noun_slots,
false, accel_lemma, get_slot_to_accel_form(alternant_multiword_spec.combined_def_sg))
end
if alternant_multiword_spec.footnote then
table.insert(footnote_obj.notes, alternant_multiword_spec.footnote)
end
alternant_multiword_spec.forms.footnote = table.concat(footnote_obj.notes, "<br />")
end
-- Generate the displayable table of all noun forms, given ALTERNANT_MULTIWORD_SPEC (as returned
-- by parse_alternant_multiword_spec()) where show_forms() has already been called to convert
-- `ALTERNANT_MULTIWORD_SPEC.forms` into a table of strings.
local function make_noun_table(alternant_multiword_spec)
local num = alternant_multiword_spec.n
local forms = alternant_multiword_spec.forms
local table_begin = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = alternant_multiword_spec.title or "မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု " .. forms.lemma,
palette = 'blue',
tall = 'yes',
class = 'tr-alongside', -- hack to avoid double <br> - can't tell where this is coming from
}
}
local table_header = [=[
!
! ကိုန်ဨကဝုစ်
! ကိုန်ဗဟုဝစ်
|-
! ဟွံချိုတ်ပၠိုတ်
| {ind_sg}
| {ind_pl}
|-
]=]
local table_cont_def_split = [=[
! မချိုတ်ပၠိုတ်<br>(ဗီုပြၚ်ကတ္တာ)
| {def_sub_sg}
| rowspan="2" | {def_pl}
|-
! မချိုတ်ပၠိုတ်<br>(ဗီုပြၚ်အရာဝတ္ထု)
| {def_obj_sg}
]=]
local table_cont_def_combined = [=[
! မချိုတ်ပၠိုတ်
| {def_sub_sg}
| {def_pl}
]=]
local table_cont_count = [=[
|-
! ဗီုပြၚ်တော်ရိုဟ်
| —
| {count}
]=]
local table_cont_voc = [=[
|-
! ဗီုပြၚ်ပရေၚ်ဂယိုၚ်လမျီု
| {voc_sg}
| {voc_pl}
]=]
local table_cont_acc = [=[
|-
! ဗီုပြၚ်ကမ္မကာရက
| {acc_sg}
| {acc_pl}
]=]
local table_cont_gen = [=[
|-
! ဗီုပြၚ်ဗဳဇဂကူ
| {gen_sg}
| {gen_pl}
]=]
local table_cont_dat = [=[
|-
! ဗီုပြၚ်ပြကမ္မကာရက
| {dat_sg}
| {dat_pl}
]=]
local table_sg_header = [=[
!
! ကိုန်ဨကဝုစ်
|-
! ဟွံချိုတ်ပၠိုတ်
| {ind_sg}
|-
]=]
local table_sg_cont_def_split = [=[
! မချိုတ်ပၠိုတ်<br>(ဗီုပြၚ်ကတ္တာ)
| {def_sub_sg}
|-
! မချိုတ်ပၠိုတ်<br>(ဗီုပြၚ်အရာဝတ္ထု)
| {def_obj_sg}
]=]
local table_sg_cont_def_combined = [=[
! မချိုတ်ပၠိုတ်
| {def_sub_sg}
]=]
local table_sg_cont_voc = [=[
|-
! ဗီုပြၚ်ပရေၚ်ဂယိုၚ်လမျီု
| {voc_sg}
]=]
local table_sg_cont_acc = [=[
|-
! ဗီုပြၚ်ကမ္မကာရက
| {acc_sg}
]=]
local table_sg_cont_gen = [=[
|-
! ဗီုပြၚ်ဗဳဇဂကူ
| {gen_sg}
]=]
local table_sg_cont_dat = [=[
|-
! ဗီုပြၚ်ပြကမ္မကာရက
| {dat_sg}
]=]
local table_pl_header = [=[
!
! ကိုန်ဗဟုဝစ်
|-
! ဟွံချိုတ်ပၠိုတ်
| {ind_pl}
|-
! မချိုတ်ပၠိုတ်
| {def_pl}
]=]
local table_pl_cont_voc = [=[
|-
! ဗီုပြၚ်ပရေၚ်ဂယိုၚ်လမျီု
| {voc_pl}
]=]
local table_pl_cont_acc = [=[
|-
! ဗီုပြၚ်ကမ္မကာရက
| {acc_pl}
]=]
local table_pl_cont_gen = [=[
|-
! ဗီုပြၚ်ဗဳဇဂကူ
| {gen_pl}
]=]
local table_pl_cont_dat = [=[
|-
! ဗီုပြၚ်ပြကမ္မကာရက
| {dat_pl}
]=]
local table_end = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom',
args = {
notes = forms.footnote
}
}
local table_spec
if num == "sg" then
table_spec = table_begin .. table_sg_header ..
(alternant_multiword_spec.combined_def_sg and table_sg_cont_def_combined or table_sg_cont_def_split) ..
(forms.voc_sg ~= "—" and table_sg_cont_voc or "") ..
(forms.acc_sg ~= "—" and table_sg_cont_acc or "") ..
(forms.gen_sg ~= "—" and table_sg_cont_gen or "") ..
(forms.dat_sg ~= "—" and table_sg_cont_dat or "") ..
table_end
elseif num == "pl" then
table_spec = table_begin .. table_pl_header ..
(forms.voc_pl ~= "—" and table_pl_cont_voc or "") ..
(forms.acc_pl ~= "—" and table_pl_cont_acc or "") ..
(forms.gen_pl ~= "—" and table_pl_cont_gen or "") ..
(forms.dat_pl ~= "—" and table_pl_cont_dat or "") ..
table_end
else
table_spec = table_begin .. table_header ..
(alternant_multiword_spec.combined_def_sg and table_cont_def_combined or table_cont_def_split) ..
(forms.count ~= "—" and table_cont_count or "") ..
((forms.voc_sg ~= "—" or forms.voc_pl ~= "—") and table_cont_voc or "") ..
((forms.acc_sg ~= "—" or forms.acc_pl ~= "—") and table_cont_acc or "") ..
((forms.gen_sg ~= "—" or forms.gen_pl ~= "—") and table_cont_gen or "") ..
((forms.dat_sg ~= "—" or forms.dat_pl ~= "—") and table_cont_dat or "") ..
table_end
end
return m_string_utilities.format(table_spec, forms)
end
-- Generate the displayable table of all adjective forms, given ALTERNANT_MULTIWORD_SPEC (as returned
-- by parse_alternant_multiword_spec()) where show_forms() has already been called to convert
-- `ALTERNANT_MULTIWORD_SPEC.forms` into a table of strings.
local function make_adj_table(alternant_multiword_spec)
local forms = alternant_multiword_spec.forms
local table_begin = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = '{title}',
palette = 'blue',
tall = 'yes',
class = 'tr-alongside', -- hack to avoid double <br> - can't tell where this is coming from
}
}
local table_normal_koj_header = [=[
! class="outer" |
! class="outer" colspan="3" | ကိုန်ဨကဝုစ်
! class="outer" rowspan="2" | ကိုန်ဗဟုဝစ်
|-
!
! ပုလ္လိၚ်
! ဣတ္တိလိၚ်
! နပုလ္လိၚ်
|-
]=]
local table_cont_indef_def = [=[
! ဟွံချိုတ်ပၠိုတ်
| {ind_m_sg}
| {ind_f_sg}
| {ind_n_sg}
| {ind_pl}
|-
! ချိုတ်ပၠိုတ်<br />(ဗီုပြၚ်ကတ္တာ)
| {def_sub_m_sg}
| rowspan="2" | {def_f_sg}
| rowspan="2" | {def_n_sg}
| rowspan="2" | {def_pl}
|-
! ချိုတ်ပၠိုတ်<br />(ဗီုပြၚ်အရာဝတ္ထု)
| {def_obj_m_sg}
]=]
local table_cont_koj = [=[
! မဒုၚ်ယၟု
| {nom_m_sg}
| rowspan="3" | {f_sg}
| rowspan="3" | {n_sg}
| rowspan="3" | {pl}
|-
! ကမ္မကာရက
| {acc_m_sg}
|-
! ပြကမ္မကာရက
| {dat_m_sg}
]=]
local table_cont_short = [=[
|-
! ဗီုပြၚ်ဓမၠေံ
| colspan="4" | {short}
]=]
local table_cont_voc = [=[
|-
! သၠဲပ္တိတ်လဝ်<br />(ဗီုပြၚ်ပရေၚ်ဂယိုၚ်လမျီု)
| {voc_m_sg}
]=]
local table_dva = [=[
!
! ပုလ္လိၚ်
! ဣတ္တိလိၚ်/<br />နပုလ္လိၚ်
|-
! ဟွံချိုတ်ပၠိုတ်
| {ind_m_pl}
| {ind_fn_pl}
|-
! ချိုတ်ပၠိုတ်
| {def_m_pl}
| {def_fn_pl}
]=]
local table_chij = [=[
! class="outer" colspan="3" | ကိုန်ဨကဝုစ်
! class="outer" rowspan="2" | ကိုန်ဗဟုဝစ်
|-
! ပုလ္လိၚ်
! ဣတ္တိလိၚ်
! နပုလ္လိၚ်
|-
| {m_sg}
| {f_sg}
| {n_sg}
| {pl}
]=]
local table_end = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom',
args = {
notes = forms.footnote
}
}
local special_title = alternant_multiword_spec.title or "မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု " .. forms.lemma
if forms.ind_m_pl ~= "—" then -- два
local table_spec = table_begin .. table_dva .. table_end
forms.title = special_title
return m_string_utilities.format(table_spec, forms)
elseif forms.nom_m_sg ~= "—" then -- кой, etc.
local table_spec = table_begin .. table_normal_koj_header .. table_cont_koj .. table_end
forms.title = special_title
return m_string_utilities.format(table_spec, forms)
elseif forms.m_sg ~= "—" then -- чий, etc.
local table_spec = table_begin .. table_chij .. table_end
forms.title = special_title
return m_string_utilities.format(table_spec, forms)
else
local table_spec = table_begin .. table_normal_koj_header ..
table_cont_indef_def ..
(forms.short ~= "—" and table_cont_short or "") ..
(forms.voc_m_sg ~= "—" and table_cont_voc or "") ..
table_end
if alternant_multiword_spec.compforms or alternant_multiword_spec.supforms then
forms.title = alternant_multiword_spec.title or "ဗီုပြၚ်မချိုတ်ပၠိုတ်မဆေၚ်စပ်ကဵု " .. forms.lemma
else
forms.title = special_title .. " (no comparative)"
end
local postable = m_string_utilities.format(table_spec, forms)
local comptable = ""
local suptable = ""
if alternant_multiword_spec.compforms then
alternant_multiword_spec.compforms.notes_clause = forms.notes_clause
alternant_multiword_spec.compforms.title = "ဗီုပြၚ်ပတဝ်ပတုပ်ရံၚ်မဆေၚ်စပ်ကဵု " .. forms.lemma
comptable = m_string_utilities.format(table_spec, alternant_multiword_spec.compforms)
end
if alternant_multiword_spec.supforms then
alternant_multiword_spec.supforms.notes_clause = forms.notes_clause
alternant_multiword_spec.supforms.title = "ဗီုပြၚ်မဆေၚ်စပ်ကဵု " .. forms.lemma
suptable = m_string_utilities.format(table_spec, alternant_multiword_spec.supforms)
end
return mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-block',
args = { postable .. comptable .. suptable }
}
end
end
-- Externally callable function to parse and decline a noun given user-specified arguments.
-- Return value is ALTERNANT_MULTIWORD_SPEC, an object where the declined forms are in
-- `ALTERNANT_MULTIWORD_SPEC.forms` for each slot. If there are no values for a slot, the
-- slot key will be missing. The value for a given slot is a list of objects
-- {form=FORM, footnotes=FOOTNOTES}.
function export.do_generate_noun_forms(parent_args, pos, from_headword, def, support_num_type)
local params = {
[1] = {required = true, default = def or "бряг<b>"},
footnote = true,
title = true,
json = {type = "boolean"}, -- for bot use
}
if from_headword then
params.lemma = {list = true}
params.id = true
params.pos = {default = pos}
params.cat = {list = true}
params.indecl = {type = "boolean"}
params.m = {list = true}
params.f = {list = true}
params.g = {list = true}
end
if support_num_type then
params["type"] = true
end
local args = m_para.process(parent_args, params)
pos = args.pos or pos -- args.pos only set when from_headword
local alternant_multiword_spec = parse_alternant_multiword_spec(args[1])
check_lemma_stress(alternant_multiword_spec)
detect_all_noun_accent_and_form_specs(alternant_multiword_spec)
local active_slots = compute_overall_active_noun_slots(alternant_multiword_spec)
construct_noun_stems(alternant_multiword_spec)
decline_multiword_or_alternant_multiword_spec(alternant_multiword_spec, active_slots, false,
"include definite")
alternant_multiword_spec.forms.lemma = args.lemma and #args.lemma > 0 and args.lemma or alternant_multiword_spec.forms.lemma
alternant_multiword_spec.title = args.title
if args.json then
return require("Module:JSON").toJSON(alternant_multiword_spec)
end
return alternant_multiword_spec
end
-- Externally callable function to parse and decline an adjective given user-specified arguments.
-- Return value is ALTERNANT_MULTIWORD_SPEC, an object where the declined forms are in
-- `ALTERNANT_MULTIWORD_SPEC.forms` for each slot. If there are no values for a slot, the slot
-- key will be missing. The value for a given slot is a list of objects
-- {form=FORM, footnotes=FOOTNOTES}.
function export.do_generate_adj_forms(parent_args, pos, from_headword, def, support_num_type)
local params = {
[1] = {required = true, default = def or "бял<(я)>"},
footnote = true,
title = true,
json = {type = "boolean"}, -- for bot use
}
if from_headword then
params.lemma = {list = true}
params.id = true
params.pos = {default = pos}
params.cat = {list = true}
params.indecl = {type = "boolean"}
end
if support_num_type then
params["type"] = true
end
local args = m_para.process(parent_args, params)
pos = args.pos or pos -- args.pos only set when from_headword
local alternant_multiword_spec = parse_alternant_multiword_spec(args[1], "is adj")
check_lemma_stress(alternant_multiword_spec)
detect_all_adj_accent_and_form_specs(alternant_multiword_spec)
local active_slots = compute_overall_active_adj_slots(alternant_multiword_spec)
construct_adj_stems(alternant_multiword_spec)
decline_multiword_or_alternant_multiword_spec(alternant_multiword_spec, active_slots, "is adj",
"include definite")
alternant_multiword_spec.forms.lemma = args.lemma and #args.lemma > 0 and args.lemma or alternant_multiword_spec.forms.lemma
alternant_multiword_spec.title = args.title
if args.json then
return require("Module:JSON").toJSON(alternant_multiword_spec)
end
return alternant_multiword_spec
end
-- Main entry point for nouns. Template-callable function to parse and decline a noun given
-- user-specified arguments and generate a displayable table of the declined forms.
function export.show_noun(frame)
local parent_args = frame:getParent().args
local alternant_multiword_spec = export.do_generate_noun_forms(parent_args, "နာမ်")
if type(alternant_multiword_spec) == "string" then -- json=1 specified
return alternant_multiword_spec
end
show_forms(alternant_multiword_spec)
return make_noun_table(alternant_multiword_spec)
end
-- Main entry point for adjectives. Template-callable function to parse and decline an adjective given
-- user-specified arguments and generate a displayable table of the declined forms.
function export.show_adj(frame)
local parent_args = frame:getParent().args
local alternant_multiword_spec = export.do_generate_adj_forms(parent_args, "နာမဝိသေသန")
if type(alternant_multiword_spec) == "string" then -- json=1 specified
return alternant_multiword_spec
end
show_forms(alternant_multiword_spec, "is adj")
return make_adj_table(alternant_multiword_spec)
end
return export
p4opmgzkmrdx35c69wwo0yygv5peibe
မဝ်ဂျူ:bg-nominal/doc
828
295761
396592
2026-06-08T13:38:11Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation needed}} <!-- replace with {{module documentation}} when each export has a well-formatted comment --> <includeonly> [[ကဏ္ဍ:မဝ်ဂျူဗူလ်ဂရဳယာန်ဂမၠိုၚ်]] </includeonly>"
396592
wikitext
text/x-wiki
{{documentation needed}} <!-- replace with {{module documentation}} when each export has a well-formatted comment -->
<includeonly>
[[ကဏ္ဍ:မဝ်ဂျူဗူလ်ဂရဳယာန်ဂမၠိုၚ်]]
</includeonly>
etpt8nzxggnkdybzsjd3i01cyemuhxk
ထာမ်ပလိက်:bg-ndecl/documentation
10
295762
396593
2026-06-08T13:41:27Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} ==Introduction== {{uses lua|Module:bg-nominal}} This template should be used to decline all Bulgarian nouns, in preference to any other, older template that may still exist. (Eventually these will all be eliminated.) Generally, a single argument is supplied to the template, consisting of a noun (multisyllabic nouns are required to have an acute accent indicating the stress) followed by a dec..."
396593
wikitext
text/x-wiki
{{documentation subpage}}
==Introduction==
{{uses lua|Module:bg-nominal}}
This template should be used to decline all Bulgarian nouns, in preference to any other, older template that may still exist. (Eventually these will all be eliminated.)
Generally, a single argument is supplied to the template, consisting of a noun (multisyllabic nouns are required to have an acute accent indicating the stress) followed by a declension spec in angle brackets. In the most basic case, nothing needs to be supplied between the angle brackets. For example, for the noun {{m|bg|телефо́н||telephone}}:
{{temp|bg-ndecl|телефо́н<>}}
produces
{{bg-ndecl|телефо́н<>}}
===Indicators===
Indicators can be specified inside of angle brackets to modify the default declension behavior. For example, the <code>(v)</code> indicator specifies that the noun has a vocative, which is generated according to the normal rules documented in {{w|Bulgarian nouns}} on Wikipedia. An example is the noun {{m|bg|профе́сор||professor}}:
{{temp|bg-ndecl|профе́сор<(v)>}}
produces
{{bg-ndecl|профе́сор<(v)>}}
Another indicator is <code>*</code>, which indicates that the noun is "reducible" in its plural form (i.e. an ''е'' or ''ъ'' in the last syllable drops out in the plural). For example, for the noun {{m|bg|теа́тър||theater}}:
{{temp|bg-ndecl|теа́тър<*>}}
produces
{{bg-ndecl|теа́тър<*>}}
Multiple indicators can be combined by simply concatenating them (in any order), for example for the noun {{m|bg|кита́ец||Chinese person}}:
{{temp|bg-ndecl|кита́ец<*(v)>}}
produces
{{bg-ndecl|кита́ец<*(v)>}}
Note here that the module automatically knows that if the final ''е'' to be dropped out is preceded by a vowel, ''й'' must be inserted.
===Default and explicit plurals===
All of the above examples have been of multisyllabic masculine nouns, where the default plural is ''-и''. This is also the default for all feminine nouns, but monosyllabic masculine nouns default to ''-ове'', for example {{m|bg|блок||block, block}}:
{{temp|bg-ndecl|блок<>}}
produces
{{bg-ndecl|блок<>}}
Some monosyllabic nouns have a plural in ''-и'' or otherwise have an irregular plural. This can be indicated by supplying the plural after a <code>+</code> sign. For example, {{m|bg|пръст||finger}} is monosyllabic but has a plural in ''-и'':
{{temp|bg-ndecl|пръст<+и>}}
produces
{{bg-ndecl|пръст<+и>}}
Multiple plurals can be specified, e.g. for {{m|bg|кър||field|pos=archaic}}:
{{temp|bg-ndecl|кър<+ове+ища>}}
produces
{{bg-ndecl|кър<+ове+ища>}}
The plural ending ''-и'' automatically causes the {{w|Slavic second palatalization}} to be applied, i.e. final ''к'' -> ''ц'', and similarly ''г'' -> ''з'' and ''х'' -> ''с''. For example, {{m|bg|ези́к||tongue, language}} has the normal plural ''ези́ци'':
{{temp|bg-ndecl|ези́к<>}}
produces
{{bg-ndecl|ези́к<>}}
Some nouns are exceptional and do not undergo this change, which can be indicated using <code>++и</code>, e.g. for {{m|bg|кварк||[[quark]]}}, plural ''ква́рки'':
{{temp|bg-ndecl|кварк<++и>}}
produces
{{bg-ndecl|кварк<++и>}}
Note also that the above change applies only to masculine nouns ending in a consonant. Nouns ending in an ''-а'' (most feminine nouns, as well as some masculine nouns) such do not undergo this change, e.g. {{m|bg|кни́га||book}}, plural ''кни́ги'':
{{temp|bg-ndecl|кни́га<>}}
produces
{{bg-ndecl|кни́га<>}}
===Stress patterns===
Some nouns, especially but not limited to monosyllabic masculine nouns, have a stress shift in the definite singular and/or plural. This can be specified using a stress pattern indicator, which is one of <code>a</code>, <code>b</code>, <code>c</code> or <code>d</code>:
{|class="wikitable"
! Stress pattern !! Definite singular stress !! Plural stress
|-
| <code>a</code> || Stem || Stem
|-
| <code>b</code> || Ending || Ending
|-
| <code>c</code> || Stem || Ending
|-
| <code>d</code> || Ending || Stem
|}
For example, {{m|bg|глас||voice}} has definite singular ''гласъ́т'', plural ''гласове́'':
{{temp|bg-ndecl|глас<b>}}
produces
{{bg-ndecl|глас<b>}}
Some nouns have different multiple possible stress patterns, which can be indicated by concatenating the stress pattern indicators, for example {{m|bg|сълза́||tear (of crying)}} has definite singular сълза́та (stem-stressed) and plural either съ́лзи (stem-stressed) or сълзи́ (ending-stressed), hence it can follow either pattern <code>a</code> or <code>c</code>:
{{temp|bg-ndecl|сълза́<ac>}}
produces
{{bg-ndecl|сълза́<ac>}}
Another way to handle cases where the plural ending is stressed is to add an accent mark to an explicitly specified plural ending, e.g for {{m|bg|ек||echo, thud}} with plurals ''е́кове'' or ''екове́'':
{{temp|bg-ndecl|ек<+ове+ове́>}}
produces
{{bg-ndecl|ек<+ове+ове́>}}
The general rule is that if no accent mark is present, an accent mark will automatically be added if called for by the stress pattern, but an explicit accent mark overrides any stress pattern. As an example, another way to write {{m|bg|сълза́}} (see above) is as follows:
{{temp|bg-ndecl|сълза́<a+и+и́>}}
which produces
{{bg-ndecl|сълза́<a+и+и́>}}
Here, we specify both an unstressed plural ending ''-и'' and a stressed plural ending ''-и́''. In this case, we have to explicitly indicate that the stress pattern is <code>a</code>, because the default for feminines and neuters whose lemma has ending stress is <code>c</code>, which will automatically add a stress to the unstressed <code>+и</code> specification.
Specifically, the following rules are used to determine the default stress pattern:
* Nouns ending in ''-а́'', ''-я́'', ''-е́'' and ''-о́'' (regardless of gender) default to <code>c</code> (i.e. the plural will also be ending-stressed).
* Masculine reducible nouns (those with the indicator <code>*</code>) where the reducible vowel is stressed default to <code>c</code>, e.g. {{m|bg|чуждене́ц||foreigner}}, plural ''чужденци́''.
* Feminine nouns ending in a consonant (these require the <code>(f)</code> indicator, see below) default to <code>d</code>, e.g. {{m|bg|нощ||night}}, definite singular {{m|bg|нощта́}}, plural {{m|bg|но́щи}}.
* All other nouns default to <code>a</code>.
===Stems and endings===
The above discussion of adding the plural ending ''-и'' to {{m|bg|сълза́}} glossed over the fact that the ending is not added directly to the lemma ''сълза́'' but to the stem ''съ́лз-''. The stem is used when adding plural and other endings, and is generated from the lemma as follows:
* If the noun ends in ''-а'', ''-я'', ''-е'' or ''-о'' (stressed or not), this is removed and the remainder becomes the stem.
* Otherwise, if the noun begins with a capital letter and ends in ''-и'' (stressed or not), as in the name {{m|bg|До́бри}} but not the words {{m|bg|такси́||taxi}} or {{m|bg|цуна́ми||tsunami}}, the ''-и'' is removed and the remainder becomes the stem.
* If the noun ends in ''-й'', e.g. {{m|bg|змей}} or {{m|bg|геро́й}}, this is removed and the remainder becomes the stem.
* Otherwise, the whole lemma is the stem.
Finally, if the resulting stem has no accent, an accent is added to the last vowel, so that e.g. the stem of {{m|bg|бряг||shore, coast}} is ''бряг-'' the stem of {{m|bg|жена́||woman, wife}} is ''же́н-'', and the stem of {{m|bg|госпожа́||Mrs., ma'am}} is ''госпо́ж-''. (In the latter case, for example, specifying {{temp|bg-noun|госпожа́<a>}} will correctly generate plural ''госпо́жи''.)
===Default and explicit gender indications===
Examples were given above of masculine and feminine nouns. In general, the module needs to know the gender of a noun in order to properly decline it. Most of the time, the gender can be automatically determined from the ending, as follows:
# Nouns ending in a consonant are by default masculine.
# Nouns ending in ''-а'' or ''-я'' (stressed or not) are by default feminine.
# All other nouns are by default neuter.
There are some exceptions, which should be indicated using a gender indicator, one of <code>(m)</code>, <code>(f)</code> or <code>(n)</code>, for example {{m|bg|нощ||night}}, which is feminine:
{{temp|bg-ndecl|нощ<(f)>}}
produces
{{bg-ndecl|нощ<(f)>}}
Note that when the module knows that this is a feminine noun, it automatically uses the definite singular ending ''-та'' instead of ''-ът'' and plural ''-и'' instead of ''-ове'' (the default for monosyllabic masculine nouns), and automatically defaults to stress pattern <code>d</code>, so that the definite singular ending ''-та'' is stressed, as in all feminine nouns ending in a consonant.
===Overriding plurals, vocatives, etc.===
Some nouns have more complex plurals than can be easily indicated using the <code>+PL</code> format, or have other irregularities, as follows, for {{m|bg|чове́к||person}}:
{{temp|bg-ndecl|чове́к</pl:хо́ра/voc:чове́че>}}
which produces
{{bg-ndecl|чове́к</pl:хо́ра/voc:чове́че>}}
Here the general format is a slash, followed by a property name and one or more colon-separated values. In this case, we explicitly specify an irregular plural ''хо́ра'' and irregular vocative ''чове́че''. (The definite plural ''хо́рата'' does not explicitly need to be given; it is generated according to a regular rule.)
Multiple overriding values can be given, e.g.:
{{temp|bg-ndecl|чове́к</pl:хо́ра:+:лю́де/voc:чове́че>}}
which produces
{{bg-ndecl|чове́к</pl:хо́ра:+:лю́де/voc:чове́че>}}
Here, <code>+</code> is a shortcut for whatever value(s) would normally be generated according to the default rules. In this case, the normal plural of {{m|bg|чове́к}} is ''чове́ци'', so specifying <code>+</code> is equivalent to specifying <code>чове́ци</code> explicitly. So the effect is to specify three plurals: ''хо́ра'', ''чове́ци'' and ''лю́де''. (The latter two are archaic; the next section describes how to indicate this using a footnote.)
You can also use <code>~</code> as a shortcut for the lemma (so that e.g <code>~и</code> generates a value by adding ''и'' to the lemma), and <code>~~</code> as a shortcut for the stem.
The following property names are recognized, and should be followed by one or more forms:
* <code>/pl:</code> (the indefinite plural, from which the definite plural is automatically generated)
* <code>/def:</code> (the definite subjective singular, from which the definite objective singular is automatically generated)
* <code>/count:</code> (the count form)
* <code>/voc:</code> (the vocative singular form; if you specify this, you do not have to specify <code>(v)</code> to get the vocative to display)
* <code>/dat:</code> (the dative singular form, for nouns that have this form)
* <code>/gen:</code> (the genitive singular form, for nouns that have this form)
* <code>/acc:</code> (the accusative singular form, for nouns that have this form)
* <code>/dat_pl:</code> (the dative plural form, for nouns that have this form)
* <code>/gen_pl:</code> (the genitive plural form, for nouns that have this form)
* <code>/acc_pl:</code> (the accusative plural form, for nouns that have this form)
The following special property names are also recognized:
* <code>/n:sg</code>, <code>/n:pl</code> (specify that this is a ''singulare tantum'' [singular only] or ''plurale tantum'' [plural only] noun)
* <code>-def</code> (specify that the noun has no definite singular; this is the default for nouns beginning with a capital letter, and to get the definite singular to display for these nouns you must specify <code>/def:+</code>)
* <code>-pl</code> (specify that the noun has no plural; this is primarily useful for those few nouns that have no plural but do have a count form, such as {{m|bg|грах||peas}}; for singular-only nouns, use <code>/n:sg</code>)
* <code>-def_pl</code> (specify that the noun has no definite plural)
* <code>-count</code> (specify that the noun has no count form)
For example, to specify the declension of ''plurale tantum'' noun {{m|bg|очила́||glasses}}, use:
{{temp|bg-ndecl|очила́</n:pl>}}
which produces
{{bg-ndecl|очила́</n:pl>}}
To specify the declension of {{m|bg|глава́||head}}, which has a vocative ''гла́во'' and archaic genitive plural ''глав'', use:
{{temp|bg-ndecl|глава́<(v)/gen_pl:глав[a]>}}
which produces
{{bg-ndecl|глава́<(v)/gen_pl:глав[a]>}}
(See the next section for footnote annotations such as <code>[a]</code>.)
===Footnotes===
We can annotate overriding values with footnotes. For example, the two additional plurals ''чове́ци'' and ''лю́де'' mentioned above for {{m|bg|чове́к}} are both archaic, which we can indicate as follows:
{{temp|bg-ndecl|чове́к</pl:хо́ра:+[a]:лю́де[a]/voc:чове́че>}}
which produces
{{bg-ndecl|чове́к</pl:хо́ра:+[a]:лю́де[a]/voc:чове́че>}}
Text in brackets following a plural or other value is inserted as a footnote. Arbitrary text can be given (it should be given without initial capital letter or final period, which will automatically be added), and certain special codes are recognized, e.g. <code>[a]</code> = <code>[archaic]</code>. The full set is described below.
Note that bracketed footnotes can also be added after plurals of the form <code>+PL</code>, for example for {{m|bg|дар||gift}}:
{{temp|bg-ndecl|дар<ad+ове+ове́+и[fp]/count:да́ри:+>}}
which produces
{{bg-ndecl|дар<ad+ове+ове́+и[fp]/count:да́ри:+>}}
This spec is somewhat complex; let's unpack it bit by bit.
# First there is an accent spec <code>ad</code>. This indicates that there are two possible stress patterns: <code>a</code> (definite singular and plural both stem-stressed) and <code>d</code> (definite singular ending-stressed, but plural still stem-stressed; this will not cause duplicate entries in the plural). This is because the definite singular can be either ''да́рът'' or ''даръ́т''.
# Then there are three explicit plurals given: ''да́рове'', ''дарове́'', and ''да́ри'' (where the last one is folk-poetic, as indicated by <code>[fp]</code>).
# Finally, we override the count form, which can be either ''да́ри'' or ''да́ра'' (the normally generated value, which replaces <code>+</code>).
===Stem alternations===
; ''-я-'' vs. ''-е-''
In nouns with stressed -я́-, the -я́- automatically converts to -е- when a stressed ending is added, for example, {{m|bg|бряг||coast, shore}}, definite singular {{m|bg|брегъ́т}}, plural {{m|bg|брегове́}} (but count form {{m|bg|бря́га}}):
{{temp|bg-ndecl|бряг<b>}}
produces
{{bg-ndecl|бряг<b>}}
In some nouns, this change also happens when an unstressed ending beginning with ''-е'' or ''-и'' is added. This can be signaled using the <code>(я)</code> indicator, as with {{m|bg|мя́рка||measure, limit, criterion}} plural ''ме́рки'':
{{temp|bg-ndecl|мя́рка<(я)>}}
produces
{{bg-ndecl|мя́рка<(я)>}}
Conversely, in a few nouns, the change ''-я́-'' -> ''-е-'' does not happen even when a stressed ending is added; this can be signaled using <code>(-я)</code>, as with {{m|bg|одея́ло||blanket}} plural ''одеяла́'' (stress pattern <code>c</code>, see above):
{{temp|bg-ndecl|одея́ло<c(-я)>}}
produces
{{bg-ndecl|одея́ло<c(-я)>}}
; ''-ръ-'' vs. ''-ър-''
Another stem alternation that occurs in some nouns is a change from ''-ръ-'' to ''-ър-'' before endings beginning with a vowel. For example, {{m|bg|гръб||back, rear}} has definite singular ''гърбъ́т'', plural ''гърбове́'', etc. This can be specified using the <code>(ър)</code> indicator:
{{temp|bg-ndecl|гръб<(ър)>}}
produces
{{bg-ndecl|гръб<(ър)>}}
This change occurs only before endings beginning with a vowel. For example, the feminine noun {{m|bg|кръв||blood}} has plural ''къ́рви'' (with the change) but definite singular ''кръвта́'' (without the change).
This indicator is not the default for any nouns because only some nouns in ''-ръ-'' have this change.
===Palatalized endings===
Some masculine nouns unexpectedly have definite singular in ''-ят'' instead of ''-ът'', and the count form in ''-я'' instead of ''-а''. This can be specified using the indicator <code>(ь)</code>, e.g. for {{m|bg|път||road}}:
{{temp|bg-ndecl|път<(ь)+ища>}}
which produces
{{bg-ndecl|път<(ь)+ища>}}
Some masculine nouns automatically act as if <code>(ь)</code> were specified:
# nouns ending in a vowel + ''-тел'', e.g. {{m|bg|двига́тел||engine}};
# nouns ending in a vowel + consonant + ''-ар'', e.g. {{m|bg|ле́кар||(male) doctor}};
# nouns ending in ''-й'', e.g. {{m|bg|геро́й||hero}}.
For such nouns, you can disable the <code>(ь)</code> behavior using <code>(-ь)</code>. An example noun that needs this is {{m|bg|ку́фар||suitcase}}, with definite subjective singular ''ку́фарът'':
{{temp|bg-ndecl|ку́фар<(-ь)>}}
which produces
{{bg-ndecl|ку́фар<(-ь)>}}
===Alternative stresses===
Some nouns can be stressed in more than one place, e.g. {{m|bg|мо́лив||pencil}}, also stressed as {{m|bg|моли́в}}. To indicate this, use the following syntax:
{{temp|bg-ndecl|((мо́лив<>,моли́в<>))}}
which produces
{{bg-ndecl|((мо́лив<>,моли́в<>))}}
The general form is to specify two or more comma-separated sets of lemma + spec, surrounded by double parentheses. There is no requirement that the different sets have the same specs. For example, {{m|bg|ви́но||wine}} has an alternative stress pattern {{m|bg|вино́}}, but in all cases the plural is ''вина́'' (referring to different types of wines). This can be indicated as follows:
{{temp|bg-ndecl|((ви́но<c>,вино́<>))}}
which produces
{{bg-ndecl|((ви́но<c>,вино́<>))}}
===Adjectival nouns===
Some nouns are derived from adjectives and declined like them. An example is {{m|bg|вое́нен||soldier}}, derived from {{m|bg|вое́нен||military}}; it is literally "military man". As an adjectival noun, it has definite subjective singular ''вое́нният'' instead of ''*вое́ннът'', as would be expected for a regular noun. To indicate this, use the <code>#</code> indicator. Along with this, you can use other adjectival indicators as documented in {{temp|bg-adecl}}. In addition, you can use the following:
* <code>(v)</code> to indicate that the noun has a vocative;
* <code>(h)</code> to indicate that the noun is a male human (currently synonymous with <code>(v)</code>);
* <code>/n:sg</code> or <code>/n:pl</code> to indicate that the noun is singular-only or plural-only.
For example, to decline the adjectival noun {{m|bg|вое́нен||soldier}}, use the following syntax:
{{temp|bg-ndecl|вое́нен<#*(h)>}}
which produces
{{bg-ndecl|вое́нен<#*(h)>}}
As another example, to decline the adjectival noun {{m|bg|ру́ски||Russian (language)}}, use the following syntax:
{{temp|bg-ndecl|ру́ски<#/n:sg>}}
which produces
{{bg-ndecl|ру́ски<#/n:sg>}}
===Multiword expressions===
Multiword expressions are supported. For example, to decline the noun {{m|bg|слъ́нчева систе́ма||solar system}}, use the following syntax:
{{temp|bg-ndecl|слъ́нчева<#> систе́ма<>}}
which produces
{{bg-ndecl|слъ́нчева<#> систе́ма<>}}
Note how the adjective is marked with <code>#</code>, as for adjectival nouns (see above). The module automatically knows that in adjective-noun combinations, only the first adjective receives definite endings.
You can insert links into the declension syntax, and they will automatically be removed when declining the noun. For example, equivalent to the above is the following:
<code><nowiki>{{bg-ndecl|[[слънчев|слъ́нчева]]<#> [[систе́ма]]<>}}</nowiki></code>
which produces
{{bg-ndecl|[[слънчев|слъ́нчева]]<#> [[систе́ма]]<>}}
These links are especially useful in {{temp|bg-noun}}, which can take the same syntax as {{temp|bg-ndecl}}; the links will properly go into the headword.
Another example, for {{m|bg|зва́телен паде́ж||[[vocative case]]}}:
<code><nowiki>{{bg-ndecl|[[зва́телен]]<#*> [[паде́ж]]</n:sg>}}</nowiki></code>
produces
{{bg-ndecl|[[зва́телен]]<#*> [[паде́ж]]</n:sg>}}
Here, the adjective is reducible and the overall expression is singular-only. Note that the singular-only code <code>/n:sg</code> only needs to be indicated once (preferably on the noun).
The reducible code <code>*</code> only needs to be indicated on masculine singular adjectives. Other reducible adjectives are always in reduced form, and will work fine with or without the <code>*</code> reducible indicator, for example, for {{m|bg|ато́мна бо́мба||[[atomic bomb]]}}:
<code><nowiki>{{bg-ndecl|[[атомен|а́томна]]<#> [[бо́мба]]<>}}</nowiki></code>
produces
{{bg-ndecl|[[атомен|а́томна]]<#> [[бо́мба]]<>}}
You can include more than two words. For example, for the noun {{m|bg|сла́бо я́дрено взаимоде́йствие||[[weak nuclear interaction]]}}, use the following syntax:
<code><nowiki>{{bg-ndecl|[[слаб|сла́бо]]<#> [[ядрен|я́дрено]]<#> [[взаимоде́йствие]]<>}}</nowiki></code>
which produces
{{bg-ndecl|[[слаб|сла́бо]]<#> [[ядрен|я́дрено]]<#> [[взаимоде́йствие]]<>}}
Here, only the first adjective receives definite markings, as is correct.
A slightly more complex example is {{m|bg|бял дроб||lung}}:
<code><nowiki>{{bg-ndecl|[[бял]]<#(я)> [[дроб]]<ac>}}</nowiki></code>
which produces
{{bg-ndecl|[[бял]]<#(я)> [[дроб]]<ac>}}
Here, there is an alternation between ''я'' and ''е'' in the adjective, which needs to be indicated by <code>(я)</code>, and {{m|bg|дроб}} can take two possible stresses in the plural. Note that both plural forms are correctly generated and attached to the appropriate adjective form.
Another complex example is {{m|bg|зве́зден вя́тър||[[stellar wind]]}}:
<code><nowiki>{{bg-ndecl|[[зве́зден]]<#*> [[вя́тър]]<c*+ове́/voc:ве́тре>}}</nowiki></code>
which produces
{{bg-ndecl|[[зве́зден]]<#*> [[вя́тър]]<c*+ове́/voc:ве́тре>}}
This shows that all the indicators and overrides normally available for a noun can still be used here, and will work correctly. In this case, the explicit vocative override causes the overall expression to have a vocative, and the fact that the adjective has two possible vocative forms means the overall expression will also have two possible vocatives.
Arbitrary text can be included between or around declined words, for example for {{m|bg|ба́за да́нни||database}}:
<code><nowiki>{{bg-ndecl|[[ба́за]]<> [[да́нни]]}}</nowiki></code>
produces
{{bg-ndecl|[[ба́за]]<> [[да́нни]]}}
Here, the word {{m|bg|да́нни||data}} is undeclined, and is included as-is in all forms.
Alternants and other complexities can be included and work fine. For example, if we wanted to generate the declension of {{m|bg|не́добро ви́но||bad wine}} (also stressable as {{m|bg|недобро́ ви́но}}, {{m|bg|не́добро вино́}} or {{m|bg|недобро́ вино́}}), we would use the following:
<code><nowiki>{{bg-ndecl|(([[недобър|не́добро]]<#>,[[недобър|недобро́]]<#>)) (([[ви́но]]<c>,[[вино́]]<>))}}</nowiki></code>
which produces
{{bg-ndecl|(([[недобър|не́добро]]<#>,[[недобър|недобро́]]<#>)) (([[ви́но]]<c>,[[вино́]]<>))}}
==Parameters==
The general format is as follows:
<code>LEMMA<STRESS(INDIC)(INDIC)+PLURAL1+PLURAL2/PROPERTY1:VALUE1:VALUE2/PROPERTY2:VALUE3:VALUE4></code>.
More specifically:
# There can be zero or more stress pattern codes at the beginning. The allowed codes are
#:* <code>a</code> = stem-stressed in both def sg and plural
#:* <code>b</code> = ending-stressed in both def sg and plural
#:* <code>c</code> = stem-stressed in def sg, ending-stressed in plural
#:* <code>d</code> = ending-stressed in def sg, stem-stressed in plural
#: Note that the interpretation of these is a bit different from the Russian equivalents.
#: The defaults are as follows:
## Masculine nouns with reducible plural where the stress is on the reducible vowel (e.g. чуждене́ц, def sg. чуждене́цът, pl. чужденци́) default to <code>c</code>; others default to <code>a</code>.
## Feminine nouns ending in stressed -а́ or -я́ (e.g. жена́, def sg. жена́та pl. жени́) default to <code>c</code>; feminine nouns ending in a consonant (e.g. нощ def sg. нощта́, pl. но́щи) default to <code>d</code>; others default to <code>a</code>.
## Neuter nouns ending in stressed -о́ or -е́ default to <code>c</code>; others default to <code>a</code>.
# Following the stress pattern codes are zero or more indicators, which are mostly inside of parens:
#:* <code>*</code> (indicates reducible plural)
#:* <code>(d*)</code> (indicates reducible def sg)
#:* <code>(v*)</code> (indicates reducible vocative)
#:* <code>(c*)</code> (indicates reducible count form)
#:* <code>(v)</code> (indicates that the noun has a vocative)
#:* <code>(ь)</code> (indicates that the def sg is in -ят/-я and the count is in -я, instead of def sg -ът/-а and count in -а; automatically inferred for nouns ending in -й, vowel + -тел or vowel + -ар)
#:* <code>(-ь)</code> (prevents <code>(ь)</code> from being inferred when it normally would be)
#:* <code>(ър)</code> (indicates ръ -> ър change when a vowel-initial ending is added)
#:* <code>(я)</code> (indicates я́ -> е́ when an ending beginning with -е, -и or -ь is added; note that the change я́ -> unstressed е is automatic when a stressed ending is added, unless <code>(-я)</code> is given)
#:* <code>(-я)</code> (prevents the normally automatic change я́ -> unstressed е when a stressed ending is added, e.g. in {{m|bg|одея́ло}} plural {{m|bg|одеяла́}})
#:* <code>(ин)</code> (indicates that -ин is lost in the plural)
#:* <code>(m)</code> (indicates unpredictably masculine, e.g. when ending in a vowel)
#:* <code>(f)</code> (indicates unpredictably feminine, e.g. when ending in consonant)
#:* <code>(n)</code> (indicates unpredictably neuter)
# Following this are zero or more plural specs, e.g. <code>+и</code>, <code>+ове</code>, <code>+ища</code>. <code>+и</code> normally causes palatalization of word-final к, г, х (except for word-final нг) -> ци, зи, си; <code>+е</code> similarly causes palatalization of word-final ка, га, ха -> це, зе, се. To disable this, use <code>++и</code> or <code>++е</code>.
# Following this is zero or more property specs. Currently recognized properties are:
#:* <code>pl</code> (specify the indefinite plural form)
#:* <code>def</code> (specify the definite singular subjective form)
#:* <code>count</code> (specify the count form)
#:* <code>voc</code> (specify the vocative form)
#:* <code>n</code> (restrict the noun to singular-only or plural-only).
#: All the properties specifying particular forms should be followed by one or more colon-separated forms, where the special value <code>+</code> means "use the default form" and <code>~</code> and <code>~~</code> are substituted by the whole word and the stem, respectively.
#: Each form can optionally be followed by a footnote in brackets, e.g. <code>[collective]</code> or <code>[dated]</code>. Certain abbreviations are recognized for the footnotes, e.g.
#:* <code>[a]</code> = <code>[archaic]</code>
#:* <code>[c]</code> = <code>[colloquial]</code>
#:* <code>[d]</code> = <code>[dialectal]</code>
#:* <code>[fp]</code> = <code>[folk-poetic]</code>
#:* <code>[l]</code> = <code>[literary]</code>
#:* <code>[lc]</code> = <code>[low colloquial]</code>
#:* <code>[p]</code> = <code>[poetic]</code>
#:* <code>[pej]</code> = <code>[pejorative]</code>
#:* <code>[r]</code> = <code>[rare]</code>
#:: These abbreviations are also recognized inside of angle brackets, which allows you to specify other text in addition; for example, <code>[<a> or <d>]</code> = <code>[archaic or dialectal]</code>, <code>[<d> or endearing]</code> = <code>[dialectal or endearing]</code>, etc.
#: Note that specifying a plural form using a property spec overrides any plurals specified using <code>+и</code> or similar, so only one of the two mechanisms should be used.
# Finally, more than one of the entire specification (including the initial specs, plurals and properties) can be given, comma-separated.
===Properties and manual overrides===
The following overrides are recognized for nouns:
#:* <code>pl</code> (specify the indefinite plural form, from which the definite plural form is automatically constructed)
#:* <code>ind_pl</code> (specify the indefinite plural form only)
#:* <code>def_pl</code> (specify the definite plural form only)
#:* <code>def</code> (specify the definite singular subjective form, from which the definite singular objective form is automatically constructed)
#:* <code>def_sub</code> (specify the definite singular subjective form only)
#:* <code>def_obj</code> (specify the definite singular objective form only)
#:* <code>ind</code> (specify the indefinite singular form only; this is the lemma form, and an override here can be useful if the lemma is irregular compared with other forms)
#:* <code>count</code> (specify the count form)
#:* <code>voc</code> (specify the vocative singular form)
#:* <code>acc</code> (specify the accusative singular form)
#:* <code>gen</code> (specify the genitive singular form)
#:* <code>dat</code> (specify the dative singular form)
#:* <code>acc_pl</code> (specify the accusative plural form)
#:* <code>gen_pl</code> (specify the genitive plural form)
#:* <code>dat_pl</code> (specify the dative plural form)
#:* <code>n</code> (restrict the noun to singular-only or plural-only).
==Rules for constructing forms==
===Combining stems and endings===
Endings are normally added onto a ''stem''. The formation of the stem from the lemma is described [[#Stems and endings|above]]. Once the stem is determined, the ending is added as follows:
# If the <code>(ър)</code> indicator is specified and the ending begins with a vowel, the sequence ''CърC'' is replaced with ''CръC'' (preserving the stress as appropriate).
# If ''-я́-'' occurs, it is converted to ''-е́-'' under the following circumstances:
## the <code>(-я)</code> indicator is not given; and either
## the ending is accented, or
## the <code>(я)</code> indicator is given and the ending begins with ''-е'', ''-и'' or ''-ь''.
## If the ending is accented, remove any stress from the stem.
Note the behavior of stressed ''-я́-'' in the stem:
# ''-я́-'' occurs, no indicator is given, and the ending is stressed: '''change to -е-'''. E.g. for {{m|bg|бряг||coast, shore}}: ''брегъ́т'' "the coast".
# ''-я́-'' occurs, no indicator is given, and the ending is unstressed: '''no change'''. E.g. for {{m|bg|бряг||coast, shore}}: ''два бря́га'' "two coasts".
# ''-я́-'' occurs, <code>(я)</code> is given, and the ending begins with ''е-'', ''и-'' or ''ь-'': '''change to -е́-'''. E.g. for {{m|bg|мя́рка||measure, limit, criterion}}: ''ме́рки'' "criteria".
# ''-я́-'' occurs, <code>(я)</code> is given, and the ending begins with a consonant or a vowel other than ''е-'', ''и-'' or ''ь-'': '''no change'''.
# ''-я́-'' occurs and <code>(-я)</code> is given: '''no change''' even if the ending is stressed. E.g. for {{m|bg|одея́ло||blanket}}: ''одеяла́'' "blankets".
===Plural formation===
The default rules for determining the plural ending are as follows:
# All feminine nouns default to <code>+и</code>.
# Masculine nouns form the plural as follows:
## For proper nouns (those beginning with an uppercase letter):
### If the word ends in ''-и'' (e.g. {{m|bg|До́бри}}), ''-я'' (e.g. {{m|bg|Или́я}}) or ''-й'' (e.g. {{m|bg|Благо́й}}), the default is <code>+евци</code>.
### Otherwise, if the word ends in ''-ов'' (e.g. {{m|bg|Ива́нов}}/{{m|bg|Ивано́в}}) or ''-ев'' (e.g. {{m|bg|Пе́нчев}}), the default is <code>+и+ци</code> (i.e. two default plurals).
### Otherwise (e.g. {{m|bg|Пе́тър}}, {{m|bg|Ива́н}}, {{m|bg|Кру́м}}, {{m|bg|Нико́ла}}), the default is <code>+овци</code>.
## For common nouns (those beginning with a lowercase letter):
### If the word ends in ''-о'' (stressed or unstressed, e.g. {{m|bg|дя́до}}, {{m|bg|гле́зльо}}) or stressed ''-а́н'' (e.g. {{m|bg|готова́н}}), the default is <code>+овци</code>.
### Otherwise, if the word ends in ''-е'' (e.g. {{m|bg|аташе́}}), the default is <code>+ета</code>.
### Otherwise, if the word is multisyllabic (e.g. {{m|bg|ези́к}}, {{m|bg|друга́р}}, {{m|bg|геро́й}}, {{m|bg|баща́}}, {{m|bg|коле́га}}, etc.), the default is <code>+и</code>.
### Otherwise, if the word ends in ''-й'' (e.g. {{m|bg|край}}, {{m|bg|брой}}), the default is <code>+еве</code>.
### Other monosyllabic nouns for which <code>(ь)</code> is specified (e.g. {{m|bg|кон}}, {{m|bg|зет}}, {{m|bg|цар}}) default to <code>+ьове</code>.
### All remaining monosyllabic nouns default to <code>+ове</code>.
# Neuter nouns form the plural as follows:
## If the word ends in ''-о'', ''-ще'' or ''-це'', the default is <code>+а</code>.
## If the word ends in ''-ие'', the default is <code>+я</code>.
## For other words ending in ''-е'', the default is <code>+ета</code>. (Note that the plural ending is added onto the ''stem'', not the lemma, hence the plural of {{m|bg|носле́||nose}} is ''носле́та'', i.e. stem ''но́сл-'' + ''-е́та''.)
## Any remaining words (primarily loanwords such as {{m|bg|такси́||taxi}}, {{m|bg|цуна́ми||tsunami}}, {{m|bg|бижу́||jewel}}, {{m|bg|меню́||menu}}) default to <code>+та</code>. (Note that for these words, the stem and lemma are the same, hence the plural of {{m|bg|такси́}} is ''такси́та''.)
Once the plural ending is determined or specified, it may need a stress mark added (specifically if the stres pattern is <code>b</code> or <code>c</code> and no stress mark is explicitly given). If so, it is added as follows:
# ''-еса́'' and ''-ена́'' are stressed as shown.
# ''-ове́'', ''-ьове́'', ''-йове́'' and ''-еве́'' are stressed as shown if the stress pattern is <code>b</code> (but not <code>c</code>).
# All other plurals are stressed on the first vowel.
After this, the stem to add the plural to needs to be determined. The normal rules for determining the stem from the lemma are described above, but in addition:
# If the <code>*</code> is specified, or if it is inferred (this happens for nouns in ''-зъм'', such as {{m|bg|органи́зъм}}), the stem is "reduced" by deleting ''-е-'' or ''-ъ-'' before a single final consonant. (If the noun does not have this form, an error is signaled.)
# If the <code>(ин)</code> indicator was specified (e.g. for words like {{m|bg|англича́нин}}, {{m|bg|господи́н}}), final ''-ин'' is removed. If the resulting stem has no stress, it is added onto the last syllable.
# If the plural to be added is <code>+и</code> (but not <code>++и</code>), and the lemma ends in ''-к'', ''-г'' or ''-х'' (e.g. {{m|bg|ези́к}}, plural ''ези́ци'') and does not end in ''-нг'' (e.g. {{m|bg|ми́тинг}}, {{m|bg|ло́зунг}}, with plurals ''ми́тинги'', ''ло́зунги''), the {{w|Slavic second palatalization}} is applied to the final consonant, i.e. final ''к'' -> ''ц'', final ''г'' -> ''з'' and final ''х'' -> ''с''.
# The Slavic second palatalization is also applied if the plural to be added is <code>+е</code> (but not <code>++е</code>) and the lemma ends in ''-ка'', ''-га'' or ''-ха'' (e.g. {{m|bg|ръка́}}, plural ''ръце́'').
Finally, the plural ending is added onto the stem according to the rules described above (which an accent from the stem if present in the ending, and may modify the stem if it contains ''-ръ-'' or stressed ''-я́-'').
===Vocative formation===
The default rules for forming the vocative are as described in the Wikipedia entry on {{w|Bulgarian nouns}}:
# Neuter nouns, feminine nouns ending in a consonant, and nouns for which none of <code>(v)</code>, <code>(v*)</code> and <code>/voc:</code> are specified have no default vocative.
# Nouns for which <code>(ь)</code> is specified or inferred (i.e. nouns in ''-ар'', ''-тел'' or ''-й'', unless <code>(-ь)</code> is given) add ''-ю'' to the stem.
# Nouns ending in a vowel + ''-я'' add ''-йо'' to the stem.
# Nouns ending in a consonant + ''-я'' add ''-ьо'' to the stem.
# Nouns ending in ''-ца'', ''-рка'' or ''-чка'', as well as all proper nouns ending in ''-ка'', add ''-е'' to the stem.
# All other nouns in ''-а'' add ''-о'' to the stem.
# Nouns ending in ''-к'', ''-ч'', ''-ц'' or ''-ин'' add ''-о''.
# Nouns ending in ''-г'' or ''-з'' change this final consonant to ''-ж'' and add ''-е''.
# All other nouns (i.e. masculine nouns ending in a consonant, other than those mentioned above) add ''-е''.
Note that the added ending never bears the stress, regardless of the stress pattern.
===Count form formation===
The default rules for forming the count form are as follows:
# Nouns that aren't masculine or don't end in a consonant have no default count form.
# Nouns for which <code>(ь)</code> is specified or inferred (i.e. nouns in ''-ар'', ''-тел'' or ''-й'', unless <code>(-ь)</code> is given) add ''-я'' to the stem.
# Other nouns add ''-а''.
Note that the added ending never bears the stress, regardless of the stress pattern.
===Definite subjective singular formation===
===Definite objective singular formation===
===Definite plural formation===
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗူလ်ဂရဳယာန်ဂမၠိုၚ်]]
</includeonly>
g8aqugc8nuzdznqm1aj15x7mk8xsg7g
မဳဒဳယာဝဳကဳ:Gadget-DefinitionsAdder.js
8
295763
396594
2026-06-08T13:57:24Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// This script adds an "Add definition" button to the toolbox section of the sidebar. window.bodyContent = document.getElementById('bodyContent'); if (mw.config.get("wgNamespaceNumber") === 0 && mw.config.get("wgCurRevisionId") && mw.config.get("wgAction") == "view" && !/&printable=yes|&diff=|&oldid=/.test(window.location.search)) { $(function() { mw.util.addPortletLink('p-tb', 'javascript:addDefinition()', 'Add d..."
396594
javascript
text/javascript
// This script adds an "Add definition" button to the toolbox section of the sidebar.
window.bodyContent = document.getElementById('bodyContent');
if (mw.config.get("wgNamespaceNumber") === 0 && mw.config.get("wgCurRevisionId") && mw.config.get("wgAction") == "view" && !/&printable=yes|&diff=|&oldid=/.test(window.location.search)) {
$(function() {
mw.util.addPortletLink('p-tb', 'javascript:addDefinition()', 'Add definition');
});
}
var definitionHover, tempDefinitionText;
window.setUpBoxToBeAdded = function() {
bodyContent.appendChild(currentBoxToBeAdded);
document.onmousemove =
function(e) {
e = e || event;
currentBoxToBeAdded.style.left = e.clientX + 2 + 'px';
currentBoxToBeAdded.style.top = e.clientY + 2 + 'px';
};
document.body.style.cursor = 'move';
};
window.addDefinition = function() {
var instructions = "Type in your definition, drag it to where it should be placed, and click there to place it.",
temp;
window.currentBoxToBeAdded = $('<input>', {
size: 100
})
.on("blur", function() {
if (definitionHover) {
addDefinition2(definitionHover, currentBoxToBeAdded.lastChild.lastChild.value.replace(instructions, ''));
} else {
tempDefinitionText = currentBoxToBeAdded.lastChild.lastChild.value.replace(instructions, '');
}
bodyContent.removeChild(currentBoxToBeAdded);
document.onmousemove = null;
document.body.style.cursor = '';
for (var ols = document.getElementsByTagName('ol'), i = 0; i < ols.length; i++) {
for (var lis = ols[i].getElementsByTagName('li'), ii = 0; ii < lis.length; ii++) {
if (lis[ii].parentNode == ols[i]) {
lis[ii].onmouseover = lis[ii].onmouseout = null;
}
}
}
}).val(tempDefinitionText || "")
.appendTo($("<nobr>Definition: </nobr>")).parent()
.appendTo($('<div>', {
style: 'border: 1px solid var(--wikt-palette-black,#000000);' +
'position:fixed; left:200px; top:500px; z-index:5;' +
'padding:10px; background-color:var(--wikt-palette-white,#FFFFFF);'
})).parent()[0];
setUpBoxToBeAdded();
temp = currentBoxToBeAdded.lastChild.lastChild;
temp.focus();
if (!temp.value) {
temp.value = instructions;
temp.style.color = "#AAA";
temp.onkeydown = function() {
this.style.color = "#000";
this.value = '';
this.onkeydown = null;
};
}
$("#mw-content-text").on("mouseover", "ol > li", function() {
this.style.borderBottom = '1px solid #000000';
definitionHover = this;
});
$("#mw-content-text").on("mouseout", "ol > li", function() {
this.style.borderBottom = this.style.borderTopStyle == "dashed" ? "2px #00FF00 dashed" : "";
definitionHover = null;
});
};
function addDefinition2(q, newdef) {
q.style.borderBottom = q.style.borderTopStyle == "dashed" ? "2px #00FF00 dashed" : "";
definitionHover = tempDefinitionText = null;
var qq = $('<li><span></span></li>')[0];
new mw.Api().parse(newdef, {
title: mw.config.get("wgPageName")
}).done(function(res) {
qq.lastChild.innerHTML = res;
});
function addDefinition3(wikitext) {
var prevheader = q,
prevols = 0,
prevlis = 1;
while (prevheader.previousSibling) {
prevheader = prevheader.previousSibling;
if (prevheader.nodeName.toLowerCase() == "li") {
prevlis++;
}
}
prevheader = prevheader.parentNode;
while (!/^h\d$/i.test(prevheader.nodeName)) {
prevheader = prevheader.previousSibling;
if (prevheader.nodeName.toLowerCase() == "ol") {
prevols++;
}
}
var findNumberOfHeaders =
Number(prevheader.lastChild.getElementsByTagName('a')[0].href.match(/\d*$/));
wikitext =
(
wikitext.replace(
RegExp("((?:(^|\n)=[\\s\\S]*?){" + findNumberOfHeaders + "}([\\s\\S]*?\n#[\\s\\S]*?\n(?!#)){" + prevols + "}([\\s\\S]*?\n#(?![#:\\*])){" + prevlis + "}[\\s\\S]*?)(\n(?!#[#:\\*])|$)"),
'$1\n# ' + newdef + '\n'
)
);
ccc = wikitext;
return ccc;
}
var updatecatscallback;
var editor = new Editor();
editor.addEdit({
edit: addDefinition3,
redo: function() {
q.parentNode.insertBefore(qq, q.nextSibling);
if (window.makedefsidebox && qq.childNodes.length == 1 && window.defsidebuttons && defsidebuttons.length) {
makedefsidebox(qq);
} // User:Yair_rand/editor.js stuff
if (window.updateCategories && window.tabbedLanguages) {
updatecatscallback = updateCategories((q.parentNode.parentNode.nodeName.toLowerCase() == "li" ? q.parentNode.parentNode : q).parentNode.parentNode, newdef);
}
},
undo: function() {
q.parentNode.removeChild(qq);
updatecatscallback && updatecatscallback();
},
summary: "+def: " + newdef
}, qq);
}
np1pbenort49b2dp9xc8u6fr1aljxyj
မဳဒဳယာဝဳကဳ:Gadget-DefSideBoxes.js/documentation
8
295764
396595
2026-06-08T13:58:30Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly>"
396595
wikitext
text/x-wiki
{{documentation subpage}}
<!--Add description here. This subpage initially added just for categorization.-->
See also: [[Special:Gadgets]].
<includeonly>
[[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]]
</includeonly>
nh2z4mxstdhoy5k1d14op93dv5v8194
မဳဒဳယာဝဳကဳ:Gadget-DefSideBoxes.js
8
295765
396596
2026-06-08T14:28:47Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// Newer version of User:Yair rand/editor.js // <nowiki> // ******** imported from [[MediaWiki:Gadget-LegacyScriptsNewNode.js]] ******** var newNode = window.newNode = function newNode(tagname) { var node = document.createElement(tagname); for (var i = 1; i < arguments.length; i++) { var argument = arguments[i]; if (typeof argument == 'string') { //Text node.appendChild(document.createTextNode(argument));..."
396596
javascript
text/javascript
// Newer version of User:Yair rand/editor.js
// <nowiki>
// ******** imported from [[MediaWiki:Gadget-LegacyScriptsNewNode.js]] ********
var newNode = window.newNode = function newNode(tagname) {
var node = document.createElement(tagname);
for (var i = 1; i < arguments.length; i++) {
var argument = arguments[i];
if (typeof argument == 'string') { //Text
node.appendChild(document.createTextNode(argument));
} else if (typeof argument == 'object') {
if (argument instanceof Node) { // If it is a DOM Node
node.appendChild(argument);
} else { // Attributes (hopefully)
for (var j in argument) {
if (j === 'class') { // Classname different because...
node.className = argument[j];
} else if (j == 'style') { // Style is special
node.style.cssText = argument[j];
} else if (typeof argument[j] == 'function') { // Basic event handlers
node.addEventListener(j, argument[j], false);
} else {
node.setAttribute(j, argument[j]); //Normal attributes
}
}
}
}
}
return node;
};
// ****************************************************************************
var autoTranslitScripts = {
"Geor": true
};
window.makedefsidebox = function(q) {
function clickiconfunction() {
var moreoptions, originalHeight, buttons;
function uncollapse() {
$(moreoptions).slideUp();
$("body").off("click", uncollapse);
}
editdefinition(q);
if ($('>.addusexbutton', q).length === 0) {
buttons = q.insertBefore(newNode('div', {
'class': 'addusexbutton'
}, newNode('a', '+Add example sentence', {
'click': function() {
setupusexadder(q);
}
}), newNode('a', '+Add quotation', {
'click': function() {
setupquoteadder(q);
}
}), newNode('a', 'ပဵု ►', {
'click': function() {
$(moreoptions).slideDown();
setTimeout(function() {
$("body").click(uncollapse);
}, 16);
}
}), newNode('span', {
'style': 'display:inline-block;'
}, moreoptions = newNode('ul', newNode('li', q.className ? newNode('a', 'Edit gloss', {
'click': function() {
editgloss(q);
}
}) : newNode('a', 'Add gloss', {
'click': function() {
addgloss(q);
}
})), newNode('li', newNode('a', q.className ? undefined : {
'class': 'DSBinactive',
'title': 'Please add a gloss before adding synonyms.'
}, {
'click': function() {
setupnymadder(q, "ဝေါဟာတၟုပ်");
}
}, 'Add synonyms')), newNode('li', newNode('a', q.className ? undefined : {
'class': 'DSBinactive',
'title': 'Please add a gloss before adding antonyms.'
}, {
'click': function() {
setupnymadder(q, "ဝေါဟာလွာ");
}
}, 'Add antonyms')), newNode('li', newNode('a', {
'href': mw.config.get('wgScript') + '?title=User_talk:Yair_rand/editor2.js&action=edit§ion=new'
}, 'Give feedback on this tool')), newNode('li', newNode('a', {
click: function() {
$.cookie("DisableYREdit", 1, {
path: '/'
});
location.href = location.href;
}
}, 'Disable this tool'))))), $('>dl,>ul,>ol', q)[0] || null);
}
}
q.insertBefore(
newNode('span', {
'class': 'defEditButton'
}, newNode('span', {
'click': clickiconfunction,
'title': 'Edit'
})), q.firstChild);
return clickiconfunction;
}
function setupusexadder(qq) {
var x, y;
var usexform;
var findsubdef = (qq.parentNode.parentNode.nodeName.toLowerCase() == "li" ? "#" : "") + (qq.parentNode.parentNode.parentNode.parentNode.nodeName.toLowerCase() == "li" ? "#" : "")
editor = new Editor()
findlang(qq.parentNode, function(findlang_) {
var findscript = (new LangMetadata()).getScripts(findlang_),
selectedscript = findscript[0] || "Latn";
if (qq.getElementsByTagName('dl')[0] && qq.getElementsByTagName('dl')[0].parentNode == qq) x = qq.getElementsByTagName('dl')[0];
else if ($(">ul", qq).length > 0) x = qq.insertBefore(newNode('dl'), $(">ul", qq)[0]);
else x = qq.appendChild(newNode('dl'));
x.appendChild(y = newNode('dd'))
new AdderWrapper(new Editor(), {
'createForm': function() {
var x, i = 0,
y = function() {
selectedscript = this.value;
usexform.getElementsByTagName('dd')[0].style.display = this.value == 'Mymr' ? 'none' : 'block'
}
if (findscript.length > 1) {
for (x = newNode('select', {
'name': 'script',
'change': y
}); i < findscript.length; i++) {
x.appendChild(newNode('option', {
'value': findscript[i]
}, findscript[i]))
}
} else {
x = newNode('input', {
'name': 'script',
'value': findscript[0] || "Mymr",
'style': "width:50px;",
'change': y
})
}
return usexform = newNode('form', {
'style': 'display:inline;'
}, newNode('input', {
'size': 100,
'placeholder': 'Example sentence',
'name': 'examplesentence'
}), newNode('span', {
'style': 'display:' + (findscript.length == 1 ? "none" : "inline") + ";"
}, 'Script: ', x), newNode('div', {
'class': "DSBRedButton",
'click': function() {
usexform.style.display = 'none'
}
}, newNode('div', 'Cancel')), newNode('div', {
'class': "DSBGreenButton",
'click': function() {
usexform.onsubmit()
}
}, newNode('div', "Preview ►")), newNode('input', {
'type': 'submit',
'style': 'visibility:hidden;width:0px;'
}), newNode('dl', (findlang_ == "mnw" ? {
'style': 'display:none;'
} : ''), newNode('dd', 'Transliteration: ', ((findscript[0] == 'Mymr' || !findscript[0]) ? {
'style': 'display:none;'
} : ''), newNode('input', {
'size': '100px',
name: 'transliteration'
})), newNode('dd', 'Translation: ', newNode('input', {
'size': '100px',
name: 'translation'
}))))
},
'fields': {
'examplesentence': function(txt, error) {
return util.validateNoWikisyntax('example sentence', true)(txt, error)
},
'transliteration': function(txt, error) {
return txt || '';
},
'translation': function(txt, error) {
if (findlang_ != "en") {
return util.validateNoWikisyntax('translation', true)(txt, error);
}
return '';
},
'script': util.validateNoWikisyntax('script', true)
},
'onsubmit': function(values, render) {
var renderWikitext = "";
if (findlang_ === "en")
renderWikitext = "''" + values.examplesentence + "''";
else {
renderWikitext = "{" + "{ux|" + findlang_ + "|" + values.examplesentence + "|" + values.translation;
if (values.script) {
renderWikitext += "|sc=" + values.script;
if (!(values.script in autoTranslitScripts) && values.transliteration)
renderWikitext += "|tr=" + values.transliteration;
}
renderWikitext += "}}";
}
render(renderWikitext, function(newhtml) {
var findnumberofheaders = findnumberofheaders_(qq);
var findnumberofdefs = findnumberofdefs_(qq);
var usextobeadded = newNode('span')
usextobeadded.innerHTML = newhtml.replace(/<p>|<\/p>/g, '');
editor.addEdit({
edit: function(wikitext) {
var usexWikitext = renderWikitext;
wikitext = wikitext.replace(RegExp(
"(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "[\\s\\S]*?)\n(?!#" + findsubdef + ":)|$"), "$1\n#" + findsubdef + ":" + usexWikitext + "\n");
ccc = wikitext;
return wikitext;
},
redo: function() {
usexform.parentNode.appendChild(usextobeadded);
usextobeadded.style.display = 'block';
usexform.style.display = "none";
y.style.display = 'block'
},
undo: function() {
usexform.parentNode.removeChild(usextobeadded);
usexform.style.display = "inline";
},
summary: "+usex: " + values.examplesentence
}, usextobeadded)
})
}
}, y)
usexform.firstChild.focus()
})
}
window.editdefinition = function(qq) {
(new Editor).withCurrentText(function(wikitext) {
if (qq.YREditing) {
return
}
qq.YREditing = true;
var findnumberofheaders = findnumberofheaders_(qq),
findnumberofdefs = findnumberofdefs_(qq)
var temporarydefholder = qq.insertBefore(newNode('span', {
'style': 'display:none;'
}), qq.childNodes[1].nodeName.toLowerCase() != "form" ? qq.childNodes[1] : qq.childNodes[2])
while (qq.childNodes[3] && qq.childNodes[3].nodeName != "DL" && qq.childNodes[3].nodeName != "UL" && qq.childNodes[3].nodeName != "OL" && qq.childNodes[3].className != "HQToggle" && qq.childNodes[3].className != "addusexbutton")
temporarydefholder.appendChild(qq.childNodes[3]);
if (qq.childNodes[2] != temporarydefholder) temporarydefholder.insertBefore(qq.childNodes[2], temporarydefholder.firstChild);
var defform
var olddef = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "\\s?)"), '').match(/^(\{\{senseid\|[^\}]*\}\})?\s?(.*)/)[2]
new AdderWrapper(new Editor(), {
'createForm': function() {
return defform = newNode('form', {
'style': 'width:100%;display:inline-block;margin-bottom:-6px;'
}, newNode('table', {
'style': 'width:100%;'
}, newNode('tr', newNode('td', newNode('input', {
'style': 'height:17px;width:100%;',
'name': 'definition',
'size': 80,
'value': olddef
})
// newNode('input',{type:'submit',value:'Preview'}),
// newNode('input',{type:'button',value:'Cancel',click:function(){temporarydefholder.style.display='inline';defform.style.display='none';qq.YREditing = false}})
), newNode('td', {
'style': 'white-space:nowrap;'
}, newNode('div', {
'class': "DSBRedButton"
}, newNode('div', {
click: function() {
temporarydefholder.style.display = 'inline';
defform.style.display = 'none';
qq.YREditing = false
}
}, "Discard Changes")), newNode('div', {
'class': "DSBGreenButton"
}, newNode('div', {
click: function() {
defform.onsubmit()
}
}, "ဗဵုရံၚ်စမ်အပြံၚ်အလှာဲ ►"))))))
},
'fields': {
'definition': function(txt, error) {
return txt || error("Please specify a definition.")
}
},
'onsubmit': function(values, render) {
render(values.definition, function(newhtml) {
editor = new Editor()
var findnumberofdefs = findnumberofdefs_(qq) // apparently this is sometimes necessary
var addedspan = newNode('span')
addedspan.innerHTML = newhtml
var updatecatscallback;
editor.addEdit({
edit: function(wikitext) {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "\\s?(\{\{senseid\\|[^\}]*\}\})*?)(?!{" + "{senseid\\|).*"), "$1" + values.definition);
ccc = wikitext;
return wikitext
},
redo: function() {
defform.parentNode.insertBefore(addedspan, defform);
defform.style.display = temporarydefholder.style.display = 'none';
updatecatscallback = window.tabbedLanguages && updateCategories(findtopli(defform.parentNode).parentNode.parentNode, values.definition, olddef)
qq.YREditing = false;
},
undo: function() {
defform.parentNode.removeChild(addedspan);
defform.style.display = "inline";
defform.firstChild.firstChild.firstChild.firstChild.value = olddef;
updatecatscallback && updatecatscallback();
qq.YREditing = true;
},
summary: "def: " + values.definition
}, addedspan)
})
}
}, qq, qq.childNodes[1].nodeName.toLowerCase() != "form" ? qq.childNodes[1] : qq.childNodes[2])
})
}
function findtopli(li) {
for (; li.parentNode.parentNode.nodeName.toLowerCase() == "li";) {
li = li.parentNode.parentNode;
}
return li;
}
function findnumberofheaders_(tosearchfrom) {
tosearchfrom = findtopli(tosearchfrom).parentNode;
while (!tosearchfrom.nodeName.match(/^h\d$/i))
tosearchfrom = tosearchfrom.previousSibling;
return Number(tosearchfrom.lastChild.getElementsByTagName('a')[0].href.match(/\d*$/))
}
function findnumberofdefs_(tosearchfrom) {
var findnumberofdefs = [],
tosearchfrom_, findnumberofpredefs = 0,
result;
// subdefinitions
while (tosearchfrom.nodeName.toLowerCase() == "li") {
tosearchfrom_ = tosearchfrom;
findnumberofdefs.splice(0, 0, 0);
while (tosearchfrom) {
if (tosearchfrom.nodeName.toLowerCase() == "li") findnumberofdefs[0]++;
tosearchfrom = tosearchfrom.previousSibling;
}
tosearchfrom = tosearchfrom_.parentNode.parentNode;
}
// in case of any def lists before the current def list under the same header
for (tosearchfrom_ = tosearchfrom_.parentNode.previousSibling; !tosearchfrom_.nodeName.match(/^h\d$/i); tosearchfrom_ = tosearchfrom_.previousSibling) {
if (tosearchfrom_.nodeName.toLowerCase() == "ol") findnumberofpredefs += 1;
}
result = "([\\s\\S]*?\n#[\\s\\S]*?\n(?!#)){" + findnumberofpredefs + "}";
for (var i = 0; i < findnumberofdefs.length; i++) {
result += "([\\s\\S]*?\n" + Array(i + 2).join("#") + "(?![:*#])){" + findnumberofdefs[i] + "}";
}
return result;
}
function findlang(tosearchfrom, callback) {
var tosearchfrom_, findlang__
if (tosearchfrom.parentNode.nodeName.toLowerCase() == "li") tosearchfrom = findtopli(tosearchfrom.parentNode).parentNode;
if (tosearchfrom.parentNode.className == "languageContainer") {
if (tosearchfrom.parentNode.id == "ဌာန်ဒၞာဲအရေဝ်မန်") return callback("mnw");
} else {
tosearchfrom_ = tosearchfrom;
while (tosearchfrom_.nodeName.toLowerCase() != "h2")
tosearchfrom_ = tosearchfrom_.previousSibling;
if (tosearchfrom_.lastChild.innerHTML == "မန်") return callback("mnw");
}
tosearchfrom_ = tosearchfrom;
while (tosearchfrom_ && !/^h\d$/i.test(tosearchfrom_.nodeName) && tosearchfrom_.className != "fakeheader")
tosearchfrom_ = tosearchfrom_.previousSibling;
while (tosearchfrom_ && tosearchfrom_.nodeName.toLowerCase() != "p" && tosearchfrom_.className != "fakeheader")
tosearchfrom_ = tosearchfrom_.nextSibling;
if (tosearchfrom_ && tosearchfrom_.className != "fakeheader" && tosearchfrom_.firstChild && (tosearchfrom_.firstChild.lang || (tosearchfrom_.firstChild.firstChild && tosearchfrom_.firstChild.firstChild.lang) || (tosearchfrom_.firstChild.firstChild && tosearchfrom_.firstChild.firstChild.firstChild && tosearchfrom_.firstChild.firstChild.firstChild.lang))) {
return callback(tosearchfrom_.firstChild.lang || tosearchfrom_.firstChild.firstChild.lang || tosearchfrom_.firstChild.firstChild.firstChild.lang)
}
if (tosearchfrom.parentNode.className == "languageContainer") findlang__ = tosearchfrom.parentNode.id.split("container")[0];
else {
while (tosearchfrom.nodeName.toLowerCase() != "h2")
tosearchfrom = tosearchfrom.previousSibling;
findlang__ = (findlang__ = tosearchfrom.getElementsByTagName("span")[0]).innerText || findlang__.textContent
}
window.languagecodefinder_preload = window.languagecodefinder_preload || mw.loader.getScript('https://mnw.wiktionary.org/w/index.php?title=User:Yair_rand/languagecodefinder.js&action=raw&ctype=text/javascript');
window.languagecodefinder_preload.always( function() {
window.languagenametocode && languagenametocode[findlang__] && callback(languagenametocode[findlang__])
});
}
function setupquoteadder(q) {
findlang(q.parentNode, function(findlang_) {
var z;
if (!$(".HQToggle a", q)[0]) {
z = q.appendChild(document.createElement("ul"))
setupHiddenQuotes(q);
} else {
z = $(">ul", q)[0];
}
if (z.style.display == 'none') {
$(".HQToggle a", q).click();
}
var zz = z.appendChild(document.createElement("li")),
quoteform;
var findsubdef = q.parentNode.parentNode.nodeName.toLowerCase() == "li" ? "#" : "",
editor = new Editor();
new AdderWrapper(editor, {
'createForm': function() {
return quoteform = newNode('form', {
'style': 'display:inline;'
}, 'Year: ', newNode('input', {
'name': 'year',
'size': 4
}), ' Author: ', newNode('input', {
'name': 'author',
'size': 20
}), ' Source title: ', newNode('input', {
'name': 'source',
'size': 20
}), ' Publisher: ', newNode('input', {
'name': 'publisher',
'size': 20
}), ' Page(s): ', newNode('input', {
'name': 'page',
'size': 5
}), newNode('dl', newNode('dd', 'Quotation: ', newNode('input', {
'name': 'quotation',
'size': 40
}), newNode('div', {
'class': "DSBRedButton",
'click': function() {
z.removeChild(zz)
}
}, newNode('div', 'Cancel')), newNode('div', {
'class': "DSBGreenButton",
'click': function() {
quoteform.onsubmit()
}
}, newNode('div', "ဗဵုစမ် ►")), newNode('input', {
'type': 'submit',
'style': 'visibility:hidden;width:0px;'
}), newNode('dl', {
'style': 'display:' + (findlang_ == "mnw" ? "none" : "block")
}, newNode('dd', 'Translation: ', newNode('input', {
'size': 40,
'name': 'translation'
}))))))
},
'fields': {
'quotation': util.validateNoWikisyntax('quotation', true),
'year': util.validateNoWikisyntax('year', true),
'author': function(t) {
return t
},
'source': function(t) {
return t ? ", ''" + t + "''" : ''
},
'publisher': function(t) {
return t ? ", " + t : ''
},
'page': function(t) {
return t ? (/\-/.test(t) ? "pages " + t : "page " + t) : t
},
'translation': function(t) {
return t
}
},
'onsubmit': function(values, render) {
var topline = "'''" + values.year + "'''" + (values.author ? ", " + values.author : '') + values.source + values.publisher + (values.page ? ", " + values.page : '')
render(topline + "\n:" + values.quotation + (values.translation ? "\n:" + values.translation : ""), function(newhtml) {
var findnumberofheaders = findnumberofheaders_(q),
findnumberofdefs = findnumberofdefs_(q),
quotetobeadded = newNode('span', {
'style': 'display:block;'
});
quotetobeadded.innerHTML = newhtml.replace(/\<p\>|\<\/p\>/g, '');
editor.addEdit({
'edit': function(wikitext) {
return ccc = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "[\\s\\S]*?)\n(?!#" + findsubdef + "[:\*])|$"), "$1\n#" + findsubdef + "*" + topline + "\n#" + findsubdef + "*:" + values.quotation + (values.translation ? "\n#" + findsubdef + "*:" + values.translation : '') + '\n')
},
'redo': function() {
quoteform.style.display = 'none';
quotetobeadded.style.display = 'block';
zz.appendChild(quotetobeadded)
},
'undo': function() {
quoteform.style.display = 'inline';
zz.removeChild(quotetobeadded)
},
'summary': '+quote: "' + values.quotation + '"- ' + values.source
}, quotetobeadded)
})
}
}, zz)
})
}
window.addPOSHeader = function(cancelhover) {
var bodyContent = $(".mw-content-ltr")[0];
if (!defeditoptions.addingPOS) {
defeditoptions.addingPOS = true;
editor = new Editor()
var headerLevel = (window.languageContainers && languageContainers[currentLanguageTab] && languageContainers[currentLanguageTab].firstChild) || bodyContent.firstChild;
var ii;
var temp, temp_;
var theform;
var findnumberofheaders;
var addedwikitext;
var prefakeheaders;
var currentFocus;
var langNames = [],
docLink, docExists = {};
if (window.loadedTabs) {
langNames = tabbedLanguages;
} else {
mw.util.$content.find("h2>.mw-headline").each(function() {
langNames.push($(this).text())
})
}
var langNameCodes;
new mw.Api().get({
"action": "expandtemplates",
"format": "json",
"text": "{{#invoke:languages/javascript-interface|GetAllData}}",
"prop": "wikitext"
}).done(function(r){
if(r.expandtemplates && r.expandtemplates.wikitext){
langNameCodes = JSON.parse(r.expandtemplates.wikitext);
}
});
function updateDocLink() {
var pos = theform.getElementsByTagName("input")[0].value;
pos = (({
Adjective: "adj",
Adverb: "adv",
Interjection: "interj",
Preposition: "prep",
Pronoun: "pron",
Conjunction: "con",
Contraction: "cont",
Determiner: "det"
})[pos] || pos.toLowerCase());
if (!langNameCodes || !pos || !theform.getElementsByTagName("input")[0].value) {
return;
}
var currentLang = window.loadedTabs ? theform.parentNode.id.split("container")[0] : (function() {
for (var s = theform; s && s.nodeName != "H2"; s = s.previousSibling);
return s && s.lastChild && (s.lastChild.innerText || s.lastChild.textContent)
})();
var docName = langNameCodes[currentLang] + "-" + pos;
if (docExists[docName] === false) {
return docLink.style.display = 'none';
}
if (docExists[docName] === true) {
docLink.style.display = 'inline';
docLink.href = mw.config.get("wgArticlePath").replace("$1", "ထာမ်ပလိက်:" + docName + "/doc");
return;
}
if (docExists[docName] === 'l') {
docLink.style.display = 'none';
return;
}
docExists[docName] = 'l';
new mw.Api().get({
action: 'query',
prop: 'info',
titles: 'ထာမ်ပလိက်:' + docName + '/documentation'
}).then(function(r) {
docExists[docName] = r.query.pages.length == 1;
updateDocLink();
});
}
var poslist = '\nနာမ်\nကြိယာ\nနာမဝိသေသန\nကြိယာဝိသေသန\nသဗ္ဗနာမ်\nသမ္ဗန္ဓ\nအာမေဍိက်\nဝိဘတ်\nနာမ်မကိတ်ညဳ\nပစ္စဲ\nဝါကျကဆံၚ်အကာဲအရာ\nAcronym\nAbbreviation\nInitialism\nပွမထညောံ\nအဆက်ဂတ\nအဆက်လက္ကရဴ\nသၚ်္ကေတ\nအက္ခရ်\nLigature\nIdiom\nဝါကျ\nNumber\nဂၞန်သၚ်္ချာ\nCardinal number\nOrdinal number\nCardinal numeral\nOrdinal numeral\nPersonal pronoun\nဖျေံလဝ်သန္နိဋ္ဌာန်\nDemonstrative determiner\nClitic\nInfix\nInterfix\nAffix\nCircumfix\nCircumposition\nCounter\nခေန်ဂျဳ\nKanji reading\nHanja reading\nHirigana letter\nKatakana letter\nPinyin\nဗျဉ်ဟာန်\nHanzi\nHanja\nProverb\nExpression\nParticle\nInfinitive particle\nPossesive adjective\nကဆံၚ်အကာဲအရာ\nPhrasal verb\nလုပ်ကၠောန်စွံလဝ်\nGerund\nInterrogative auxiliary verb\nPronominal adverb\nAdnominal\nAbstract pronoun\nConjunction particle\nCombining form\nတံရိုဟ်\nPinyin syllable\nဝဏ္ဏ\nHirigana character\nKatakana character\nJyutping syllable\nGismu\nLujvo\nBrivla\nClassifier\nPredicative\nMeasure word\nCorrelative\nPreverb\nPrenoun\nNoun stem\nNoun class\nCombined-kana character\nCmavo\n';
while (headerLevel.nextSibling) {
if (/^h[34]$/i.test(headerLevel.nodeName) && !/နိရုတ်|ဗွဟ်ရမ္သာၚ်|ပွံၚ်နဲတၞဟ်/.test(headerLevel.innerHTML)) {
headerLevel = headerLevel.nodeName.toLowerCase();
break;
}
headerLevel = headerLevel.nextSibling
}
currentBoxToBeAdded = newNode('div', {
'style': 'position:fixed;top:500px;'
})
new AdderWrapper(editor, {
createForm: function() {
return theform = newNode('form', currentFocus = newNode('input', {
'style': 'font-size: 0.8em;font-size: ' + ((headerLevel == 'h3') ? '132%' : '116%') + ';font-weight: bold;font-family: sans-serif;width:auto;',
'placeholder': 'Part of speech',
'rows': 1,
'name': 'pos',
focus: function() {
currentFocus = this
}
}), newNode('input', {
'type': 'submit',
'value': 'Preview'
}), newNode('input', {
'type': 'button',
'value': 'Cancel',
click: function() {
theform.style.display = 'none';
hoverNewPOS(null);
defeditoptions.addingPOS = false;
document.onmousemove = null;
document.body.style.cursor = '';
}
}), newNode('br'), newNode('input', {
'style': 'width:300px;font-family:monospace;',
'placeholder': '{\{head}}',
'name': 'inflline',
focus: function() {
currentFocus = this
}
}), docLink = newNode('a', {
style: "margin-left:5px;display:none;",
'target': '_blank'
}, "Help?"), newNode('ol', newNode('li', newNode('input', {
'size': 100,
'disabled': 'disabled'
}))))
},
fields: {
'pos': function(txt, error) {
return poslist.indexOf('\n' + txt + '\n') > -1 ? txt : error('Please select a valid part of speech.')
},
'inflline': function(txt, error) {
return txt || "{" + "{head}}"
}
},
onsubmit: function(values, render) {
addedwikitext = '{' + '{subst:=}}==' + (headerLevel == 'h4' ? '=' : '') + values.pos + (headerLevel == 'h4' ? '=' : '') + '===\n' + values.inflline
hoverNewPOS(null);
document.onmousemove = null;
defeditoptions.addingPOS = false;
document.body.style.cursor = '';
render(addedwikitext, function(res) {
theform.style.display = 'none'
temp = document.createDocumentFragment();
temp.appendChild(temp_ = newNode('div', {
'class': 'fakeheader'
}));
temp_.innerHTML = res;
temp.appendChild(newNode('ol', newNode('li', ' ', newNode('span'))));
theform.parentNode.insertBefore(temp, theform);
prefakeheaders = 0
findnumberofheaders = theform.previousSibling.previousSibling;
while (true) {
if (findnumberofheaders.previousSibling) {
findnumberofheaders = findnumberofheaders.previousSibling;
if (/h[2-6]/i.test(findnumberofheaders.nodeName)) {
findnumberofheaders = Number(findnumberofheaders.lastChild.getElementsByTagName('a')[0].href.split("section=")[1]);
break;
}
findnumberofheaders.className == 'fakeheader' && prefakeheaders++;
} else {
findnumberofheaders.parentNode.insertBefore(newNode('h2', languageHeaderEditButtons[currentLanguageTab].cloneNode(true), {
'style': 'display:none;'
}), findnumberofheaders);
}
}
var updatecatscallback;
editor.addEdit({
'edit': function(wikitext) {
return ccc = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}([\\s\\S]*?\n\\{\\{subst:\\=\\}\\}==" + (headerLevel == 'h4' ? '=' : '') + "[^=]){" + prefakeheaders + "}[\\s\\S]*?(?=(\n=|\n----|\n\\{\\{subst:\\=\\}\\}==" + (headerLevel == 'h4' ? '=' : '') + "[^=]|$)))"), "$1\n" + addedwikitext + "\n\n# {" + "{rfdef}}\n")
},
'redo': function() {
theform.style.display = 'none';
theform.parentNode.insertBefore(temp, theform);
updatecatscallback = window.tabbedLanguages && updateCategories(theform.parentNode, addedwikitext)
},
'undo': function() {
theform.style.display = 'block';
temp.appendChild(temp_);
temp.appendChild(theform.previousSibling);
updatecatscallback && updatecatscallback()
},
'summary': '+pos ' + values.pos
}, temp_)
makedefsidebox(theform.previousSibling.firstChild)();
editor.withCurrentText(function() {
theform.previousSibling.getElementsByTagName('input')[0].value = '';
theform.previousSibling.getElementsByTagName('input')[0].focus()
})
})
}
}, currentBoxToBeAdded)
cancelhover || setUpBoxToBeAdded();
theform.firstChild.focus()
function hoverNewPOS(thefunction) {
for (var ii = bodyContent.getElementsByTagName(headerLevel), i = 0; i < ii.length; i++) {
if (!/^Etymology|Pronunciation|Alternative\sforms$/.test(ii[i].firstChild.innerHTML))(ii[i].parentNode.className == 'fakeheader' ? ii[i].parentNode : ii[i]).onmouseover = thefunction;
}
if (window.tabbedLanguages) {
for (var i = 0; i < languageContainers.length; i++)
languageContainers[i].lastChild.onmouseover = thefunction;
} else {
ii = bodyContent.getElementsByTagName('hr');
for (var i = 0; i < ii.length; i++)
ii[i].onmouseover = thefunction;
}
}
function hoverNewPOS_() {
currentBoxToBeAdded.style.display = 'none';
this.parentNode.insertBefore(theform, this);
currentFocus.focus();
updateDocLink()
}
cancelhover || hoverNewPOS(hoverNewPOS_);
// autocomplete pos field
theform.firstChild.onkeydown = function(e) {
if ((e || event).keyCode == 9) {
theform.getElementsByTagName("input")[3].focus();
return false
}
}
theform.firstChild.onkeyup = function(e) {
if (this.value[0] != this.value.charAt(0).toUpperCase()) this.value = this.value.charAt(0).toUpperCase() + this.value.substr(1);
e = (e || event).keyCode;
if (!(e >= 33 && e <= 40) && e != 8 && e != 46 && e != 27 && e != 16 && this.value) {
if (poslist.indexOf('\n' + this.value) > -1) {
if (this.setSelectionRange) this.setSelectionRange([this.value.length, this.value = poslist.match(RegExp(this.value + "[^\n]*"))][0], this.value.length);
else if (this.createTextRange) {
var z = this.createTextRange();
z.moveEnd('character', 0 - z.move('character', [this.value.length, this.value = poslist.match(RegExp(this.value + "[^\n]*"))][0]) + this.value.length);
z.select()
}
}
updateDocLink()
}
}
}
}
window.updateCategories = function(container, newvalue, oldvalue) {
var addedCategories = [],
removedCategories = []
new mw.Api().get({
action: "parse",
prop: "categorieshtml",
title: mw.config.get('wgPageName'),
text: newvalue
}).then(function(r) {
var e = r.parse.categorieshtml['*'].match(/\<li.*?\/li\>/g);
var d = container.lastChild.lastChild;
var f = document.createElement('ul');
for (var i = 0; e && i < e.length; i++) {
f.innerHTML = e[i];
if (d.innerHTML.indexOf(f.firstChild.innerHTML) == -1) {
addedCategories.push(d.insertBefore(f.lastChild, d.lastChild))
}
}
oldvalue && new mw.Api().get({
action: "parse",
prop: "categorieshtml",
title: mw.config.get('wgPageName'),
text: oldvalue
}).then(function(o) {
e = o.parse.categorieshtml['*'].match(/\<li.*?\/li\>/g)
for (var i = 0; e && i < e.length; i++) {
f.innerHTML = e[i];
if (r.parse.categorieshtml['*'].indexOf(f.firstChild.innerHTML) == -1 && d.innerHTML.indexOf(f.firstChild.innerHTML) != -1) {
var lis = d.getElementsByTagName('li')
for (var ii = 0; ii < lis.length; ii++) {
if (lis[ii].firstChild.innerHTML == f.firstChild.firstChild.innerHTML) {
removedCategories.push(lis[ii]);
lis[ii].style.display = 'none';
break;
}
}
}
}
})
});
return function() {
for (var i = 0; i < addedCategories.length; i++) {
container.lastChild.lastChild.removeChild(addedCategories[i])
}
for (var i = 0; i < removedCategories.length; i++) {
removedCategories[i].style.display = '';
}
}
}
function addgloss(qq) {
var senseidform;
findlang(qq.parentNode, function(findlang_) {
if (qq.addinggloss) {
return
}
qq.addinggloss = true;
editor = new Editor();
new AdderWrapper(editor, {
'createForm': function() {
return senseidform = newNode('form', {
'style': 'display:inline; padding-right:20px;'
}, newNode('input', {
'size': 30,
'name': 'senseid'
}), newNode('input', {
'type': 'submit',
'value': 'Add'
}), newNode('input', {
'type': 'button',
'value': 'Cancel',
'click': function() {
qq.removeChild(senseidform);
qq.addinggloss = false
}
}), newNode('a', {
href: '/wiki/Help:Glosses'
}, 'Help?!'))
},
'fields': {
'senseid': util.validateNoWikisyntax('gloss', true)
},
'onsubmit': function(values) {
var findnumberofheaders = findnumberofheaders_(qq)
var findnumberofdefs = findnumberofdefs_(qq)
senseidform.lastChild.innerHTML = '';
var nymB = qq.getElementsByTagName('li')[1]
editor.addEdit({
edit: function(wikitext) {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + ") ?"), "$1{" + "{senseid|" + findlang_ + "|" + values.senseid + "}}");
return ccc = wikitext;
},
redo: function() {
senseidform.style.display = "none";
$([nymB.firstChild, nymB.nextSibling.firstChild]).removeClass('DSBinactive');
nymB.firstChild.title = nymB.nextSibling.firstChild.title = ''
},
undo: function() {
senseidform.style.display = "inline";
$([nymB.firstChild, nymB.nextSibling.firstChild]).addClass('DSBinactive');
nymB.firstChild.title = 'Please add a gloss before adding synonyms.';
nymB.nextSibling.firstChild.title = 'Please add a gloss before adding antonyms.'
},
summary: "+senseid: " + values.senseid
})
}
}, qq, qq.childNodes[1])
senseidform.firstChild.focus()
editor.withCurrentText(function(wikitext) {
wikitext = wikitext.match("==" + (window.loadedTabs ? tabbedLanguages[currentLanguageTab] : $(findtopli(qq).parentNode).prevUntil("h2").eq(-1).prev().find(".mw-headline").text()) + "==\n[\\s\\S]+?(----|$)")[0];
if (!wikitext) return;
var senses = '',
matches = wikitext.match(/(\{\{sense\||\{\{trans-top\|)[^\}]+(?=\}\})/g)
if (!matches) return;
for (var ms = 0; ms < matches.length; ms++) {
senses += "\n" + matches[ms].split("|")[1]
}
if (!senses) return;
senseidform.firstChild.onkeyup = function(e) {
e = (e || event).keyCode;
if (!(e >= 33 && e <= 40) && e != 8 && e != 46 && e != 27 && e != 16 && this.value) {
if (senses.indexOf('\n' + this.value) > -1) {
if (this.setSelectionRange) this.setSelectionRange([this.value.length, this.value = senses.match(RegExp("\n" + this.value + "[^\n]*")).toString().substr(1)][0], this.value.length);
else if (this.createTextRange) {
var z = this.createTextRange();
z.moveEnd('character', 0 - z.move('character', [this.value.length, this.value = senses.match(RegExp("\n" + this.value + "[^\n]*")).toString().substr(1)][0]) + this.value.length);
z.select()
}
}
}
}
})
})
}
function editgloss(qq) {
editor = new Editor()
editor.withCurrentText(function(wikitext) {
if (qq.editinggloss) {
return
}
qq.editinggloss = true;
var findnumberofheaders = findnumberofheaders_(qq)
var findnumberofdefs = findnumberofdefs_(qq)
var senseidform;
var oldsenseid;
new AdderWrapper(editor, {
'createForm': function() {
var thisId = "a" + String(Math.random()).replace(".", "")
oldsenseid = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "\\s?)"), '').match(/^\{\{senseid\|[^\\|]*\|([^\}]*)/)[1]
return senseidform = newNode('form', {
'style': 'display:inline; padding-right:20px; '
}, newNode('input', {
'size': 30,
'name': 'senseid',
'value': oldsenseid
}), newNode('input', {
'type': 'checkbox',
'id': thisId,
'name': 'changematching',
style: 'display:' + (window.tabbedLanguages ? 'inline' : 'none')
}), newNode('label', {
'for': thisId,
style: 'display:' + (window.tabbedLanguages ? 'inline' : 'none')
}, 'Edit matching glosses'), newNode('input', {
'type': 'submit',
'value': 'Change'
}), newNode('input', {
'type': 'button',
'value': 'Cancel',
'click': function() {
qq.editinggloss = false;
qq.removeChild(senseidform);
}
}), newNode('a', {
href: '/wiki/Help:Glosses'
}, 'Help?!'))
},
'fields': {
'senseid': util.validateNoWikisyntax('gloss', true),
'changematching': 'checkbox'
},
'onsubmit': function(values) {
var ttables = [],
sensetemps = [],
backups = [];
if (values.changematching) {
ttables = jQuery(".NavHead", languageContainers[currentLanguageTab]).filter(function() {
if (this.parentNode.getElementsByTagName("table")[0].className != "translations") return false;
for (var i = 0; i < this.childNodes.length; i++) {
if (this.childNodes[i].nodeType == 3 || this.childNodes[i].className == 'wt-edit-recurse') {
return (this.childNodes[i].nodeValue || this.childNodes[i].innerHTML) == oldsenseid;
}
}
})
sensetemps = jQuery(".qualifier-content", languageContainers[currentLanguageTab]).filter(function() {
return this.parentNode.nextSibling.nextSibling.className == "ib-colon" && this.innerHTML == oldsenseid;
})
}
editor.addEdit({
edit: function(wikitext) {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "\\s?(\{\{senseid\\|[^\\|]*\\|))[^\}]*"), "$1" + values.senseid);
if (values.changematching) {
var asd = wikitext.match('==' + tabbedLanguages[currentLanguageTab] + '==\n[\\s\\S]+?(\n==[^=]|$)');
wikitext = wikitext.replace(asd[0], asd[0].replace(RegExp("\\{\\{(sense|trans-top)\\|" + oldsenseid + "\\}\\}", "g"), "{\{$1\|" + values.senseid + "}}"))
}
return ccc = wikitext
},
redo: function() {
senseidform.style.display = "none";
for (var i = 0; i < ttables.length; i++) {
backups.push(document.createDocumentFragment());
while (ttables[i].childNodes[1]) {
backups[backups.length - 1].appendChild(ttables[i].childNodes[1]);
}
ttables[i].appendChild(document.createTextNode(values.senseid))
}
for (var i = 0; i < sensetemps.length; i++) {
backups.push(document.createDocumentFragment());
backups[backups.length - 1].appendChild(sensetemps[i].firstChild);
sensetemps[i].appendChild(document.createTextNode(values.senseid))
}
},
undo: function() {
senseidform.style.display = "inline";
for (var i = 0; i < ttables.length; i++) {
ttables[i].removeChild(ttables[i].childNodes[1]);
ttables[i].appendChild(backups.shift())
}
for (var i = 0; i < sensetemps.length; i++) {
sensetemps[i].removeChild(sensetemps[i].firstChild)
sensetemps[i].appendChild(backups.shift())
}
},
summary: "senseid: " + values.senseid
})
}
}, qq, qq.childNodes[1])
senseidform.firstChild.focus()
})
}
function setupnymadder(qq, nymtype) {
var passtheseheaders = "Usage notes|Inflection|Conjugation|Declension|Quotations",
nymtypelist = ["လဟီု", "ဝေါဟာလွာ", "ဝေါဟာဒစး", "ဝေါဟာတၟုပ်", "ဆက်လ္ၚတ်", "ပွံၚ်အက္ခရ်နဲတၞဟ်"]
for (var x = 0; nymtypelist[x] != nymtype; x++)
passtheseheaders += "|" + nymtypelist[x];
if (qq.parentNode.parentNode.nodeName.toLowerCase() == "li") qq = qq.parentNode.parentNode;
var findnumberofheaders = findnumberofheaders_(qq)
var findnumberofdefs = findnumberofdefs_(qq.parentNode.getElementsByTagName('li')[0])
for (var findheaderlevel = qq.parentNode; !/^h\d$/i.test(findheaderlevel.nodeName); findheaderlevel = findheaderlevel.previousSibling);
findheaderlevel = Number(findheaderlevel.nodeName.match(/\d/));
var senseidencoded = []
editor = new Editor()
editor.withCurrentText(function(wikitext) {
// Find nym header, or add it if it doesn't exist
var qqq = qq.parentNode;
while (!((qqq.className == "fakesubheader" || /h\d/i.test(qqq.nodeName)) && !qqq.innerHTML.match(passtheseheaders) || qqq.className == "printfooter" || qqq.className == "fakeheader" || qqq.className == "catlinks")) {
qqq = qqq.nextSibling
}
if (!qqq.innerHTML.match(nymtype)) {
qqq = qqq.parentNode.insertBefore(newNode('div', {
'class': 'fakesubheader'
}, newNode('h' + (findheaderlevel + 1), nymtype)), qqq);
}
// relevant vars:
// findheaderlevel is the the headerlevel of the most recent header above the ol
// qq is still the li itself
// qqq is the (possibly newly added) nym header
// find all relevant senseids, make an array of them, the whole template in each
var senseid = wikitext.replace(
RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + ")"), '').replace(/\n\n[\s\S]*$/, '').match(/\{\{senseid\|[^\\|]*\|[^\}]*/g)
if (!senseid) {
alert("No glosses were found. Click \"Add gloss\" to attach a gloss to the definition before adding " + nymtype.toLowerCase() + ".");
return
}
// run through senseids, checking for a corresponding span id'd nymtype-langcode-id, adding them encased in an li in a soon-to-be-parsed temp variable if not found, otherwise suppressing new form creation
temp = ""
var nymformexists = []
for (var i = 0; i < senseid.length; i++) {
if (document.getElementById(senseidencoded[i] = nymtype + "-" + encodeURIComponent(senseid[i].split("|")[1] + "-" + senseid[i].split("|")[2]).replace(/%20/g, '_').replace(/%3A/g, ':').replace(/%/g, '.'))) {
nymformexists[i] = true
} else {
temp += "* {" + "{sense|" + senseid[i].split("|")[2] + "}} <span id='" + nymtype + "-" + senseid[i].split("|")[1] + "-" + senseid[i].split("|")[2] + "'></span>\n"
}
}
new mw.Api().parse(temp, {
title: mw.config.get('wgPageName'),
pst: true, //pst makes subst work as expected
disablelimitreport: true
}).then(function(res) {
var qqqq = newNode('span')
qqqq.innerHTML = res
qqqq = qqq.parentNode.insertBefore(qqqq.firstChild, qqq.nextSibling) // the ul containing the form-holder spans, right below the nym header
for (var i = 0; i < senseid.length; i++) {
if (!nymformexists[i]) {
setupnymadder2(i, senseid, wikitext)
}
}
if (qqqq.getElementsByTagName && qqqq.getElementsByTagName('li').length == 0) {
qqqq.parentNode.removeChild(qqqq)
}
scroll(0, jQuery(qqq).offset().top)
});
})
function setupnymadder2(i, senseid, wikitext) {
var nymtype2 = nymtype.slice(0, -1).toLowerCase()
var x = document.getElementById(senseidencoded[i]);
var theform
new AdderWrapper(editor, {
'createForm': function() {
return theform = newNode('form', {
'style': 'display:inline;'
}, newNode('input', {
'name': 'nym'
}), newNode('input', {
'value': 'Add',
'type': 'submit'
}))
},
'fields': {
'nym': util.validateNoWikisyntax(nymtype2, true)
},
'onsubmit': function(values, render) {
theform.getElementsByTagName('input')[0].value = ""
var firstnym = !theform.parentNode.parentNode.getElementsByTagName('a')[0]
var addedwikitext = (firstnym ? '' : ', ') + "{" + "{l|" + senseid[i].split("|")[1] + "|" + values.nym + "}}"
render(addedwikitext, function(res2) {
var nodeToInsert = newNode('span')
nodeToInsert.innerHTML = res2
editor.addEdit({
edit: function(wikitext) {
// unindent
findnumberofdefs = findnumberofdefs_(qq.parentNode.getElementsByTagName('li')[0])
if (wikitext.substr(wikitext.length - 1, 1) != "\n") {
wikitext += "\n"
}
if (!wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + ")"), '').replace(RegExp("(\n(=|\\{\\{subst:=\\}\\})={" + (findheaderlevel - 1) + "}[^=][\\s\\S]*$)"), '').match(RegExp(nymtype + "={" + findheaderlevel + "}"))) {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "[\\s\\S]*?(\n(?=(\\{\\{subst:=\\}\\}|=)=+(?=[^=])(?!(" + passtheseheaders + ")))|$))"), "$1{" + "{subst:=}}===" + (findheaderlevel == 4 ? "=" : "") + nymtype + (findheaderlevel == 4 ? "=" : "") + "====\n\n")
}
if (firstnym) {
var passthesesenseids = [];
for (var ii = 0; ii < i; ii++) {
passthesesenseids.push("\\* \\{\\{sense\\|" + senseid[ii].split("|")[2] + "\\}\\}")
}
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "[\\s\\S]*?=" + nymtype + "=+[\\s\\S]*?\n" + (passthesesenseids.length > 0 ? "(?!(" + passthesesenseids.join("|") + ")))" : ")")), "$1* {" + "{sense|" + senseid[i].split("|")[2] + "}} " + addedwikitext + "\n")
} else {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}[\\s\\S]*?=" + nymtype + "=+[\\s\\S]*?\\{\\{sense\\|" + senseid[i].split("|")[2] + "\\}\\}.*)"), "$1" + addedwikitext)
}
return ccc = wikitext;
},
redo: function() {
theform.parentNode.parentNode.insertBefore(nodeToInsert, theform.parentNode)
},
undo: function() {
theform.parentNode.parentNode.removeChild(nodeToInsert)
},
summary: "+" + nymtype2 + " [[" + values.nym + "]]"
}, nodeToInsert)
})
}
}, x)
// sort the lis
var passthesesenseids = [];
for (var ii = 0; ii < i; ii++) {
passthesesenseids.push(senseid[ii].split("|")[2])
}
for (var xx = x.parentNode.parentNode.nextSibling; xx.nextSibling && !/h\d/i.test(xx.nodeName) && xx.className != "fakesubheader" && xx.nodeName.toUpperCase() != "UL"; xx = xx.nextSibling);
if (xx.nodeName.toUpperCase() == "UL") {
var xxx = xx.getElementsByTagName('li')
for (var xxxx = xxx.length; xxxx--;) {
var xxxxx = xxx[xxxx].getElementsByTagName("span")[3]
if (xxxxx && xxxxx.innerHTML == senseid[i].split("|")[2]) {
x.parentNode.parentNode.removeChild(x.parentNode);
xxx[xxxx].appendChild(x);
break;
}
if (xxxxx && passthesesenseids.length && RegExp(passthesesenseids.join("|")).test(xxxxx.innerHTML)) {
xxx[xxxx + 1] ? xx.insertBefore(x.parentNode, xxx[xxxx]) : xx.appendChild(x.parentNode);
break;
}
}
if (xxxx == -1) {
xx.insertBefore(x.parentNode, xx.firstChild)
}
}
}
}
jQuery(document).ready(function() {
var disablebutton = document.getElementById('YRDefsideboxes-disable-button');
if (disablebutton) {
disablebutton.innerHTML = "";
var toggle = newNode('span', {
click: function() {
if ($.cookie("DisableYREdit")) {
$.cookie("DisableYREdit", null, {
path: "/"
})
toggle.innerHTML = "Disable definition editing options."
} else {
$.cookie("DisableYREdit", 1, {
expires: 30,
path: "/"
})
toggle.innerHTML = "Enable definition editing options."
}
}
}, ($.cookie("DisableYREdit") ? "Enable" : "Disable") + " definition editing options.")
disablebutton.appendChild(toggle);
}
if (mw.config.get('wgAction') == 'view' && (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgPageName') == "Wiktionary:Sandbox") && !/&printable=yes|&diff=|&oldid=/.test(window.location.search) && !$.cookie("DisableYREdit") && !window.DisableYREdit && !window.loadedYREdit) {
window.loadedYREdit = true;
for (var ols = document.getElementsByTagName('ol'), ii = 0; ii < ols.length; ii++) {
if (ols[ii].className != "references") {
for (var lis = ols[ii].getElementsByTagName('li'), i = 0; i < lis.length; i++) {
if (lis[i].parentNode == ols[ii] && ols[ii].parentNode.parentNode.nodeName != "UL") makedefsidebox(lis[i]);
}
}
}
mw.util.addPortletLink('p-tb', 'javascript:addPOSHeader()', 'Add part of speech');
defsidebuttons = [0]
defeditoptions = {
addingPOS: false
}
}
})
// </nowiki>
ardljb4s9pq64bpkcm9i36p4mz2zhl7
396597
396596
2026-06-08T14:30:50Z
咽頭べさ
33
396597
javascript
text/javascript
// Newer version of User:Yair rand/editor.js
// <nowiki>
// ******** imported from [[MediaWiki:Gadget-LegacyScriptsNewNode.js]] ********
var newNode = window.newNode = function newNode(tagname) {
var node = document.createElement(tagname);
for (var i = 1; i < arguments.length; i++) {
var argument = arguments[i];
if (typeof argument == 'string') { //Text
node.appendChild(document.createTextNode(argument));
} else if (typeof argument == 'object') {
if (argument instanceof Node) { // If it is a DOM Node
node.appendChild(argument);
} else { // Attributes (hopefully)
for (var j in argument) {
if (j === 'class') { // Classname different because...
node.className = argument[j];
} else if (j == 'style') { // Style is special
node.style.cssText = argument[j];
} else if (typeof argument[j] == 'function') { // Basic event handlers
node.addEventListener(j, argument[j], false);
} else {
node.setAttribute(j, argument[j]); //Normal attributes
}
}
}
}
}
return node;
};
// ****************************************************************************
var autoTranslitScripts = {
"Geor": true
};
window.makedefsidebox = function(q) {
function clickiconfunction() {
var moreoptions, originalHeight, buttons;
function uncollapse() {
$(moreoptions).slideUp();
$("body").off("click", uncollapse);
}
editdefinition(q);
if ($('>.addusexbutton', q).length === 0) {
buttons = q.insertBefore(newNode('div', {
'class': 'addusexbutton'
}, newNode('a', '+Add example sentence', {
'click': function() {
setupusexadder(q);
}
}), newNode('a', '+Add quotation', {
'click': function() {
setupquoteadder(q);
}
}), newNode('a', 'ပဵု ►', {
'click': function() {
$(moreoptions).slideDown();
setTimeout(function() {
$("body").click(uncollapse);
}, 16);
}
}), newNode('span', {
'style': 'display:inline-block;'
}, moreoptions = newNode('ul', newNode('li', q.className ? newNode('a', 'Edit gloss', {
'click': function() {
editgloss(q);
}
}) : newNode('a', 'Add gloss', {
'click': function() {
addgloss(q);
}
})), newNode('li', newNode('a', q.className ? undefined : {
'class': 'DSBinactive',
'title': 'Please add a gloss before adding synonyms.'
}, {
'click': function() {
setupnymadder(q, "ဝေါဟာတၟုပ်");
}
}, 'Add synonyms')), newNode('li', newNode('a', q.className ? undefined : {
'class': 'DSBinactive',
'title': 'Please add a gloss before adding antonyms.'
}, {
'click': function() {
setupnymadder(q, "ဝေါဟာလွာ");
}
}, 'Add antonyms')), newNode('li', newNode('a', {
'href': mw.config.get('wgScript') + '?title=User_talk:Yair_rand/editor2.js&action=edit§ion=new'
}, 'Give feedback on this tool')), newNode('li', newNode('a', {
click: function() {
$.cookie("DisableYREdit", 1, {
path: '/'
});
location.href = location.href;
}
}, 'Disable this tool'))))), $('>dl,>ul,>ol', q)[0] || null);
}
}
q.insertBefore(
newNode('span', {
'class': 'defEditButton'
}, newNode('span', {
'click': clickiconfunction,
'title': 'Edit'
})), q.firstChild);
return clickiconfunction;
}
function setupusexadder(qq) {
var x, y;
var usexform;
var findsubdef = (qq.parentNode.parentNode.nodeName.toLowerCase() == "li" ? "#" : "") + (qq.parentNode.parentNode.parentNode.parentNode.nodeName.toLowerCase() == "li" ? "#" : "")
editor = new Editor()
findlang(qq.parentNode, function(findlang_) {
var findscript = (new LangMetadata()).getScripts(findlang_),
selectedscript = findscript[0] || "Mymr";
if (qq.getElementsByTagName('dl')[0] && qq.getElementsByTagName('dl')[0].parentNode == qq) x = qq.getElementsByTagName('dl')[0];
else if ($(">ul", qq).length > 0) x = qq.insertBefore(newNode('dl'), $(">ul", qq)[0]);
else x = qq.appendChild(newNode('dl'));
x.appendChild(y = newNode('dd'))
new AdderWrapper(new Editor(), {
'createForm': function() {
var x, i = 0,
y = function() {
selectedscript = this.value;
usexform.getElementsByTagName('dd')[0].style.display = this.value == 'Mymr' ? 'none' : 'block'
}
if (findscript.length > 1) {
for (x = newNode('select', {
'name': 'script',
'change': y
}); i < findscript.length; i++) {
x.appendChild(newNode('option', {
'value': findscript[i]
}, findscript[i]))
}
} else {
x = newNode('input', {
'name': 'script',
'value': findscript[0] || "Mymr",
'style': "width:50px;",
'change': y
})
}
return usexform = newNode('form', {
'style': 'display:inline;'
}, newNode('input', {
'size': 100,
'placeholder': 'Example sentence',
'name': 'examplesentence'
}), newNode('span', {
'style': 'display:' + (findscript.length == 1 ? "none" : "inline") + ";"
}, 'Script: ', x), newNode('div', {
'class': "DSBRedButton",
'click': function() {
usexform.style.display = 'none'
}
}, newNode('div', 'Cancel')), newNode('div', {
'class': "DSBGreenButton",
'click': function() {
usexform.onsubmit()
}
}, newNode('div', "ဗဵုရံၚ်စမ် ►")), newNode('input', {
'type': 'submit',
'style': 'visibility:hidden;width:0px;'
}), newNode('dl', (findlang_ == "mnw" ? {
'style': 'display:none;'
} : ''), newNode('dd', 'Transliteration: ', ((findscript[0] == 'Mymr' || !findscript[0]) ? {
'style': 'display:none;'
} : ''), newNode('input', {
'size': '100px',
name: 'transliteration'
})), newNode('dd', 'Translation: ', newNode('input', {
'size': '100px',
name: 'translation'
}))))
},
'fields': {
'examplesentence': function(txt, error) {
return util.validateNoWikisyntax('example sentence', true)(txt, error)
},
'transliteration': function(txt, error) {
return txt || '';
},
'translation': function(txt, error) {
if (findlang_ != "mnw") {
return util.validateNoWikisyntax('translation', true)(txt, error);
}
return '';
},
'script': util.validateNoWikisyntax('script', true)
},
'onsubmit': function(values, render) {
var renderWikitext = "";
if (findlang_ === "mnw")
renderWikitext = "''" + values.examplesentence + "''";
else {
renderWikitext = "{" + "{ux|" + findlang_ + "|" + values.examplesentence + "|" + values.translation;
if (values.script) {
renderWikitext += "|sc=" + values.script;
if (!(values.script in autoTranslitScripts) && values.transliteration)
renderWikitext += "|tr=" + values.transliteration;
}
renderWikitext += "}}";
}
render(renderWikitext, function(newhtml) {
var findnumberofheaders = findnumberofheaders_(qq);
var findnumberofdefs = findnumberofdefs_(qq);
var usextobeadded = newNode('span')
usextobeadded.innerHTML = newhtml.replace(/<p>|<\/p>/g, '');
editor.addEdit({
edit: function(wikitext) {
var usexWikitext = renderWikitext;
wikitext = wikitext.replace(RegExp(
"(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "[\\s\\S]*?)\n(?!#" + findsubdef + ":)|$"), "$1\n#" + findsubdef + ":" + usexWikitext + "\n");
ccc = wikitext;
return wikitext;
},
redo: function() {
usexform.parentNode.appendChild(usextobeadded);
usextobeadded.style.display = 'block';
usexform.style.display = "none";
y.style.display = 'block'
},
undo: function() {
usexform.parentNode.removeChild(usextobeadded);
usexform.style.display = "inline";
},
summary: "+usex: " + values.examplesentence
}, usextobeadded)
})
}
}, y)
usexform.firstChild.focus()
})
}
window.editdefinition = function(qq) {
(new Editor).withCurrentText(function(wikitext) {
if (qq.YREditing) {
return
}
qq.YREditing = true;
var findnumberofheaders = findnumberofheaders_(qq),
findnumberofdefs = findnumberofdefs_(qq)
var temporarydefholder = qq.insertBefore(newNode('span', {
'style': 'display:none;'
}), qq.childNodes[1].nodeName.toLowerCase() != "form" ? qq.childNodes[1] : qq.childNodes[2])
while (qq.childNodes[3] && qq.childNodes[3].nodeName != "DL" && qq.childNodes[3].nodeName != "UL" && qq.childNodes[3].nodeName != "OL" && qq.childNodes[3].className != "HQToggle" && qq.childNodes[3].className != "addusexbutton")
temporarydefholder.appendChild(qq.childNodes[3]);
if (qq.childNodes[2] != temporarydefholder) temporarydefholder.insertBefore(qq.childNodes[2], temporarydefholder.firstChild);
var defform
var olddef = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "\\s?)"), '').match(/^(\{\{senseid\|[^\}]*\}\})?\s?(.*)/)[2]
new AdderWrapper(new Editor(), {
'createForm': function() {
return defform = newNode('form', {
'style': 'width:100%;display:inline-block;margin-bottom:-6px;'
}, newNode('table', {
'style': 'width:100%;'
}, newNode('tr', newNode('td', newNode('input', {
'style': 'height:17px;width:100%;',
'name': 'definition',
'size': 80,
'value': olddef
})
// newNode('input',{type:'submit',value:'Preview'}),
// newNode('input',{type:'button',value:'Cancel',click:function(){temporarydefholder.style.display='inline';defform.style.display='none';qq.YREditing = false}})
), newNode('td', {
'style': 'white-space:nowrap;'
}, newNode('div', {
'class': "DSBRedButton"
}, newNode('div', {
click: function() {
temporarydefholder.style.display = 'inline';
defform.style.display = 'none';
qq.YREditing = false
}
}, "Discard Changes")), newNode('div', {
'class': "DSBGreenButton"
}, newNode('div', {
click: function() {
defform.onsubmit()
}
}, "ဗဵုရံၚ်စမ်အပြံၚ်အလှာဲ ►"))))))
},
'fields': {
'definition': function(txt, error) {
return txt || error("Please specify a definition.")
}
},
'onsubmit': function(values, render) {
render(values.definition, function(newhtml) {
editor = new Editor()
var findnumberofdefs = findnumberofdefs_(qq) // apparently this is sometimes necessary
var addedspan = newNode('span')
addedspan.innerHTML = newhtml
var updatecatscallback;
editor.addEdit({
edit: function(wikitext) {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "\\s?(\{\{senseid\\|[^\}]*\}\})*?)(?!{" + "{senseid\\|).*"), "$1" + values.definition);
ccc = wikitext;
return wikitext
},
redo: function() {
defform.parentNode.insertBefore(addedspan, defform);
defform.style.display = temporarydefholder.style.display = 'none';
updatecatscallback = window.tabbedLanguages && updateCategories(findtopli(defform.parentNode).parentNode.parentNode, values.definition, olddef)
qq.YREditing = false;
},
undo: function() {
defform.parentNode.removeChild(addedspan);
defform.style.display = "inline";
defform.firstChild.firstChild.firstChild.firstChild.value = olddef;
updatecatscallback && updatecatscallback();
qq.YREditing = true;
},
summary: "def: " + values.definition
}, addedspan)
})
}
}, qq, qq.childNodes[1].nodeName.toLowerCase() != "form" ? qq.childNodes[1] : qq.childNodes[2])
})
}
function findtopli(li) {
for (; li.parentNode.parentNode.nodeName.toLowerCase() == "li";) {
li = li.parentNode.parentNode;
}
return li;
}
function findnumberofheaders_(tosearchfrom) {
tosearchfrom = findtopli(tosearchfrom).parentNode;
while (!tosearchfrom.nodeName.match(/^h\d$/i))
tosearchfrom = tosearchfrom.previousSibling;
return Number(tosearchfrom.lastChild.getElementsByTagName('a')[0].href.match(/\d*$/))
}
function findnumberofdefs_(tosearchfrom) {
var findnumberofdefs = [],
tosearchfrom_, findnumberofpredefs = 0,
result;
// subdefinitions
while (tosearchfrom.nodeName.toLowerCase() == "li") {
tosearchfrom_ = tosearchfrom;
findnumberofdefs.splice(0, 0, 0);
while (tosearchfrom) {
if (tosearchfrom.nodeName.toLowerCase() == "li") findnumberofdefs[0]++;
tosearchfrom = tosearchfrom.previousSibling;
}
tosearchfrom = tosearchfrom_.parentNode.parentNode;
}
// in case of any def lists before the current def list under the same header
for (tosearchfrom_ = tosearchfrom_.parentNode.previousSibling; !tosearchfrom_.nodeName.match(/^h\d$/i); tosearchfrom_ = tosearchfrom_.previousSibling) {
if (tosearchfrom_.nodeName.toLowerCase() == "ol") findnumberofpredefs += 1;
}
result = "([\\s\\S]*?\n#[\\s\\S]*?\n(?!#)){" + findnumberofpredefs + "}";
for (var i = 0; i < findnumberofdefs.length; i++) {
result += "([\\s\\S]*?\n" + Array(i + 2).join("#") + "(?![:*#])){" + findnumberofdefs[i] + "}";
}
return result;
}
function findlang(tosearchfrom, callback) {
var tosearchfrom_, findlang__
if (tosearchfrom.parentNode.nodeName.toLowerCase() == "li") tosearchfrom = findtopli(tosearchfrom.parentNode).parentNode;
if (tosearchfrom.parentNode.className == "languageContainer") {
if (tosearchfrom.parentNode.id == "ဌာန်ဒၞာဲအရေဝ်မန်") return callback("mnw");
} else {
tosearchfrom_ = tosearchfrom;
while (tosearchfrom_.nodeName.toLowerCase() != "h2")
tosearchfrom_ = tosearchfrom_.previousSibling;
if (tosearchfrom_.lastChild.innerHTML == "မန်") return callback("mnw");
}
tosearchfrom_ = tosearchfrom;
while (tosearchfrom_ && !/^h\d$/i.test(tosearchfrom_.nodeName) && tosearchfrom_.className != "fakeheader")
tosearchfrom_ = tosearchfrom_.previousSibling;
while (tosearchfrom_ && tosearchfrom_.nodeName.toLowerCase() != "p" && tosearchfrom_.className != "fakeheader")
tosearchfrom_ = tosearchfrom_.nextSibling;
if (tosearchfrom_ && tosearchfrom_.className != "fakeheader" && tosearchfrom_.firstChild && (tosearchfrom_.firstChild.lang || (tosearchfrom_.firstChild.firstChild && tosearchfrom_.firstChild.firstChild.lang) || (tosearchfrom_.firstChild.firstChild && tosearchfrom_.firstChild.firstChild.firstChild && tosearchfrom_.firstChild.firstChild.firstChild.lang))) {
return callback(tosearchfrom_.firstChild.lang || tosearchfrom_.firstChild.firstChild.lang || tosearchfrom_.firstChild.firstChild.firstChild.lang)
}
if (tosearchfrom.parentNode.className == "languageContainer") findlang__ = tosearchfrom.parentNode.id.split("container")[0];
else {
while (tosearchfrom.nodeName.toLowerCase() != "h2")
tosearchfrom = tosearchfrom.previousSibling;
findlang__ = (findlang__ = tosearchfrom.getElementsByTagName("span")[0]).innerText || findlang__.textContent
}
window.languagecodefinder_preload = window.languagecodefinder_preload || mw.loader.getScript('https://mnw.wiktionary.org/w/index.php?title=User:Yair_rand/languagecodefinder.js&action=raw&ctype=text/javascript');
window.languagecodefinder_preload.always( function() {
window.languagenametocode && languagenametocode[findlang__] && callback(languagenametocode[findlang__])
});
}
function setupquoteadder(q) {
findlang(q.parentNode, function(findlang_) {
var z;
if (!$(".HQToggle a", q)[0]) {
z = q.appendChild(document.createElement("ul"))
setupHiddenQuotes(q);
} else {
z = $(">ul", q)[0];
}
if (z.style.display == 'none') {
$(".HQToggle a", q).click();
}
var zz = z.appendChild(document.createElement("li")),
quoteform;
var findsubdef = q.parentNode.parentNode.nodeName.toLowerCase() == "li" ? "#" : "",
editor = new Editor();
new AdderWrapper(editor, {
'createForm': function() {
return quoteform = newNode('form', {
'style': 'display:inline;'
}, 'Year: ', newNode('input', {
'name': 'year',
'size': 4
}), ' Author: ', newNode('input', {
'name': 'author',
'size': 20
}), ' Source title: ', newNode('input', {
'name': 'source',
'size': 20
}), ' Publisher: ', newNode('input', {
'name': 'publisher',
'size': 20
}), ' Page(s): ', newNode('input', {
'name': 'page',
'size': 5
}), newNode('dl', newNode('dd', 'Quotation: ', newNode('input', {
'name': 'quotation',
'size': 40
}), newNode('div', {
'class': "DSBRedButton",
'click': function() {
z.removeChild(zz)
}
}, newNode('div', 'Cancel')), newNode('div', {
'class': "DSBGreenButton",
'click': function() {
quoteform.onsubmit()
}
}, newNode('div', "ဗဵုစမ် ►")), newNode('input', {
'type': 'submit',
'style': 'visibility:hidden;width:0px;'
}), newNode('dl', {
'style': 'display:' + (findlang_ == "mnw" ? "none" : "block")
}, newNode('dd', 'Translation: ', newNode('input', {
'size': 40,
'name': 'translation'
}))))))
},
'fields': {
'quotation': util.validateNoWikisyntax('quotation', true),
'year': util.validateNoWikisyntax('year', true),
'author': function(t) {
return t
},
'source': function(t) {
return t ? ", ''" + t + "''" : ''
},
'publisher': function(t) {
return t ? ", " + t : ''
},
'page': function(t) {
return t ? (/\-/.test(t) ? "pages " + t : "page " + t) : t
},
'translation': function(t) {
return t
}
},
'onsubmit': function(values, render) {
var topline = "'''" + values.year + "'''" + (values.author ? ", " + values.author : '') + values.source + values.publisher + (values.page ? ", " + values.page : '')
render(topline + "\n:" + values.quotation + (values.translation ? "\n:" + values.translation : ""), function(newhtml) {
var findnumberofheaders = findnumberofheaders_(q),
findnumberofdefs = findnumberofdefs_(q),
quotetobeadded = newNode('span', {
'style': 'display:block;'
});
quotetobeadded.innerHTML = newhtml.replace(/\<p\>|\<\/p\>/g, '');
editor.addEdit({
'edit': function(wikitext) {
return ccc = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "[\\s\\S]*?)\n(?!#" + findsubdef + "[:\*])|$"), "$1\n#" + findsubdef + "*" + topline + "\n#" + findsubdef + "*:" + values.quotation + (values.translation ? "\n#" + findsubdef + "*:" + values.translation : '') + '\n')
},
'redo': function() {
quoteform.style.display = 'none';
quotetobeadded.style.display = 'block';
zz.appendChild(quotetobeadded)
},
'undo': function() {
quoteform.style.display = 'inline';
zz.removeChild(quotetobeadded)
},
'summary': '+quote: "' + values.quotation + '"- ' + values.source
}, quotetobeadded)
})
}
}, zz)
})
}
window.addPOSHeader = function(cancelhover) {
var bodyContent = $(".mw-content-ltr")[0];
if (!defeditoptions.addingPOS) {
defeditoptions.addingPOS = true;
editor = new Editor()
var headerLevel = (window.languageContainers && languageContainers[currentLanguageTab] && languageContainers[currentLanguageTab].firstChild) || bodyContent.firstChild;
var ii;
var temp, temp_;
var theform;
var findnumberofheaders;
var addedwikitext;
var prefakeheaders;
var currentFocus;
var langNames = [],
docLink, docExists = {};
if (window.loadedTabs) {
langNames = tabbedLanguages;
} else {
mw.util.$content.find("h2>.mw-headline").each(function() {
langNames.push($(this).text())
})
}
var langNameCodes;
new mw.Api().get({
"action": "expandtemplates",
"format": "json",
"text": "{{#invoke:languages/javascript-interface|GetAllData}}",
"prop": "wikitext"
}).done(function(r){
if(r.expandtemplates && r.expandtemplates.wikitext){
langNameCodes = JSON.parse(r.expandtemplates.wikitext);
}
});
function updateDocLink() {
var pos = theform.getElementsByTagName("input")[0].value;
pos = (({
Adjective: "adj",
Adverb: "adv",
Interjection: "interj",
Preposition: "prep",
Pronoun: "pron",
Conjunction: "con",
Contraction: "cont",
Determiner: "det"
})[pos] || pos.toLowerCase());
if (!langNameCodes || !pos || !theform.getElementsByTagName("input")[0].value) {
return;
}
var currentLang = window.loadedTabs ? theform.parentNode.id.split("container")[0] : (function() {
for (var s = theform; s && s.nodeName != "H2"; s = s.previousSibling);
return s && s.lastChild && (s.lastChild.innerText || s.lastChild.textContent)
})();
var docName = langNameCodes[currentLang] + "-" + pos;
if (docExists[docName] === false) {
return docLink.style.display = 'none';
}
if (docExists[docName] === true) {
docLink.style.display = 'inline';
docLink.href = mw.config.get("wgArticlePath").replace("$1", "ထာမ်ပလိက်:" + docName + "/doc");
return;
}
if (docExists[docName] === 'l') {
docLink.style.display = 'none';
return;
}
docExists[docName] = 'l';
new mw.Api().get({
action: 'query',
prop: 'info',
titles: 'ထာမ်ပလိက်:' + docName + '/documentation'
}).then(function(r) {
docExists[docName] = r.query.pages.length == 1;
updateDocLink();
});
}
var poslist = '\nနာမ်\nကြိယာ\nနာမဝိသေသန\nကြိယာဝိသေသန\nသဗ္ဗနာမ်\nသမ္ဗန္ဓ\nအာမေဍိက်\nဝိဘတ်\nနာမ်မကိတ်ညဳ\nပစ္စဲ\nဝါကျကဆံၚ်အကာဲအရာ\nAcronym\nAbbreviation\nInitialism\nပွမထညောံ\nအဆက်ဂတ\nအဆက်လက္ကရဴ\nသၚ်္ကေတ\nအက္ခရ်\nLigature\nIdiom\nဝါကျ\nNumber\nဂၞန်သၚ်္ချာ\nCardinal number\nOrdinal number\nCardinal numeral\nOrdinal numeral\nPersonal pronoun\nဖျေံလဝ်သန္နိဋ္ဌာန်\nDemonstrative determiner\nClitic\nInfix\nInterfix\nAffix\nCircumfix\nCircumposition\nCounter\nခေန်ဂျဳ\nKanji reading\nHanja reading\nHirigana letter\nKatakana letter\nPinyin\nဗျဉ်ဟာန်\nHanzi\nHanja\nProverb\nExpression\nParticle\nInfinitive particle\nPossesive adjective\nကဆံၚ်အကာဲအရာ\nPhrasal verb\nလုပ်ကၠောန်စွံလဝ်\nGerund\nInterrogative auxiliary verb\nPronominal adverb\nAdnominal\nAbstract pronoun\nConjunction particle\nCombining form\nတံရိုဟ်\nPinyin syllable\nဝဏ္ဏ\nHirigana character\nKatakana character\nJyutping syllable\nGismu\nLujvo\nBrivla\nClassifier\nPredicative\nMeasure word\nCorrelative\nPreverb\nPrenoun\nNoun stem\nNoun class\nCombined-kana character\nCmavo\n';
while (headerLevel.nextSibling) {
if (/^h[34]$/i.test(headerLevel.nodeName) && !/နိရုတ်|ဗွဟ်ရမ္သာၚ်|ပွံၚ်နဲတၞဟ်/.test(headerLevel.innerHTML)) {
headerLevel = headerLevel.nodeName.toLowerCase();
break;
}
headerLevel = headerLevel.nextSibling
}
currentBoxToBeAdded = newNode('div', {
'style': 'position:fixed;top:500px;'
})
new AdderWrapper(editor, {
createForm: function() {
return theform = newNode('form', currentFocus = newNode('input', {
'style': 'font-size: 0.8em;font-size: ' + ((headerLevel == 'h3') ? '132%' : '116%') + ';font-weight: bold;font-family: sans-serif;width:auto;',
'placeholder': 'Part of speech',
'rows': 1,
'name': 'pos',
focus: function() {
currentFocus = this
}
}), newNode('input', {
'type': 'submit',
'value': 'Preview'
}), newNode('input', {
'type': 'button',
'value': 'Cancel',
click: function() {
theform.style.display = 'none';
hoverNewPOS(null);
defeditoptions.addingPOS = false;
document.onmousemove = null;
document.body.style.cursor = '';
}
}), newNode('br'), newNode('input', {
'style': 'width:300px;font-family:monospace;',
'placeholder': '{\{head}}',
'name': 'inflline',
focus: function() {
currentFocus = this
}
}), docLink = newNode('a', {
style: "margin-left:5px;display:none;",
'target': '_blank'
}, "Help?"), newNode('ol', newNode('li', newNode('input', {
'size': 100,
'disabled': 'disabled'
}))))
},
fields: {
'pos': function(txt, error) {
return poslist.indexOf('\n' + txt + '\n') > -1 ? txt : error('Please select a valid part of speech.')
},
'inflline': function(txt, error) {
return txt || "{" + "{head}}"
}
},
onsubmit: function(values, render) {
addedwikitext = '{' + '{subst:=}}==' + (headerLevel == 'h4' ? '=' : '') + values.pos + (headerLevel == 'h4' ? '=' : '') + '===\n' + values.inflline
hoverNewPOS(null);
document.onmousemove = null;
defeditoptions.addingPOS = false;
document.body.style.cursor = '';
render(addedwikitext, function(res) {
theform.style.display = 'none'
temp = document.createDocumentFragment();
temp.appendChild(temp_ = newNode('div', {
'class': 'fakeheader'
}));
temp_.innerHTML = res;
temp.appendChild(newNode('ol', newNode('li', ' ', newNode('span'))));
theform.parentNode.insertBefore(temp, theform);
prefakeheaders = 0
findnumberofheaders = theform.previousSibling.previousSibling;
while (true) {
if (findnumberofheaders.previousSibling) {
findnumberofheaders = findnumberofheaders.previousSibling;
if (/h[2-6]/i.test(findnumberofheaders.nodeName)) {
findnumberofheaders = Number(findnumberofheaders.lastChild.getElementsByTagName('a')[0].href.split("section=")[1]);
break;
}
findnumberofheaders.className == 'fakeheader' && prefakeheaders++;
} else {
findnumberofheaders.parentNode.insertBefore(newNode('h2', languageHeaderEditButtons[currentLanguageTab].cloneNode(true), {
'style': 'display:none;'
}), findnumberofheaders);
}
}
var updatecatscallback;
editor.addEdit({
'edit': function(wikitext) {
return ccc = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}([\\s\\S]*?\n\\{\\{subst:\\=\\}\\}==" + (headerLevel == 'h4' ? '=' : '') + "[^=]){" + prefakeheaders + "}[\\s\\S]*?(?=(\n=|\n----|\n\\{\\{subst:\\=\\}\\}==" + (headerLevel == 'h4' ? '=' : '') + "[^=]|$)))"), "$1\n" + addedwikitext + "\n\n# {" + "{rfdef}}\n")
},
'redo': function() {
theform.style.display = 'none';
theform.parentNode.insertBefore(temp, theform);
updatecatscallback = window.tabbedLanguages && updateCategories(theform.parentNode, addedwikitext)
},
'undo': function() {
theform.style.display = 'block';
temp.appendChild(temp_);
temp.appendChild(theform.previousSibling);
updatecatscallback && updatecatscallback()
},
'summary': '+pos ' + values.pos
}, temp_)
makedefsidebox(theform.previousSibling.firstChild)();
editor.withCurrentText(function() {
theform.previousSibling.getElementsByTagName('input')[0].value = '';
theform.previousSibling.getElementsByTagName('input')[0].focus()
})
})
}
}, currentBoxToBeAdded)
cancelhover || setUpBoxToBeAdded();
theform.firstChild.focus()
function hoverNewPOS(thefunction) {
for (var ii = bodyContent.getElementsByTagName(headerLevel), i = 0; i < ii.length; i++) {
if (!/^Etymology|Pronunciation|Alternative\sforms$/.test(ii[i].firstChild.innerHTML))(ii[i].parentNode.className == 'fakeheader' ? ii[i].parentNode : ii[i]).onmouseover = thefunction;
}
if (window.tabbedLanguages) {
for (var i = 0; i < languageContainers.length; i++)
languageContainers[i].lastChild.onmouseover = thefunction;
} else {
ii = bodyContent.getElementsByTagName('hr');
for (var i = 0; i < ii.length; i++)
ii[i].onmouseover = thefunction;
}
}
function hoverNewPOS_() {
currentBoxToBeAdded.style.display = 'none';
this.parentNode.insertBefore(theform, this);
currentFocus.focus();
updateDocLink()
}
cancelhover || hoverNewPOS(hoverNewPOS_);
// autocomplete pos field
theform.firstChild.onkeydown = function(e) {
if ((e || event).keyCode == 9) {
theform.getElementsByTagName("input")[3].focus();
return false
}
}
theform.firstChild.onkeyup = function(e) {
if (this.value[0] != this.value.charAt(0).toUpperCase()) this.value = this.value.charAt(0).toUpperCase() + this.value.substr(1);
e = (e || event).keyCode;
if (!(e >= 33 && e <= 40) && e != 8 && e != 46 && e != 27 && e != 16 && this.value) {
if (poslist.indexOf('\n' + this.value) > -1) {
if (this.setSelectionRange) this.setSelectionRange([this.value.length, this.value = poslist.match(RegExp(this.value + "[^\n]*"))][0], this.value.length);
else if (this.createTextRange) {
var z = this.createTextRange();
z.moveEnd('character', 0 - z.move('character', [this.value.length, this.value = poslist.match(RegExp(this.value + "[^\n]*"))][0]) + this.value.length);
z.select()
}
}
updateDocLink()
}
}
}
}
window.updateCategories = function(container, newvalue, oldvalue) {
var addedCategories = [],
removedCategories = []
new mw.Api().get({
action: "parse",
prop: "categorieshtml",
title: mw.config.get('wgPageName'),
text: newvalue
}).then(function(r) {
var e = r.parse.categorieshtml['*'].match(/\<li.*?\/li\>/g);
var d = container.lastChild.lastChild;
var f = document.createElement('ul');
for (var i = 0; e && i < e.length; i++) {
f.innerHTML = e[i];
if (d.innerHTML.indexOf(f.firstChild.innerHTML) == -1) {
addedCategories.push(d.insertBefore(f.lastChild, d.lastChild))
}
}
oldvalue && new mw.Api().get({
action: "parse",
prop: "categorieshtml",
title: mw.config.get('wgPageName'),
text: oldvalue
}).then(function(o) {
e = o.parse.categorieshtml['*'].match(/\<li.*?\/li\>/g)
for (var i = 0; e && i < e.length; i++) {
f.innerHTML = e[i];
if (r.parse.categorieshtml['*'].indexOf(f.firstChild.innerHTML) == -1 && d.innerHTML.indexOf(f.firstChild.innerHTML) != -1) {
var lis = d.getElementsByTagName('li')
for (var ii = 0; ii < lis.length; ii++) {
if (lis[ii].firstChild.innerHTML == f.firstChild.firstChild.innerHTML) {
removedCategories.push(lis[ii]);
lis[ii].style.display = 'none';
break;
}
}
}
}
})
});
return function() {
for (var i = 0; i < addedCategories.length; i++) {
container.lastChild.lastChild.removeChild(addedCategories[i])
}
for (var i = 0; i < removedCategories.length; i++) {
removedCategories[i].style.display = '';
}
}
}
function addgloss(qq) {
var senseidform;
findlang(qq.parentNode, function(findlang_) {
if (qq.addinggloss) {
return
}
qq.addinggloss = true;
editor = new Editor();
new AdderWrapper(editor, {
'createForm': function() {
return senseidform = newNode('form', {
'style': 'display:inline; padding-right:20px;'
}, newNode('input', {
'size': 30,
'name': 'senseid'
}), newNode('input', {
'type': 'submit',
'value': 'Add'
}), newNode('input', {
'type': 'button',
'value': 'Cancel',
'click': function() {
qq.removeChild(senseidform);
qq.addinggloss = false
}
}), newNode('a', {
href: '/wiki/Help:Glosses'
}, 'Help?!'))
},
'fields': {
'senseid': util.validateNoWikisyntax('gloss', true)
},
'onsubmit': function(values) {
var findnumberofheaders = findnumberofheaders_(qq)
var findnumberofdefs = findnumberofdefs_(qq)
senseidform.lastChild.innerHTML = '';
var nymB = qq.getElementsByTagName('li')[1]
editor.addEdit({
edit: function(wikitext) {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + ") ?"), "$1{" + "{senseid|" + findlang_ + "|" + values.senseid + "}}");
return ccc = wikitext;
},
redo: function() {
senseidform.style.display = "none";
$([nymB.firstChild, nymB.nextSibling.firstChild]).removeClass('DSBinactive');
nymB.firstChild.title = nymB.nextSibling.firstChild.title = ''
},
undo: function() {
senseidform.style.display = "inline";
$([nymB.firstChild, nymB.nextSibling.firstChild]).addClass('DSBinactive');
nymB.firstChild.title = 'Please add a gloss before adding synonyms.';
nymB.nextSibling.firstChild.title = 'Please add a gloss before adding antonyms.'
},
summary: "+senseid: " + values.senseid
})
}
}, qq, qq.childNodes[1])
senseidform.firstChild.focus()
editor.withCurrentText(function(wikitext) {
wikitext = wikitext.match("==" + (window.loadedTabs ? tabbedLanguages[currentLanguageTab] : $(findtopli(qq).parentNode).prevUntil("h2").eq(-1).prev().find(".mw-headline").text()) + "==\n[\\s\\S]+?(----|$)")[0];
if (!wikitext) return;
var senses = '',
matches = wikitext.match(/(\{\{sense\||\{\{trans-top\|)[^\}]+(?=\}\})/g)
if (!matches) return;
for (var ms = 0; ms < matches.length; ms++) {
senses += "\n" + matches[ms].split("|")[1]
}
if (!senses) return;
senseidform.firstChild.onkeyup = function(e) {
e = (e || event).keyCode;
if (!(e >= 33 && e <= 40) && e != 8 && e != 46 && e != 27 && e != 16 && this.value) {
if (senses.indexOf('\n' + this.value) > -1) {
if (this.setSelectionRange) this.setSelectionRange([this.value.length, this.value = senses.match(RegExp("\n" + this.value + "[^\n]*")).toString().substr(1)][0], this.value.length);
else if (this.createTextRange) {
var z = this.createTextRange();
z.moveEnd('character', 0 - z.move('character', [this.value.length, this.value = senses.match(RegExp("\n" + this.value + "[^\n]*")).toString().substr(1)][0]) + this.value.length);
z.select()
}
}
}
}
})
})
}
function editgloss(qq) {
editor = new Editor()
editor.withCurrentText(function(wikitext) {
if (qq.editinggloss) {
return
}
qq.editinggloss = true;
var findnumberofheaders = findnumberofheaders_(qq)
var findnumberofdefs = findnumberofdefs_(qq)
var senseidform;
var oldsenseid;
new AdderWrapper(editor, {
'createForm': function() {
var thisId = "a" + String(Math.random()).replace(".", "")
oldsenseid = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "\\s?)"), '').match(/^\{\{senseid\|[^\\|]*\|([^\}]*)/)[1]
return senseidform = newNode('form', {
'style': 'display:inline; padding-right:20px; '
}, newNode('input', {
'size': 30,
'name': 'senseid',
'value': oldsenseid
}), newNode('input', {
'type': 'checkbox',
'id': thisId,
'name': 'changematching',
style: 'display:' + (window.tabbedLanguages ? 'inline' : 'none')
}), newNode('label', {
'for': thisId,
style: 'display:' + (window.tabbedLanguages ? 'inline' : 'none')
}, 'Edit matching glosses'), newNode('input', {
'type': 'submit',
'value': 'Change'
}), newNode('input', {
'type': 'button',
'value': 'Cancel',
'click': function() {
qq.editinggloss = false;
qq.removeChild(senseidform);
}
}), newNode('a', {
href: '/wiki/Help:Glosses'
}, 'Help?!'))
},
'fields': {
'senseid': util.validateNoWikisyntax('gloss', true),
'changematching': 'checkbox'
},
'onsubmit': function(values) {
var ttables = [],
sensetemps = [],
backups = [];
if (values.changematching) {
ttables = jQuery(".NavHead", languageContainers[currentLanguageTab]).filter(function() {
if (this.parentNode.getElementsByTagName("table")[0].className != "translations") return false;
for (var i = 0; i < this.childNodes.length; i++) {
if (this.childNodes[i].nodeType == 3 || this.childNodes[i].className == 'wt-edit-recurse') {
return (this.childNodes[i].nodeValue || this.childNodes[i].innerHTML) == oldsenseid;
}
}
})
sensetemps = jQuery(".qualifier-content", languageContainers[currentLanguageTab]).filter(function() {
return this.parentNode.nextSibling.nextSibling.className == "ib-colon" && this.innerHTML == oldsenseid;
})
}
editor.addEdit({
edit: function(wikitext) {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "\\s?(\{\{senseid\\|[^\\|]*\\|))[^\}]*"), "$1" + values.senseid);
if (values.changematching) {
var asd = wikitext.match('==' + tabbedLanguages[currentLanguageTab] + '==\n[\\s\\S]+?(\n==[^=]|$)');
wikitext = wikitext.replace(asd[0], asd[0].replace(RegExp("\\{\\{(sense|trans-top)\\|" + oldsenseid + "\\}\\}", "g"), "{\{$1\|" + values.senseid + "}}"))
}
return ccc = wikitext
},
redo: function() {
senseidform.style.display = "none";
for (var i = 0; i < ttables.length; i++) {
backups.push(document.createDocumentFragment());
while (ttables[i].childNodes[1]) {
backups[backups.length - 1].appendChild(ttables[i].childNodes[1]);
}
ttables[i].appendChild(document.createTextNode(values.senseid))
}
for (var i = 0; i < sensetemps.length; i++) {
backups.push(document.createDocumentFragment());
backups[backups.length - 1].appendChild(sensetemps[i].firstChild);
sensetemps[i].appendChild(document.createTextNode(values.senseid))
}
},
undo: function() {
senseidform.style.display = "inline";
for (var i = 0; i < ttables.length; i++) {
ttables[i].removeChild(ttables[i].childNodes[1]);
ttables[i].appendChild(backups.shift())
}
for (var i = 0; i < sensetemps.length; i++) {
sensetemps[i].removeChild(sensetemps[i].firstChild)
sensetemps[i].appendChild(backups.shift())
}
},
summary: "senseid: " + values.senseid
})
}
}, qq, qq.childNodes[1])
senseidform.firstChild.focus()
})
}
function setupnymadder(qq, nymtype) {
var passtheseheaders = "Usage notes|Inflection|Conjugation|Declension|Quotations",
nymtypelist = ["လဟီု", "ဝေါဟာလွာ", "ဝေါဟာဒစး", "ဝေါဟာတၟုပ်", "ဆက်လ္ၚတ်", "ပွံၚ်အက္ခရ်နဲတၞဟ်"]
for (var x = 0; nymtypelist[x] != nymtype; x++)
passtheseheaders += "|" + nymtypelist[x];
if (qq.parentNode.parentNode.nodeName.toLowerCase() == "li") qq = qq.parentNode.parentNode;
var findnumberofheaders = findnumberofheaders_(qq)
var findnumberofdefs = findnumberofdefs_(qq.parentNode.getElementsByTagName('li')[0])
for (var findheaderlevel = qq.parentNode; !/^h\d$/i.test(findheaderlevel.nodeName); findheaderlevel = findheaderlevel.previousSibling);
findheaderlevel = Number(findheaderlevel.nodeName.match(/\d/));
var senseidencoded = []
editor = new Editor()
editor.withCurrentText(function(wikitext) {
// Find nym header, or add it if it doesn't exist
var qqq = qq.parentNode;
while (!((qqq.className == "fakesubheader" || /h\d/i.test(qqq.nodeName)) && !qqq.innerHTML.match(passtheseheaders) || qqq.className == "printfooter" || qqq.className == "fakeheader" || qqq.className == "catlinks")) {
qqq = qqq.nextSibling
}
if (!qqq.innerHTML.match(nymtype)) {
qqq = qqq.parentNode.insertBefore(newNode('div', {
'class': 'fakesubheader'
}, newNode('h' + (findheaderlevel + 1), nymtype)), qqq);
}
// relevant vars:
// findheaderlevel is the the headerlevel of the most recent header above the ol
// qq is still the li itself
// qqq is the (possibly newly added) nym header
// find all relevant senseids, make an array of them, the whole template in each
var senseid = wikitext.replace(
RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + ")"), '').replace(/\n\n[\s\S]*$/, '').match(/\{\{senseid\|[^\\|]*\|[^\}]*/g)
if (!senseid) {
alert("No glosses were found. Click \"Add gloss\" to attach a gloss to the definition before adding " + nymtype.toLowerCase() + ".");
return
}
// run through senseids, checking for a corresponding span id'd nymtype-langcode-id, adding them encased in an li in a soon-to-be-parsed temp variable if not found, otherwise suppressing new form creation
temp = ""
var nymformexists = []
for (var i = 0; i < senseid.length; i++) {
if (document.getElementById(senseidencoded[i] = nymtype + "-" + encodeURIComponent(senseid[i].split("|")[1] + "-" + senseid[i].split("|")[2]).replace(/%20/g, '_').replace(/%3A/g, ':').replace(/%/g, '.'))) {
nymformexists[i] = true
} else {
temp += "* {" + "{sense|" + senseid[i].split("|")[2] + "}} <span id='" + nymtype + "-" + senseid[i].split("|")[1] + "-" + senseid[i].split("|")[2] + "'></span>\n"
}
}
new mw.Api().parse(temp, {
title: mw.config.get('wgPageName'),
pst: true, //pst makes subst work as expected
disablelimitreport: true
}).then(function(res) {
var qqqq = newNode('span')
qqqq.innerHTML = res
qqqq = qqq.parentNode.insertBefore(qqqq.firstChild, qqq.nextSibling) // the ul containing the form-holder spans, right below the nym header
for (var i = 0; i < senseid.length; i++) {
if (!nymformexists[i]) {
setupnymadder2(i, senseid, wikitext)
}
}
if (qqqq.getElementsByTagName && qqqq.getElementsByTagName('li').length == 0) {
qqqq.parentNode.removeChild(qqqq)
}
scroll(0, jQuery(qqq).offset().top)
});
})
function setupnymadder2(i, senseid, wikitext) {
var nymtype2 = nymtype.slice(0, -1).toLowerCase()
var x = document.getElementById(senseidencoded[i]);
var theform
new AdderWrapper(editor, {
'createForm': function() {
return theform = newNode('form', {
'style': 'display:inline;'
}, newNode('input', {
'name': 'nym'
}), newNode('input', {
'value': 'Add',
'type': 'submit'
}))
},
'fields': {
'nym': util.validateNoWikisyntax(nymtype2, true)
},
'onsubmit': function(values, render) {
theform.getElementsByTagName('input')[0].value = ""
var firstnym = !theform.parentNode.parentNode.getElementsByTagName('a')[0]
var addedwikitext = (firstnym ? '' : ', ') + "{" + "{l|" + senseid[i].split("|")[1] + "|" + values.nym + "}}"
render(addedwikitext, function(res2) {
var nodeToInsert = newNode('span')
nodeToInsert.innerHTML = res2
editor.addEdit({
edit: function(wikitext) {
// unindent
findnumberofdefs = findnumberofdefs_(qq.parentNode.getElementsByTagName('li')[0])
if (wikitext.substr(wikitext.length - 1, 1) != "\n") {
wikitext += "\n"
}
if (!wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + ")"), '').replace(RegExp("(\n(=|\\{\\{subst:=\\}\\})={" + (findheaderlevel - 1) + "}[^=][\\s\\S]*$)"), '').match(RegExp(nymtype + "={" + findheaderlevel + "}"))) {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "[\\s\\S]*?(\n(?=(\\{\\{subst:=\\}\\}|=)=+(?=[^=])(?!(" + passtheseheaders + ")))|$))"), "$1{" + "{subst:=}}===" + (findheaderlevel == 4 ? "=" : "") + nymtype + (findheaderlevel == 4 ? "=" : "") + "====\n\n")
}
if (firstnym) {
var passthesesenseids = [];
for (var ii = 0; ii < i; ii++) {
passthesesenseids.push("\\* \\{\\{sense\\|" + senseid[ii].split("|")[2] + "\\}\\}")
}
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}" + findnumberofdefs + "[\\s\\S]*?=" + nymtype + "=+[\\s\\S]*?\n" + (passthesesenseids.length > 0 ? "(?!(" + passthesesenseids.join("|") + ")))" : ")")), "$1* {" + "{sense|" + senseid[i].split("|")[2] + "}} " + addedwikitext + "\n")
} else {
wikitext = wikitext.replace(RegExp("(^[\\s\\S]*?((^|\n)=[\\s\\S]*?){" + findnumberofheaders + "}[\\s\\S]*?=" + nymtype + "=+[\\s\\S]*?\\{\\{sense\\|" + senseid[i].split("|")[2] + "\\}\\}.*)"), "$1" + addedwikitext)
}
return ccc = wikitext;
},
redo: function() {
theform.parentNode.parentNode.insertBefore(nodeToInsert, theform.parentNode)
},
undo: function() {
theform.parentNode.parentNode.removeChild(nodeToInsert)
},
summary: "+" + nymtype2 + " [[" + values.nym + "]]"
}, nodeToInsert)
})
}
}, x)
// sort the lis
var passthesesenseids = [];
for (var ii = 0; ii < i; ii++) {
passthesesenseids.push(senseid[ii].split("|")[2])
}
for (var xx = x.parentNode.parentNode.nextSibling; xx.nextSibling && !/h\d/i.test(xx.nodeName) && xx.className != "fakesubheader" && xx.nodeName.toUpperCase() != "UL"; xx = xx.nextSibling);
if (xx.nodeName.toUpperCase() == "UL") {
var xxx = xx.getElementsByTagName('li')
for (var xxxx = xxx.length; xxxx--;) {
var xxxxx = xxx[xxxx].getElementsByTagName("span")[3]
if (xxxxx && xxxxx.innerHTML == senseid[i].split("|")[2]) {
x.parentNode.parentNode.removeChild(x.parentNode);
xxx[xxxx].appendChild(x);
break;
}
if (xxxxx && passthesesenseids.length && RegExp(passthesesenseids.join("|")).test(xxxxx.innerHTML)) {
xxx[xxxx + 1] ? xx.insertBefore(x.parentNode, xxx[xxxx]) : xx.appendChild(x.parentNode);
break;
}
}
if (xxxx == -1) {
xx.insertBefore(x.parentNode, xx.firstChild)
}
}
}
}
jQuery(document).ready(function() {
var disablebutton = document.getElementById('YRDefsideboxes-disable-button');
if (disablebutton) {
disablebutton.innerHTML = "";
var toggle = newNode('span', {
click: function() {
if ($.cookie("DisableYREdit")) {
$.cookie("DisableYREdit", null, {
path: "/"
})
toggle.innerHTML = "Disable definition editing options."
} else {
$.cookie("DisableYREdit", 1, {
expires: 30,
path: "/"
})
toggle.innerHTML = "Enable definition editing options."
}
}
}, ($.cookie("DisableYREdit") ? "Enable" : "Disable") + " definition editing options.")
disablebutton.appendChild(toggle);
}
if (mw.config.get('wgAction') == 'view' && (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgPageName') == "Wiktionary:Sandbox") && !/&printable=yes|&diff=|&oldid=/.test(window.location.search) && !$.cookie("DisableYREdit") && !window.DisableYREdit && !window.loadedYREdit) {
window.loadedYREdit = true;
for (var ols = document.getElementsByTagName('ol'), ii = 0; ii < ols.length; ii++) {
if (ols[ii].className != "references") {
for (var lis = ols[ii].getElementsByTagName('li'), i = 0; i < lis.length; i++) {
if (lis[i].parentNode == ols[ii] && ols[ii].parentNode.parentNode.nodeName != "UL") makedefsidebox(lis[i]);
}
}
}
mw.util.addPortletLink('p-tb', 'javascript:addPOSHeader()', 'Add part of speech');
defsidebuttons = [0]
defeditoptions = {
addingPOS: false
}
}
})
// </nowiki>
izq9rzlifml5bd0muj5q2hmehce47w4
မဳဒဳယာဝဳကဳ:Gadget-DefSideBoxes.css
8
295766
396598
2026-06-08T14:32:19Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု ".defEditButton { position: absolute; margin-left: -45px; width: 45px; height: 20px; } ol li:hover .defEditButton span { opacity: 1; filter: alpha(opacity=100); } .defEditButton span { display: block; margin-top: 3px; margin-left: 10px; cursor: pointer; height: 10px; width: 10px; opacity: 0; filter: alpha(opacity=0); transition: opacity .15s; -webkit-trans..."
396598
css
text/css
.defEditButton {
position: absolute;
margin-left: -45px;
width: 45px;
height: 20px;
}
ol li:hover .defEditButton span {
opacity: 1;
filter: alpha(opacity=100);
}
.defEditButton span {
display: block;
margin-top: 3px;
margin-left: 10px;
cursor: pointer;
height: 10px;
width: 10px;
opacity: 0;
filter: alpha(opacity=0);
transition: opacity .15s;
-webkit-transition: opacity .15s;
-moz-transition: opacity .15s;
-o-transition: opacity .15s;
background-image: url(//upload.wikimedia.org/wikipedia/commons/d/d3/InterlanguageLinks-Asset-Pencil.gif);
}
.defEditButton span:hover { background-image: url(//upload.wikimedia.org/wikipedia/commons/d/d1/InterlanguageLinks-Asset-Pencil-Hover.gif) }
.addusexbutton {
padding-left: 15px;
margin-top: 0px;
overflow: hidden;
-webkit-transition: all 0.3s 0.3s;
-moz-transition: all 0.3s 0.3s;
-ms-transition: all 0.3s 0.3s;
-o-transition: all 0.3s 0.3s;
transition: all 0.3s 0.3s;
height: 0px;
}
li:hover>.addusexbutton {
margin-top: -4px;
height: 19px;
}
.addusexbutton>a {
vertical-align: top;
cursor: pointer;
font-size: 10px;
}
.addusexbutton>a+a { margin-left: 15px }
.addusexbutton li a {
display: block;
cursor: pointer;
}
.addusexbutton li a.DSBinactive {
color: #AAAAAA;
cursor: default;
}
.addusexbutton ul {
display: none;
position: absolute;
background-color: #FFFFFF;
border: 1px solid #AAA;
list-style: none;
padding: 1px 10px;
margin: -12px 0 0 5px;
}
.DSBRedButton,
.DSBGreenButton {
display: inline-block;
padding: 0px;
border-radius: 5px;
border: #9D9D9D solid 1px;
}
.DSBRedButton {
margin-right: 5px;
margin-left: 3px;
}
.DSBRedButton div,
.DSBGreenButton div {
padding: 1px 5px;
display: inline-block;
font-size: 14px;
color: white;
font-weight: bold;
border-radius: 5px;
cursor: pointer;
}
.DSBRedButton div {
border-left: 1px solid #CA0000;
border-top: 1px solid #CA0000;
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #C70000),color-stop(1, #7A0000));
background: -moz-linear-gradient(top, #C70000, #7A0000);
background: -o-linear-gradient(top, #C70000, #7A0000);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#C70000', endColorstr='#7A0000');
-ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#C70000', endColorstr='#7A0000');
background-color: #C70000;
}
.DSBGreenButton div {
border-left: 1px solid #3BB677;
border-top: 1px solid #3BB677;
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #3BB475),color-stop(1, #246E48));
background: -moz-linear-gradient(top, #3BB475, #246E48);
background: -o-linear-gradient(top, #3BB475, #246E48);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3BB475', endColorstr='#246E48');
-ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3BB475', endColorstr='#246E48');
background-color: #3BB475;
}
mv6bxcbnp2yxxg7t6oodkz7m84s05xd
မဳဒဳယာဝဳကဳ:Gadget-DatingSystem.js
8
295767
396599
2026-06-08T14:33:44Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "/* _____________________________________________________________________________ * | | * | === WARNING: GLOBAL GADGET FILE === | * | Changes to this page affect many users. | * | Please discuss changes on the talk page or on [[WT:Gadget]] before editing. | * |___..."
396599
javascript
text/javascript
/* _____________________________________________________________________________
* | |
* | === WARNING: GLOBAL GADGET FILE === |
* | Changes to this page affect many users. |
* | Please discuss changes on the talk page or on [[WT:Gadget]] before editing. |
* |_____________________________________________________________________________|
*
* Imported from version 1 as of 30 November 2017 from [[User:Erutuon/scripts/datingSystem.js]]
* SHORT_DESCRIPTION, see [[SCRIPT_HOME_PAGE]]
*/
// <nowiki>
// Switches the year-numbering system from BCE/CE to BC/AD
/* globals addOnloadHook */
"use strict";
function yearFormatSwitch() {
if (!document.querySelectorAll) return;
// This code supports date labels formatted using the following wikitext. (See {{B.C.E}} and {{C.E.}}.) BCE can be replaced by CE:
// <small class="ce-date">[[Appendix:Glossary#BCE|<span title="Glossary and display preference">BCE</span>]]</small>
var datetags = document.querySelectorAll('.ce-date');
for (var i = 0; i < datetags.length; i++) {
var datetag = datetags[i];
if (datetag.firstChild && datetag.firstChild.firstChild && datetag.firstChild.firstChild.firstChild) {
if (datetag.firstChild.firstChild.firstChild.nodeValue === "CE") {
if (typeof datetag.firstChild.setAttribute === "function") {
datetag.firstChild.setAttribute("href", "/wiki/အဆက်လက္ကရဴ:မသောၚ်ကၠးဝေါဟာ#AD");
}
datetag.firstChild.firstChild.innerHTML = "AD";
if (datetag.previousSibling) {
var patt = /((?:\d{1,4} ?(?:-|–|to) ?)?\d{1,4}) ?$/g; // first if hyphen-minus, then en-dash
var val = datetag.previousSibling.nodeValue;
var matches = val.match(patt);
if (matches !== null) {
var lastMatch = matches[matches.length - 1];
datetag.previousSibling.nodeValue = datetag.previousSibling.nodeValue.substr(0, datetag.previousSibling.nodeValue.length - lastMatch.length);
if(!datetag.nextSibling)
datetag.parentElement.appendChild(document.createTextNode(" " + lastMatch));
else
datetag.nextSibling.nodeValue = " " + lastMatch + datetag.nextSibling.nodeValue;
}
}
}
else {
if (typeof datetag.firstChild.setAttribute === "function") {
datetag.firstChild.setAttribute("href", "/wiki/အဆက်လက္ကရဴ:မသောၚ်ကၠးဝေါဟာ#BC");
}
datetag.firstChild.firstChild.innerHTML = "BC";
}
}
}
// This code supports dates formatted in the following fashion:
// <small class="ce-date2">CE</small>
// The tag <small> can be replaced with <span> or something else.
var datetags2 = document.querySelectorAll(".ce-date2");
for (i = 0; i < datetags2.length; ++i ) {
var datetag2 = datetags2[i];
var convert = { "BCE": "BC", "CE": "AD" };
datetag2.innerHTML = convert[datetag2.innerHTML];
}
}
$(yearFormatSwitch);
// </nowiki>
nfntz45kgz4z3bdffaj2d4464upnh2g
မဳဒဳယာဝဳကဳ:Gadget-CssTest.css
8
295768
396600
2026-06-08T14:35:17Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "@font-face { font-family: 'UllikummiC'; src: url('data:font/woff2;charset=utf-8;base64,d09GMgABAAAAAEjEABAAAAAAm7gAAEhhAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4GYACGXggECYVmERAKgpZYgelqC4EIAAE2AiQDggwEIAWJRQeCfAwIG6qDZyJ3f2uJgNsB+++2+N1HBoKNYz0Y8EkUJZp0Otn///+fk3SMIZt+gGpW2X+UzMOcpFwpy2iySFD0HL0PyyFL83lErpHN0i2lbmELHNsJjl4j3WES1TmCnCY6VG2mM1dBuLm16+4gFD6oLROKCEQ2qN5Bx4KTSFTCgKvAq708SxxuFE2iuhcVfjHASVPBYqr4bN..."
396600
css
text/css
@font-face {
font-family: 'UllikummiC';
src: url('data:font/woff2;charset=utf-8;base64,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') format('woff2');
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'UllikummiB';
src: url('data:font/woff2;charset=utf-8;base64,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') format('woff2');
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'UllikummiA';
src: url('data:font/woff2;charset=utf-8;base64,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') format('woff2');
font-weight: normal;
font-style: normal;
font-display: swap;
}
hzn7lgylehppz0sd8jb0y50h62svr55
မဳဒဳယာဝဳကဳ:Gadget-CatchMyAttention.css
8
295769
396601
2026-06-08T14:37:35Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "/* <nowiki> */ .attentionseeking { border: 1px solid var(--wikt-palette-red, #d73333); padding: 0.5em; background: var(--wikt-palette-lightred, #fee7e6); color: var(--color-base, black); border-radius: 5px; } .attentionseeking::before { content: '⚠️ {{attention|' attr(data-lang) '}}'; font-family: monospace, 'something'; } .attentionseeking::after { content: ' ' attr(title); } /* </nowiki> */"
396601
css
text/css
/* <nowiki> */
.attentionseeking {
border: 1px solid var(--wikt-palette-red, #d73333);
padding: 0.5em;
background: var(--wikt-palette-lightred, #fee7e6);
color: var(--color-base, black);
border-radius: 5px;
}
.attentionseeking::before {
content: '⚠️ {{attention|' attr(data-lang) '}}';
font-family: monospace, 'something';
}
.attentionseeking::after {
content: ' ' attr(title);
}
/* </nowiki> */
2hn8q0db31m98ro5jhjsfal6q5ubgwx
မဳဒဳယာဝဳကဳ:Gadget-ChangesByLanguage.js
8
295770
396602
2026-06-08T14:38:59Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "( [ "Recentchanges", "Watchlist", "Recentchangeslinked" ] ).indexOf( mw.config.get( "wgCanonicalSpecialPageName" ) ) !== -1 && $( function () { var diffLinksSelector = ".mw-changeslist .special li > .mw-changeslist-line-inner > a:first-child, .mw-enhanced-rc .mw-title + a, .mw-enhanced-rc-nested a[tabindex] + a"; var getRevisions = ( function () { var revRequests = {}, pRequests = {}; function sendRequests(..."
396602
javascript
text/javascript
( [ "Recentchanges", "Watchlist", "Recentchangeslinked" ] ).indexOf( mw.config.get( "wgCanonicalSpecialPageName" ) ) !== -1 && $( function () {
var diffLinksSelector = ".mw-changeslist .special li > .mw-changeslist-line-inner > a:first-child, .mw-enhanced-rc .mw-title + a, .mw-enhanced-rc-nested a[tabindex] + a";
var getRevisions = ( function () {
var revRequests = {}, pRequests = {};
function sendRequests( requests, isPageid ) {
var pendingReqs = [];
$.each( requests, function ( i, req ) {
if ( !req.status ) {
pendingReqs.push( i );
req.status = 1;
}
} );
for ( var i = 0; i < pendingReqs.length; i += 50 ) {
var query = {
action: 'query',
prop: 'revisions',
rvprop: 'content|ids',
maxage: 60 * 60 * 12,
smaxage: 60 * 60 * 12
};
query[ isPageid ? 'pageids' : 'revids' ] = pendingReqs.slice( i, i + 50 ).join( '|' );
( new mw.Api() ).get( query ).done( function ( results ) {
$.each( results.query.pages, function ( id, revision ) {
$.each( revision.revisions, function ( i, rev ) {
var rid = isPageid ? id : rev.revid,
result = requests[ rid ].result =
rev[ '*' ];
requests[ rid ].status = 2;
$.each( requests[ rid ], function ( i, callback ) {
callback( result );
} );
} );
} );
} );
}
}
return function getRevisions( id, callback, isPageid ) {
if ( id ) {
var requests = isPageid ? pRequests : revRequests,
req = requests[ id ] || ( requests[ id ] = [] );
if ( callback ) {
if ( !req.status || req.status === 1 ) {
req.push( callback );
} else {
callback( req.result );
}
}
} else {
sendRequests( pRequests, true );
sendRequests( revRequests, false );
}
return getRevisions;
};
} )();
function getSection( content, language ) {
var start = content.indexOf( '==' + language + '==' ),
end = content.substr( start ).search( /$|\n==[^=]/ );
if ( start === -1 ) {
return false;
} else {
return content
.substr( start, end )
// Don't count a new section being added below as a change.
.replace( /[\n \-]+$/g, '' )
// Filter out translations sections.
.replace( /(\{\{(?:check)?trans-top[^\}]*\}\})[\s\S]*?(?=\{\{(?:check)?trans-bottom\}\})/g, '$1' );
}
}
function getTranslations( content, language ) {
var t = content
.match( new RegExp( '\n[\\*\\:]+\\s*' + language + ': [^\n]+', 'g' ) );
return t ? t.join( '\n' ) : '';
}
function getLanguage() {
return languageData
.split( /\s*[,|]\s*/g)
// Remove empty strings
.filter( function ( x ) { return x; } );
}
function hideFiltered() {
if ( !languages || !languages.length ) {
return;
}
$( diffLinksSelector ).each( function( i, diffLink ) {
var href = diffLink.href,
oldid = mw.util.getParamValue( "oldid", href ),
curid = mw.util.getParamValue( "diff", href ),
title = mw.util.getParamValue( "title", href );
if ( title && !title.includes( ":" ) && oldid && curid ) {
getRevisions( curid );
getRevisions( oldid, function ( oldRevision ) {
getRevisions( curid, function ( curRevision ) {
var show = languages.some( function ( language ) {
var oldSection = getSection( oldRevision, language ),
newSection = getSection( curRevision, language );
if ( oldSection !== newSection ) {
return true;
} else if ( getTranslations( oldRevision, language ) !== getTranslations( curRevision, language ) ) {
return true;
}
} );
if ( !show ) {
diffLink.parentNode.parentNode.style.display = 'none';
}
} );
} );
}
} );
// Newly created pages, without diff links.
$( '.newpage' ).prev().prev().each( function ( i, histLink ) {
var href = histLink.href,
curid = mw.util.getParamValue( "curid", href );
getRevisions( curid, function ( curRevision ) {
var show = languages.some( function ( language ) {
if ( getSection( curRevision, language ) || getTranslations( curRevision, language ) ) {
return true;
}
} );
if ( !show ) {
histLink.parentNode.parentNode.style.display = 'none';
}
}, true );
} );
// Send the API requests.
getRevisions();
}
function showAll() {
$( '.mw-changeslist .special li' ).show();
}
// Settings
var options = document.querySelector( "#mw-watchlist-options, .rcoptions, .mw-rcfilters-head" ),
optionsDiv = document.createElement( "div" ),
input,
languages,
languageData,
isEnhanced = $( '.mw-enhanced-rc, .mw-rcfilters-head' ).length;
if ( options ) {
options.appendChild( document.createElement( "hr" ) ).style.margin = "8px 0";
if ( isEnhanced ) {
// If "Enhanced recent changes" is enabled, this script doesn't work.
optionsDiv.appendChild(
document.createTextNode( '(The "Recent changes by language" gadget requires the "Use non-JavaScript interface" preference to be ON and the "Group changes by page" preference to be OFF.)' )
);
options.appendChild( optionsDiv );
} else {
optionsDiv.appendChild( document.createTextNode( 'Languages: ' ) );
input = optionsDiv.appendChild( document.createElement( 'input' ) );
languageData = ( input.value = ( localStorage[ 'YR-rcbl' ] || '' ) );
languages = getLanguage();
input.onkeydown = input.onkeyup = function ( e ) {
languageData = localStorage[ 'YR-rcbl' ] = this.value;
if ( e.keyCode === 13 && e.type === 'keydown' ) {
languages = getLanguage();
showAll();
hideFiltered();
e.preventDefault && e.preventDefault();
return false;
}
};
input.onblur = function () {
languageData = localStorage[ 'YR-rcbl' ] = this.value;
languages = getLanguage();
showAll();
hideFiltered();
};
options.appendChild( optionsDiv );
// Run
hideFiltered();
}
}
} );
jn2ameweu3sqdms3gimerf9lemwt7k7
မဳဒဳယာဝဳကဳ:Abusefilter-no-autocat
8
295771
396603
2026-06-08T14:43:17Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{warning | icon = Attention Sign.svg | text = ကဏ္ဍတဏအ်ဝွံသ္ပရပ်စပ် {{tl|auto cat}} ဏီရ။ ဣဂှ်ဇကုချိုတ်ပၠိုတ်ယျဟာမကၠောန်သ္ပလဝ်ဟွံဗၠေတ်ဂှ် ? }}"
396603
wikitext
text/x-wiki
{{warning
| icon = Attention Sign.svg
| text = ကဏ္ဍတဏအ်ဝွံသ္ပရပ်စပ် {{tl|auto cat}} ဏီရ။ ဣဂှ်ဇကုချိုတ်ပၠိုတ်ယျဟာမကၠောန်သ္ပလဝ်ဟွံဗၠေတ်ဂှ် ?
}}
p9r61wq3rk31lsxof10rypp59tstv72
ထာမ်ပလိက်:warning
10
295772
396604
2026-06-08T14:43:50Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{maintenance box|yellow | image = [[File:{{{image|{{{icon|Codex icon Alert yellow.svg}}}}}}|40px|alt=Warning|link=]] | title = {{{title|Warning}}} | text = {{{text|{{{1}}}}}} }}<noinclude>{{documentation}}</noinclude>"
396604
wikitext
text/x-wiki
{{maintenance box|yellow
| image = [[File:{{{image|{{{icon|Codex icon Alert yellow.svg}}}}}}|40px|alt=Warning|link=]]
| title = {{{title|Warning}}}
| text = {{{text|{{{1}}}}}}
}}<noinclude>{{documentation}}</noinclude>
0afuhkmfpsx6n7wlb1z14sz6zwnohsj
ထာမ်ပလိက်:warning/documentation
10
295773
396605
2026-06-08T14:44:58Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template generates a warning notice box, used in the start of a page or section. ==See also== * {{temp|notice}} * {{temp|caution}} <includeonly> [[ကဏ္ဍ:ကဠာထာမ်ပလိက်ဂမၠိုၚ်]] </includeonly>"
396605
wikitext
text/x-wiki
{{documentation subpage}}
This template generates a warning notice box, used in the start of a page or section.
==See also==
* {{temp|notice}}
* {{temp|caution}}
<includeonly>
[[ကဏ္ဍ:ကဠာထာမ်ပလိက်ဂမၠိုၚ်]]
</includeonly>
gg378do31b3loagugjgc0r1skwj28f5
မဳဒဳယာဝဳကဳ:BetterGadgetsDefinition.js
8
295774
396606
2026-06-08T14:49:49Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// Imported from [[User:Erutuon/scripts/gadgets-definition.js]]. /* * Adds links to gadget definitions in [[MediaWiki:Gadgets-definition]] and * prettifies them by adding whitespace. * Adds anchors to gadget definitions as well as CSS to highlight them when we * click a link to them. */ (function gadgetsDefinitionIIFE () { "use strict"; // Only operate on [[MediaWiki:Gadgets-definition]] when the text is visib..."
396606
javascript
text/javascript
// Imported from [[User:Erutuon/scripts/gadgets-definition.js]].
/*
* Adds links to gadget definitions in [[MediaWiki:Gadgets-definition]] and
* prettifies them by adding whitespace.
* Adds anchors to gadget definitions as well as CSS to highlight them when we
* click a link to them.
*/
(function gadgetsDefinitionIIFE () {
"use strict";
// Only operate on [[MediaWiki:Gadgets-definition]] when the text is visible.
if (!(mw.config.get("wgCanonicalNamespace") == "မဳဒဳယာဝဳကဳ"
&& mw.config.get("wgTitle") === "Gadgets-definition"
&& document.querySelector(".mw-parser-output")))
return;
/*
* Set window.gadgetsDefinitionWhitespaceUnchanged = true
* in [[Special:MyPage/common.js]] to turn off the addition of spaces around
* punctuation in [[MediaWiki:Gadgets-definition]].
*/
const addSpaces = !window.gadgetsDefinitionWhitespaceUnchanged;
mw.loader.using("mediawiki.util", function () {
// Highlight a gadget's definition when we follow a link to it.
mw.util.addCSS(`.page-MediaWiki_Gadgets-definition li:target {
background: var(--background-color-progressive-subtle, #eaf3ff);
}`);
});
// Technique gleaned from [[w:fr:Utilisateur:Od1n/AddLinksGadgetsDefinition.js]].
// This anchor element is used to generate links and is not attached to the document.
var link = document.createElement("a");
function makeLink(href, text) {
link.href = href;
link.textContent = text;
return link.outerHTML;
}
function makeWikilink(page, text) {
return makeLink(mw.util.getUrl(page), text || page);
}
function linkGadgetSource(sourcePage) {
return makeWikilink("မဳဒဳယာဝဳကဳ:Gadget-" + sourcePage, sourcePage);
}
function linkGadgetAnchor(gadgetName, text) {
return makeLink("#" + makeGadgetId(gadgetName), text || gadgetName);
}
var gadgetNameRegex = /^(\s*)([a-zA-Z](?:[-_:.\w ]*[a-zA-Z0-9])?)\s*/;
function getGadgetName(innerHTML) {
var match = gadgetNameRegex.exec(innerHTML);
return match ? match[2] : null;
}
function makeGadgetId(gadgetName) {
return "Gadget-" + gadgetName;
}
function processGadgetDefinition(innerHTML) {
return innerHTML
// link gadget name to system message page and add space after it
.replace(gadgetNameRegex,
function (wholeMatch, whitespace, gadgetName) {
return whitespace
+ linkGadgetSource(gadgetName)
+ (addSpaces ? " " : "");
})
.replace(/([\w_\-.]+\.(?:css|js(?:on)?))/g, linkGadgetSource) // link script names
.replace(/(\s*)\|(\s*)/g, addSpaces ? " | " : "$1|$2") // spaces around pipes
/*
* process options
*
* Link dependencies: ext.gadget.name to entry on this page, others to
* [[mw:ResourceLoader/Core modules]] (even though not all have an entry
* there).
*
* Link peers to entry on this page.
*
* Link rights to [[mw:Manual:User_rights#List_of_permissions]]. There
* are unfortunately no anchors for individual rights.
*
* Link skin names to page in Skin namespace on MediaWiki.
*
* Add tooltip to namespace numbers showing local namespace name.
*
* Link category names to category pages.
*/
.replace(/([a-z]+)(\s*)=(\s*)(.+?)(?=\s*[|\]])/g,
function (wholeMatch, key, whitespace1, whitespace2, value) {
function mapValues(transformer) {
return value.replace(/([^,\s](?:[^,]*[^,\s])*)(?=\s*(?:,|$))/g, transformer);
}
var formattedValue = value;
switch (key) {
case "dependencies":
formattedValue = mapValues(function (dependency) {
var gadgetName = /^ext\.gadget\.(.+)$/.exec(dependency);
if (gadgetName)
return linkGadgetAnchor(gadgetName[1], dependency);
else
return makeWikilink("mw:ResourceLoader/Core modules#" + dependency, dependency);
});
break;
case "rights":
key = makeWikilink("mw:Manual:User_rights#List_of_permissions", key);
break;
case "skins": {
key = makeWikilink("mw:Manual:Skins", "skins");
formattedValue = mapValues(function(skin) {
return makeWikilink("mw:Skin:" + skin, skin);
});
break;
}
case "peers":
formattedValue = mapValues(linkGadgetAnchor);
break;
case "namespaces":
const formattedNamespaces = mw.config.get("wgFormattedNamespaces");
formattedValue = mapValues(function(namespaceId) {
const namespaceNumber = parseInt(namespaceId);
if (!isNaN(namespaceNumber)) {
const namespaceName = formattedNamespaces[namespaceNumber];
if (namespaceName != undefined) {
const abbr = document.createElement("abbr");
abbr.title = namespaceName === "" ? "(main)" : namespaceName;
abbr.textContent = namespaceId;
return abbr.outerHTML;
}
}
return namespaceId;
});
break;
case "categories":
formattedValue = mapValues(function(categoryName) {
return makeWikilink("ကဏ္ဍ:" + categoryName, categoryName);
});
}
if (addSpaces) {
whitespace1 = " ", whitespace2 = " ";
}
return key + whitespace1 + "=" + whitespace2
+ (addSpaces ? formattedValue.replace(/\s*,\s*/g, ", ") : formattedValue);
});
}
$(function () {
var $parserOutput = $(".mw-parser-output");
// :not(.gadgets-validation li) excludes elements under
// class="gadgets-definition" in output of Module:validate_gadgets on other wikis.
// Process gadget definitions in lists.
$parserOutput.find("li:not(.gadgets-validation li)").each(function (i, element) {
// Add id so that gadget definitions can be highlighted when we click a link
// to them.
var gadgetName = getGadgetName(element.innerHTML);
if (gadgetName)
element.id = makeGadgetId(gadgetName);
element.innerHTML = processGadgetDefinition(element.innerHTML);
});
// Process gadget definitions in pre tags.
$parserOutput.find("pre:not(.gadgets-validation pre)").each(function (i, element) {
element.innerHTML = element.innerHTML.replace(/[^\n]+/g, processGadgetDefinition);
});
});
})(); // IIFE
pd0chzq71jml97ptdlncg08gyi9x3z8
မဳဒဳယာဝဳကဳ:ContribsRange.js
8
295775
396607
2026-06-08T14:51:30Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// THIS IS PART OF [[WT:PREFS]] mw.loader.using(["mediawiki.util", "jquery.spinner"], function(){ mw.loader.load('//mnw.wikipedia.org/w/load.php?modules=ext.gadget.contribsrange'); });"
396607
javascript
text/javascript
// THIS IS PART OF [[WT:PREFS]]
mw.loader.using(["mediawiki.util", "jquery.spinner"], function(){
mw.loader.load('//mnw.wikipedia.org/w/load.php?modules=ext.gadget.contribsrange');
});
o8o435rgkjwdslxt0h95x41h2yekuye
မဳဒဳယာဝဳကဳ:FindTrans.js
8
295776
396608
2026-06-08T14:54:31Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "if (mw.config.get("wgPageName") === "Special:Search") $(document).ready(function($) { var redlink = true; var $a = $(".mw-search-createlink .new"); if ($a.length === 0) { $a = $(".mw-search-createlink a"); redlink = false; } if ($a.length === 0) { return; } var htitle = $a.text(), href = $a.attr("href"), $s = $(".searchresults"); $.get("/w/api.php", { format: "json", action: 'quer..."
396608
javascript
text/javascript
if (mw.config.get("wgPageName") === "Special:Search")
$(document).ready(function($) {
var redlink = true;
var $a = $(".mw-search-createlink .new");
if ($a.length === 0) {
$a = $(".mw-search-createlink a");
redlink = false;
}
if ($a.length === 0) {
return;
}
var htitle = $a.text(),
href = $a.attr("href"),
$s = $(".searchresults");
$.get("/w/api.php", {
format: "json",
action: 'query',
generator: 'backlinks',
gbltitle: htitle,
gblnamespace: 0,
prop: 'revisions',
rvprop: 'content'
}, function(b) {
if (!b || !b.query) {
return;
}
b = b.query.pages;
for (var i in b) {
var c = b[i].revisions[0]['*'],
title = b[i].title,
r = new RegExp("\\n\\*+:?\\s+\\[?\\[?([^\\]:\\n]+)\\]?\\]?:[^\\n]*\\{\\{tt?[-+ø]?\\|([^|]+)\\|" + htitle + "(\\|[^\\}\\|]+)*\\}\\}", "g"),
m,
rr = /\{\{trans-top(\|?[^\}]*)\}\}/g,
transtops = [];
for (; m = rr.exec(c);) {
transtops.push(m);
}
for (; m = r.exec(c);) {
for (; transtops[1] && m.index > transtops[1].index;) {
transtops.shift();
}
var mo = {
gloss: transtops[0][1] && transtops[0][1].substr(1),
langname: m[1],
langcode: m[2]
};
if (mo.langname.substr(0, 6) === "\{\{ttbc") {
continue;
}
for (; m.length > 3;) {
var p = m.pop();
if (p && (p = p.split("=")).length === 2) {
mo[p[0].substr(1)] = p[1];
}
}
$s.prepend(
$("<p>")
.append(
$("<a>", {
addClass: (mo.sc || "Mymr") + " mention-" + (mo.sc || "Mymr") + (redlink ? " new" : ""),
lang: mo.langcode,
href: href + (redlink ? "" : "#" + mo.langname),
style: "font-weight: 700;"
}).text(mo.alt || htitle))
.append(document.createTextNode(" is a" + ("AEIOU".indexOf(mo.langname.charAt(0)) === -1 ? " " : "n ") + mo.langname + " translation of the word "))
.append(
$("<a>", {
style: "font-weight: 700;",
href: "/wiki/" + title
}).text(title).addClass("mention-Mymr"))
.append(document.createTextNode((mo.gloss ? " (\"" + mo.gloss + "\")" : "") + ".")));
}
}
});
});
276cxflt6ydakjddrvstj50naod0hvo
မဳဒဳယာဝဳကဳ:Gadget-AGprefs.js
8
295777
396609
2026-06-08T14:56:06Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "/** per-browser preferences page **/ /*jshint undef:true, boss:true, latedef:true, shadow:true */ /*global mw, jQuery, OO */ 'use strict'; var gadgetList = { '': {} }; var prefs; try { prefs = window.localStorage.getItem('AGprefs'); } catch (e) { prefs = jQuery.cookie('AGprefs'); } prefs = prefs ? JSON.parse(prefs) : { gadgets: {}, modules: {}, sheets: {}, scripts: {} }; var uiContent = document.getElementById(..."
396609
javascript
text/javascript
/** per-browser preferences page **/
/*jshint undef:true, boss:true, latedef:true, shadow:true */
/*global mw, jQuery, OO */
'use strict';
var gadgetList = { '': {} };
var prefs;
try {
prefs = window.localStorage.getItem('AGprefs');
} catch (e) {
prefs = jQuery.cookie('AGprefs');
}
prefs = prefs ? JSON.parse(prefs) : { gadgets: {}, modules: {}, sheets: {}, scripts: {} };
var uiContent = document.getElementById('mw-content-text');
var api = new mw.Api();
api.get({
action: 'query',
titles: 'MediaWiki:Gadgets-definition',
prop: 'revisions',
rvprop: 'content',
rvlimit: 1
}).then(function (result) {
var m, mm, wikitext;
for (var pageid in result.query.pages) {
wikitext = result.query.pages[pageid].revisions[0]['*'];
}
var lines = wikitext.split('\n'), msgQueue = {}, curGroup = '';
for (var i = 0; i < lines.length; ++i) {
if (m = /^==\s*(.*?)\s*==$/.exec(lines[i])) {
msgQueue['Gadget-section-' + m[1]] = true;
gadgetList[curGroup = m[1]] = {};
} else if (m = /^\*\s*([A-Za-z][A-Za-z0-9_\-]*)\s*(?:\[(.*?)\])?\|(.*)\s*$/.exec(lines[i])) {
msgQueue['Gadget-' + m[1]] = true;
var gadget = gadgetList[curGroup][m[1]] = {
options: {},
css: [],
js: []
};
if (m[2]) {
var opts = m[2].split('|');
for (var j = 0; j < opts.length; ++j) {
if (mm = /^(.*)=(.*)$/.exec(opts[j]))
gadget.options[mm[1]] = mm[2];
else
gadget.options[opts[j]] = true;
}
}
var files = m[3].split('|');
for (var j = 0; j < files.length; ++j) {
if (/\.css$/.test(files[j]))
gadget.css.push(files[j]);
else
gadget.js.push(files[j]);
}
}
}
var validGadgets = {}, validModules = {}, validJS = {}, validCSS = {};
for (var group in gadgetList) {
for (var name in gadgetList[group]) {
var gadget = gadgetList[group][name];
validGadgets[name] = true;
if (gadget.options.ResourceLoader || (gadget.js.length === 0)) {
validModules['ext.gadget.' + name] = true;
} else {
for (var i = 0; i < gadget.css.length; ++i)
validJS[gadget.css[i]] = true;
for (var i = 0; i < gadget.js.length; ++i)
validCSS[gadget.js[i]] = true;
}
}
}
for (var key in prefs.gadgets)
if (!(key in validGadgets))
delete prefs.gadgets[key];
for (var key in prefs.modules)
if (!(key in validModules))
delete prefs.modules[key];
for (var key in prefs.sheets)
if (!(key in validCSS))
delete prefs.sheets[key];
for (var key in prefs.scripts)
if (!(key in validJS))
delete prefs.scripts[key];
var msgs = {};
jQuery.Deferred(function (self) {
/*jshint loopfunc:true */
var promises = [], queue = Object.keys(msgQueue);
for (var i = 0; i < queue.length; i += 50) {
promises.push(api.get({
action: 'query',
meta: 'allmessages',
amenableparser: '1',
ammessages: queue.slice(i, i + 50).join("|")
}).then(function (result) {
for (var i = 0; i < result.query.allmessages.length; ++i) {
var mesg = result.query.allmessages[i];
if ('missing' in mesg)
msgs[mesg.name] = '<' + mesg.name + '>';
else
msgs[mesg.name] = mesg['*'];
}
}));
}
jQuery.when.apply(jQuery, promises).then(function () {
self.resolveWith(msgQueue);
}, function (data) {
self.rejectWith(data);
});
}).then(function (msgQueue) {
function makeListItem(name, gadget) {
var button = new OO.ui.CheckboxInputWidget({
selected: name in prefs.gadgets ? prefs.gadgets[name] : !!gadget.options['default']
});
button.on('change', function(e) {
var checked = button.isSelected();
prefs.gadgets[name] = checked;
if (gadget.options.ResourceLoader || (gadget.js.length === 0)) {
prefs.modules['ext.gadget.' + name] = checked;
} else {
for (var i = 0; i < gadget.css.length; ++i)
prefs.sheets[gadget.css[i]] = checked;
for (var i = 0; i < gadget.js.length; ++i)
prefs.scripts[gadget.js[i]] = checked;
}
});
var html = (msgs['Gadget-' + name] || ("<Gadget-" + name + ">")).replace(/\[\[\:?(?:(.*?)\|)?(.*?)\]\]/g, function (whole, page, label) {
return '<a href="' + decodeURIComponent(mw.util.getUrl(page || label)).replace(/[<"&>]/g, function (c) {
return '&#' + c.charCodeAt(0) + ';';
}) + '">' + label + '</a>';
});
var field = new OO.ui.FieldLayout( button, { label: jQuery('<span>' + html + '</span>'), align: 'inline' } );
// styling fix
field.$element.children().css('max-width', 'none');
return field.$element[0];
}
var uiPrefs = document.createElement('div');
for (var group in gadgetList) {
var uiHeader = document.createElement('h2');
var uiList = document.createElement('div');
uiHeader.textContent = msgs['Gadget-section-' + group];
for (var name in gadgetList[group]) {
var gadget = gadgetList[group][name];
if ('rights' in gadget.options || gadget.options['hidden'])
continue; // XXX: we just assume we do not have the necessary rights (or the gadget is hidden, don't show those)
if ('skins' in gadget.options)
if (gadget.options.skins.split(',').indexOf(mw.config.get('skin')) === -1)
continue;
var uiItem = makeListItem(name, gadget);
uiList.appendChild(uiItem);
}
if (uiList.hasChildNodes()) {
if (group !== '')
uiPrefs.appendChild(uiHeader);
uiPrefs.appendChild(uiList);
}
}
var uiSave = new OO.ui.ButtonWidget({
label: 'Apply and reload',
flags: ['primary', 'progressive']
});
var uiReset = new OO.ui.ButtonWidget({
label: 'Reset to defaults',
flags: 'destructive'
});
uiSave.on('click', function () {
var value = JSON.stringify(prefs);
try {
window.localStorage.setItem('AGprefs', value);
} catch (e) {
jQuery.cookie('AGprefs', value, { expire: 90 });
}
location.reload();
});
uiReset.on('click', function () {
try {
window.localStorage.removeItem('AGprefs');
} catch (e) {
/* ignore */
}
jQuery.cookie('AGprefs', null);
location.reload();
});
var uiButtonContainer = document.createElement('div');
uiButtonContainer.style.marginTop = '1em';
uiButtonContainer.appendChild(uiSave.$element[0]);
uiButtonContainer.appendChild(document.createTextNode(" "));
uiButtonContainer.appendChild(uiReset.$element[0]);
uiPrefs.appendChild(uiButtonContainer);
uiContent.appendChild(uiPrefs);
}, function () {
console.error('getting gadget names failed', arguments);
});
}, function () {
console.error('getting Gadgets-definition failed', arguments);
});
fqagv7k1zvyjf4szjeazmzasftld0kl
မဳဒဳယာဝဳကဳ:Gadget-AGprefs.js/documentation
8
295778
396610
2026-06-08T14:56:57Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} <!--Add description here. This subpage initially added just for categorization.--> See also: [[Special:Gadgets]]. <includeonly> [[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]] </includeonly>"
396610
wikitext
text/x-wiki
{{documentation subpage}}
<!--Add description here. This subpage initially added just for categorization.-->
See also: [[Special:Gadgets]].
<includeonly>
[[ကဏ္ဍ:ဂေက်ဂျေက်ဝိတ်ရှေန်နရဳဂမၠိုၚ်]]
</includeonly>
nh2z4mxstdhoy5k1d14op93dv5v8194
မဳဒဳယာဝဳကဳ:Gadget-AcceleratedFormCreation.css
8
295779
396611
2026-06-08T14:57:57Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "a.accelerated:link, a.partlynew.accelerated:link, a.new.accelerated:link { color: #1fba00; } a.accelerated:visited, a.partlynew.accelerated:visited, a.new.accelerated:visited { color: #66a759; }"
396611
css
text/css
a.accelerated:link,
a.partlynew.accelerated:link,
a.new.accelerated:link {
color: #1fba00;
}
a.accelerated:visited,
a.partlynew.accelerated:visited,
a.new.accelerated:visited {
color: #66a759;
}
suyssctv76gv9bekacr2utmfmhwgdtp
မဳဒဳယာဝဳကဳ:Gadget-AcceleratedFormCreation.js
8
295780
396612
2026-06-08T15:03:12Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> /* globals mw, $ */ // jshint maxerr:500 // FIXME: This gadget relies to an excessive degree on OrangeLinks to function. These gadgets should be made independent. /* * The starting point of the whole script. * * This adds a hook to the page load event so that the script runs * adds the generated text to the edit window once the page is done loading. */ "use strict"; mw.loader.using(["mediawiki.ut..."
396612
javascript
text/javascript
// <nowiki>
/* globals mw, $ */
// jshint maxerr:500
// FIXME: This gadget relies to an excessive degree on OrangeLinks to function. These gadgets should be made independent.
/*
* The starting point of the whole script.
*
* This adds a hook to the page load event so that the script runs
* adds the generated text to the edit window once the page is done loading.
*/
"use strict";
mw.loader.using(["mediawiki.util"]).done(function() {
var pageName = mw.config.get("wgPageName");
// Don't do anything unless the current page is in the main namespace.
// Set window.accelEverywhere = true to test this gadget elsewhere.
if (window.accelEverywhere || (mw.config.get("wgAction") === "view" && (mw.config.get("wgNamespaceNumber") === 0 || pageName == "Wiktionary:Sandbox"))) {
// Stores all accelerated data, by language, by target pagename.
// Sub-arrays are in HTML order.
var accelParamsByPagename = {};
var getTargetPagename = function(link) {
var targetPagename = mw.util.getParamValue("title", link.href);
if (targetPagename === null) {
var match = link.href.match(/^(.*)\/wiki\/([^#]+)(?:#.+)?$/);
if (match) {
targetPagename = decodeURIComponent(match[2]);
}
}
return targetPagename;
};
var getLang = function (element) {
if (element.accelLang !== undefined) {
return element.accelLang;
}
var hasLang = $(element).closest("[lang]")[0];
var lang = hasLang ? hasLang.getAttribute("lang") : null;
element.accelLang = lang;
return lang;
};
var getPartOfSpeech = function(link) {
// Acceleration can be added to inflection tables too.
// This tells the search script to skip headers with these names.
var skipheaders = [
"alternative forms",
"antonyms",
"conjugation",
"declension",
"derived terms",
"inflection",
"mutation",
"related terms",
"synonyms",
"translations",
"usage notes"
];
for (var node = link; node !== null; node = node.previousSibling || node.parentNode) {
if (node.nodeType == 1 && (node.nodeName.match(/^H[3-6]$/) || (node.nodeName === 'DIV' && node.className.indexOf('mw-heading') !== -1))) {
var header = $(node).find(".mw-headline, h3, h4, h5, h6");
if (!header) {
continue;
}
header = header.text().replace(/^[1-9.]* /, "").toLowerCase();
if (skipheaders.indexOf(header) == -1) {
return header;
}
}
}
throw new Error("This entry seems to be formatted incorrectly. Does it have a language and part-of-speech header?");
};
var createAccelParam = function(link) {
var classNames = Array.prototype.filter.call($(link).closest(".form-of")[0].classList,
function (className) {
return (/^(gender|origin|origin_transliteration|pos|target|transliteration)-.+|.+-form-of$/.test(className));
});
var accelParam = classNames.join(" ");
var targetPagename = getTargetPagename(link);
var targetHead = (link.innerText || link.textContent).replace(/ /g, "_");
if (targetPagename != targetHead) {
accelParam = "target-" + targetHead + " " + accelParam;
}
return "pos-" + getPartOfSpeech(link).replace(/ /g, "_") + " " + accelParam;
};
var storeAccelParam = function(link) {
// Extract the targeted pagename from the URL,
// and language code from the nearest element with a lang attribute
var lang = getLang(link);
var targetPagename = getTargetPagename(link);
// Add page name to the list
if (accelParamsByPagename[lang] === undefined) {
accelParamsByPagename[lang] = {};
}
if (accelParamsByPagename[lang][targetPagename] === undefined) {
accelParamsByPagename[lang][targetPagename] = [];
}
var accelParam = createAccelParam(link);
if (accelParamsByPagename[lang][targetPagename].indexOf(accelParam) === -1) {
accelParamsByPagename[lang][targetPagename].push(accelParam);
}
};
var processLink = function(link) {
// Extract the targeted pagename from the URL,
// and language code from the nearest element with a lang attribute
var lang = getLang(link);
var targetPagename = getTargetPagename(link);
// Fetch the acceleration parameters from the store
var accelParam = accelParamsByPagename[lang][targetPagename]
.map(function (accel, i) {
return "accel" + (i + 1).toString() + "=" + encodeURIComponent(accel);
})
.join("&");
// Convert a non-edit link into an edit link
if (link.href.indexOf("action=edit") < 0) {
link.href = link.href.replace(/^(.*)\/wiki\/([^#]+)(?:#.+)?$/, "$1/w/index.php?title=$2&action=edit");
}
// use URL to ensure we append to the query string, not e.g. the hash.
var targetUrl = new URL(link.href);
// Now build a new "green link" URL to replace the original red link with
targetUrl.search +=
"&editintro=MediaWiki:Gadget-AcceleratedFormCreation.js/intro" +
"&accel_lang=" + encodeURIComponent(lang) +
"&accel_lemma=" + encodeURIComponent(pageName.replace(/_/g, " ")) +
"&" + accelParam +
"&veswitched=1";
link.href = targetUrl.href;
link.classList.add("accelerated");
link.processedLink = true;
};
// Mutation observer to respond when OrangeLinks modifies links
var mutobs = new MutationObserver(function(mutations, observer) {
mutations.forEach(function(mutation) {
var link = mutation.target;
if (!(mutation.attributeName == "class" && link.tagName === "A")) {
return;
}
// Don't process a link we've already been to
if (link.processedLink) {
return;
}
if (!$(link).hasClass("orange-link")) {
return;
}
// Process
processLink(link);
});
});
// First generate and store all the parameters
var oldtable = null; // Were we previously inside a table?
var columns = [];
$(".form-of a").each(function() {
// Are we currently inside a table?
var $this = $(this);
var table = $this.closest("table");
if (table.length > 0) {
table = table[0];
} else {
table = null;
}
// Was a column number specified on the current table cell?
// jQuery.fn.data automatically converts an integer-like string
// to a number.
var col = $this.closest("td[data-accel-col]").first().data("accel-col");
if (typeof col !== "number") {
col = null;
}
// If we were in a table, and we changed to another table or are no longer in one,
// or if there is no column number attribute, flush the column lists.
if (oldtable && (oldtable !== table || col === null)) {
for (var i = 0; i < columns.length; ++i) {
for (var j = 0; j < columns[i].length; ++j) {
storeAccelParam(columns[i][j]);
}
}
columns = [];
}
oldtable = table;
// The nostore parameter causes the link to not be stored,
// but it is processed later. The effect is that this link has no
// effect on the ordering of forms.
if ($(this).closest(".form-of").first().hasClass("form-of-nostore")) {
return;
}
// If there is a column number attribute, defer storing the link,
// put it in the columns array instead.
if (col !== null) {
--col; // Column attributes are 1-based, JS arrays are 0-based
// Expand the columns list to fit the number of columns
while (columns.length <= col) {
columns.push([]);
}
// Save the link in the columns list
columns[col].push(this);
} else {
// Store the link directly
storeAccelParam(this);
}
});
// Flush column lists
for (var i = 0; i < columns.length; ++i) {
for (var j = 0; j < columns[i].length; ++j) {
storeAccelParam(columns[i][j]);
}
}
// Then add them onto the links, or add a mutation observer
$(".form-of a").each(function() {
var $this = $(this);
if ($this.hasClass("new") || $this.hasClass("orange-link")) {
processLink(this);
} else {
// FIXME: There's a small window for a race condition here.
// If the "orange-link" class is added by OrangeLinks after the above if-statement is evaluated,
// but before the observer is added, then the link won't be processed.
mutobs.observe(this, {attributes : true});
}
});
// A function that force-processes all links and adds a class to those that would not have otherwise been processed.
var forceProcessAllLinks = function() {
$(".form-of a").each(function() {
var $this = $(this);
if (!($this.hasClass("new") || $this.hasClass("orange-link"))) {
this.classList.add("accelerated-forced");
}
processLink(this);
});
};
window.accelForceProcessAllLinks = forceProcessAllLinks;
} else if (mw.config.get("wgAction") === "edit") {
// Get the parameters from the URL
var getAccelParams = function() {
var accelParams = [];
var i = 1;
while (true) {
var acceldata = mw.util.getParamValue("accel" + i.toString());
if (!acceldata) {
break;
}
// Default values
var params = {
pos: null,
form: null,
gender: null,
transliteration: null,
origin: mw.util.getParamValue("accel_lemma"),
origin_transliteration: null,
target: pageName,
};
// Go over each part and add it
var parts = acceldata.split(" ");
for (var j = 0; j < parts.length; ++j) {
var part = parts[j];
var paramMatch = part.match(/^(gender|origin|origin_transliteration|pos|target|transliteration)-(.+)$/);
if (paramMatch) {
params[paramMatch[1]] = paramMatch[2].replace(/_/g, " ").replace(/\uFFF0/g, "_");
} else {
var formMatch = part.match(/^(.+)-form-of$/);
if (formMatch) {
params.form = formMatch[1].replace(/_/g, " ").replace(/\uFFF0/g, "_");
}
}
}
accelParams.push(params);
++i;
}
return accelParams;
};
// Generates entries from the information
var printArgs = function(accelParams) {
var args = [
"lang=" + mw.util.getParamValue("accel_lang"),
"origin_pagename=" + mw.util.getParamValue("accel_lemma"),
"target_pagename=" + pageName,
"num=" + accelParams.length,
];
for (var i = 0; i < accelParams.length; ++i) {
for (var key in accelParams[i]) {
if (accelParams[i][key] !== null) {
args.push(key + (i + 1) + "=" + accelParams[i][key].replace(/\|/g, "|"));
}
}
}
return args.join("|");
};
var showModuleError = function(errorText) {
// Attempt to link to the line of the module in which the error occurred.
errorText = errorText.replace(
/(Module:[^#<>\[\]|{}_]+)(?: at line |:)(\d+)/,
function (wholeMatch, moduleName, lineNumber) {
var link = document.createElement('a');
link.href = mw.util.getUrl(moduleName, {action: "edit"}) + "#mw-ce-l" + lineNumber;
link.innerHTML = moduleName + " at line " + lineNumber;
return "Lua error in " + link.outerHTML;
});
var errorBox =
"<div id=\"accel-error\">" +
"<p><big>An error occurred while generating the entry:</big></p>" +
"<p>" + errorText + "</p>" +
"</div>";
wikipreview.insertAdjacentHTML("beforebegin", errorBox);
};
var receiveModuleResponse = function(response) {
var newtext, result;
try {
result = JSON.parse(response.expandtemplates.wikitext);
} catch (err) { // JSON parse error should not happen.
mw.notify(err.msg);
return;
}
if (result.error) { // module error
showModuleError(result.error);
} else { // successfully generated entries
newtext = result.entries;
}
for (i = 0; i < result.messages.length; ++i) {
mw.notify(result.messages[i]);
}
if (!newtext) {
return;
}
var newValue;
var langsection_regex = /^==([^=\n]+)==$/mg;
var match = langsection_regex.exec(newtext);
if (!match) {
showModuleError("No language section was found in the returned text.");
}
var langname = match[1];
// Does the page already exist?
if (textbox.value) {
var resultInBox = false;
// Reset position at which regex starts its search.
// Otherwise, regex starts matching after the index where it
// found the language header in newtext.
langsection_regex.lastIndex = 0;
// Go over language sections to find where to insert our new one
while ((match = langsection_regex.exec(textbox.value)) !== null) {
if (match[1] == langname) {
// There already exists a section for our language, display text in a separate box.
resultInBox = true;
break;
} else if (match[1] == "မအရေဝ်ပံၚ်ကောံ" || match[1] == "မန်" || (langname != "မန်" && match[1] < langname)) {
// Skip past English and Translingual, or if the language sorts higher
continue;
} else {
// We found the first match that sorts lower than our language, great.
break;
}
}
var scrollIndex;
newValue = textbox.value;
if (resultInBox) {
// Display the result in a separate box.
var insertTextBoxIn = document.getElementById("accel-form-conflict-textbox-here");
if (insertTextBoxIn) {
var newElement = document.createElement("div");
newElement.id = insertTextBoxIn.id;
var warning = document.createElement("p");
warning.textContent = "A section for this language already exists. Please combine the new text manually:";
var textBox = document.createElement("textarea");
textBox.setAttribute("readonly", true);
textBox.setAttribute("rows", 10);
textBox.textContent = newtext;
newElement.appendChild(warning);
newElement.appendChild(textBox);
insertTextBoxIn.replaceWith(newElement);
}
scrollIndex = match !== null ? match.index : newValue.length;
} else if (match === null) {
// We found no language that our section should go before, so insert it at the end.
newValue = newValue.trimEnd() + "\n\n";
scrollIndex = newValue.length;
newValue = newValue + newtext;
} else {
// We found a language to insert before, so do that.
newValue = newValue.substring(0, match.index) + newtext + "\n\n" + newValue.substring(match.index);
scrollIndex = match.index;
}
// Scroll the textbox to the newly added section. First scroll all the way down,
// then set the cursor to the start of the new section, which scrolls back up
// to the new section's language header.
textbox.scrollTop = textbox.scrollHeight;
textbox.selectionStart = scrollIndex;
textbox.selectionEnd = scrollIndex;
summary.value = "ဗီုပြၚ်ပွမဖပေၚ်စုတ်ဆေၚ်စပ်ကဵု " + langname + " [[" + lemma + "]] ([[WT:ACCEL|Accelerated]])";
} else {
newValue = newtext;
summary.value = "ဗီုပြၚ်ပွမခၞံဗဒှ်ဆေၚ်စပ်ကဵု " + langname + " [[" + lemma + "]] ([[WT:ACCEL|Accelerated]])";
}
// Set textbox text. Setting textbox.value is unreliable.
$(textbox).val(newValue);
};
var wikipreview = document.getElementById("wikiPreview");
var textbox = document.getElementById("wpTextbox1");
var summary = document.getElementById("wpSummary");
var lang = mw.util.getParamValue("accel_lang");
var lemma = mw.util.getParamValue("accel_lemma");
if (!(wikipreview && textbox && summary && lang && lemma)) {
return;
}
// Gather all the information that was given in the URL
var accelParams = getAccelParams();
if (!accelParams) {
return;
}
var module = "accel", funcName = "generate_JSON";
mw.loader.using("mediawiki.api", function() {
new mw.Api().get({
"action": "expandtemplates",
"format": "json",
"text": "{{#invoke:" + module + "|" + funcName + "|" + printArgs(accelParams) + "}}",
"prop": "wikitext"
}).done(receiveModuleResponse);
});
}
});
// </nowiki>
9wd742yefk0sadki9bz7fa96gtcezxq
မဳဒဳယာဝဳကဳ:Gadget-AjaxEdit.js
8
295781
396613
2026-06-08T15:06:13Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// AjaxEdit // <nowiki> "use strict"; // Description : With a new button "Ædit" one can edit specific sections without reloading the whole page. // Supports TabbedLanguages gadget // Dependencies: mediawiki.util, mediawiki.Uri, mediawiki.user, mediawiki.api /* jshint maxerr:1048576, strict:true, undef:true, latedef:true, sub:true, esversion:5, esnext:false */ /* global mw, $ */ (func..."
396613
javascript
text/javascript
// AjaxEdit
// <nowiki>
"use strict";
// Description : With a new button "Ædit" one can edit specific sections without reloading the whole page.
// Supports TabbedLanguages gadget
// Dependencies: mediawiki.util, mediawiki.Uri, mediawiki.user, mediawiki.api
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, sub:true, esversion:5, esnext:false */
/* global mw, $ */
(function ajaxEditIife() {
window.AjaxEdit = {};
window.AjaxEdit.scriptLink = "";
if (mw.config.get("wgSiteName") !== "ဝိတ်ရှေန်နရဳ")
window.AjaxEdit.scriptLink += "wikt:";
if (mw.config.get("wgContentLanguage") !== "mnw")
window.AjaxEdit.scriptLink += "mnw:";
window.AjaxEdit.scriptLink += "MediaWiki:Gadget-AjaxEdit.js";
var $document = $(document);
window.AjaxEdit.FireEvents = function () {
// fire page load events like the [quotations ▼] thing
// see https://github.com/wikimedia/mediawiki/blob/master/resources/src/mediawiki.action/mediawiki.action.edit.preview.js
mw.hook("wikipage.content").fire($document);
mw.hook("wikipage.categories").fire($document);
};
window.AjaxEdit.Click = function (ajaxEditAnchor) {
if (ajaxEditAnchor.hasEditBox) {
mw.notify("This AjaxEdit edit box is already open.");
return;
} else if (document.getElementById("ajaxedit-wrapper")) {
mw.notify("An AjaxEdit edit box is already open on this page.");
return;
} else {
ajaxEditAnchor.hasEditBox = true;
}
var elements = {};
var _query = new URL($(ajaxEditAnchor)
.parent()
.find("a[href*='action=edit']")
.attr("href"), location.href).searchParams,
title = _query.get("title"),
section = _query.get("section");
section = section.replace("T-", ""); //transclusions...
var hdr = $(ajaxEditAnchor).parent().parent();
var sectionName = hdr.children(":header").first().text();
if (window.tabbedLanguages && !hdr.is(":header")) {
sectionName = window.tabbedLanguages[window.currentLanguageTab];
}
var data = { action: 'raw', title: title, section: section };
$.get(mw.util.wikiScript('index'), data).then(function (wikitext) {
var rowHeight = Math.min(15, 1 + wikitext.split("\n").length);
elements.textarea = $("<textarea/>")
.attr({ rows: rowHeight })
.addClass("mw-editfont-monospace")
.text(wikitext);
elements.textareaSummary = $("<input/>")
.attr({
type: "text",
maxlength: 500,
spellcheck: true,
name: "wpSummary",
})
.keydown(event, function () {
if (event.keyCode == 13) { // on enter
elements.saveButton.click();
}
});
function checkboxAndLabel(id, text) {
var checkbox = $("<input/>")
.attr({
"id": id,
"type": "checkbox",
});
var label = $("<label/>")
.attr("for", id)
.text(text);
return [checkbox, label];
}
var minorEdit = checkboxAndLabel("ajaxedit-minor-edit-checkbox", "Minor edit");
elements.minorEditCheckbox = minorEdit[0], elements.minorEditLabel = minorEdit[1];
elements.saveButton = $("<button/>")
.text("Save")
.click(function () {
elements.textarea.attr('disabled', true);
elements.textareaSummary.attr('disabled', true);
window.AjaxEdit.Save(section, sectionName, elements.textarea.val(), title, elements.textareaSummary.val(), elements.minorEditCheckbox.prop("checked"))
.then(function (apiSaveResponse) {
if (apiSaveResponse.error) return; //if abusefilter was triggered
new mw.Api().get({ page: mw.config.get("wgPageName"), action: "parse", prop: "text|categorieshtml" })
.then(function (newHtml) {
$("#ajaxedit-wrapper").remove();
$("#mw-content-text").html(newHtml.parse.text["*"]);
$("#catlinks").replaceWith(newHtml.parse.categorieshtml["*"]);
window.AjaxEdit.FireEvents();
mw.loader.moduleRegistry["site"].state = "registered";
//mw.loader.moduleRegistry["site"].version="generate-unique-guid-here";
mw.loader.moduleRegistry["site"].script = undefined;
mw.loader.using("site", function () { });
window.AjaxEdit.Submain();
});
});
})
.css("margin-left", "3px");
elements.cancelButton = $('<button/>')
.text("Cancel")
.click(function () {
$("#ajaxedit-wrapper").remove();
ajaxEditAnchor.hasEditBox = false;
});
elements.previewDiv = $("<div/>")
.css({
"border-style": "solid", "border-width": "1px 1px 1px 4px",
"border-radius": "0.33em", "border-color": "#a3d3ff",
})
.hide();
function timestamp() {
return new Date().toISOString();
}
var previousText;
var previousTextTimestamp = timestamp();
function loadPreview() {
var newText = elements.textarea.val();
var textTimestamp = timestamp();
if (!previousText || previousText != newText) {
new mw.Api()
.parse(
newText,
{ title: mw.config.get("wgPageName"), pst: "true", preview: "true", sectionpreview: "true", disableeditsection: "true" }
)
.done(function (html) {
if (textTimestamp > previousTextTimestamp) {
elements.previewDiv.html(html);
window.AjaxEdit.FireEvents();
previousTextTimestamp = textTimestamp;
}
});
}
previousText = newText;
}
var livePreview = checkboxAndLabel("ajaxedit-live-preview-checkbox", "Live preview");
elements.livePreviewCheckbox = livePreview[0], elements.livePreviewLabel = livePreview[1];
elements.livePreviewCheckbox.on("change", function () {
if ($(this).prop("checked")) {
elements.previewDiv.show("slow");
loadPreview();
this.previewIntervalId = setInterval(loadPreview, 500);
} else {
clearInterval(this.previewIntervalId);
elements.previewDiv.hide("fast");
elements.previewDiv.empty();
}
});
var wrapper = $("<div/>")
.attr("id", "ajaxedit-wrapper")
.css({ width: "auto", "margin": 0, "overflow": "ပၞုက်" })
.append(elements.textarea)
.append(elements.textareaSummary)
.append(elements.saveButton)
.append(elements.livePreviewCheckbox)
.append(elements.livePreviewLabel)
.append(elements.minorEditCheckbox)
.append(elements.minorEditLabel)
.append(elements.cancelButton)
.append(elements.previewDiv);
//tabbed languages support
if ($(ajaxEditAnchor).is("#tabstable .editlangsection a")) {
$(".languageContainer:not(:hidden)")
.first()
.prepend(wrapper);
} else {
hdr.after(wrapper);
}
});
};
/*
* Define edit summary template with window.AjaxEditSummary. For instance:
window.AjaxEditSummary = "Æ $sectionlink $summary";
*/
window.AjaxEdit.Save = function (sectionID, sectionName, sectionText, title, summary, minorEdit) {
var finalSummary;
if (typeof window.AjaxEditSummary === "string") {
var usedSummary = false;
finalSummary = window.AjaxEditSummary.replace(
/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,
function (fullMatch, name) {
switch (name) {
case "summary": {
usedSummary = true;
return summary;
}
case "scriptlink": return window.AjaxEdit.scriptLink;
case "sectionname": return sectionText;
case "sectionlink": return "/* " + sectionName + " */";
default: {
mw.notify(
"Your edit summary template (window.AjaxEditSummary) contains an unknown variable name. Variable name: "
+ name + ". Choose from summary, scriptlink, sectionname, sectionlink."
);
return "";
}
}
});
if (!usedSummary) {
mw.notify(
"Your edit summary template (window.AjaxEditSummary) doesn't use the edit summary you supplied, so your edit summary will be appended to the template: "
+ window.AjaxEditSummary);
finalSummary += " " + summary;
}
} else {
finalSummary = "/* " + sectionName + " */ " + summary + " (using [[" + window.AjaxEdit.scriptLink + "|AjaxEdit]])";
}
var data = {
format: 'json',
action: 'edit',
title: title,
section: sectionID,
summary: finalSummary,
text: sectionText,
token: mw.user.tokens.get('csrfToken'),
minor: minorEdit,
};
return new mw.Api().post(data).then(function (response) {
if (response && response.edit && response.edit.result == 'Success') {
mw.notify("successful");
} else if (response && response.error) {
mw.notify('Error: API returned error code "' + response.error.code + '": ' + response.error.info);
}
return response;
}).fail(function (xhr) {
mw.notify('Error: Request failed.');
$('#ajaxedit-wrapper *').attr('disabled', false);
});
};
window.AjaxEdit.Submain = function () {
$(".mw-body-content .mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Ædit").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(", ").before(btn);
});
};
window.AjaxEdit.Main = function () {
$(".mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Ædit").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(", ").before(btn);
});
};
if (mw.config.get('wgAction') == "ဗီုလညာတ်")
$(window.AjaxEdit.Main);
})();
// </nowiki>
8si6irlc3o0kh4bdb85smjyyn8vlbft
မဳဒဳယာဝဳကဳ:Gadget-AudioBotBlacklist.js
8
295782
396614
2026-06-08T15:08:00Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "/** * AudioBot Blacklist Gadget * * Adds a button on the blacklist page to add audio files without editing. * The blacklist is stored as JSON at [[Wiktionary:Approved Lingua Libre users/AudioBotBlacklist]]. */ /* jshint esversion: 8 */ ( function () { 'use strict'; const BLACKLIST_PAGE = 'Wiktionary:Approved Lingua Libre users/AudioBotBlacklist'; let AddDialog = null; let EditDialog = null; let BulkAddDial..."
396614
javascript
text/javascript
/**
* AudioBot Blacklist Gadget
*
* Adds a button on the blacklist page to add audio files without editing.
* The blacklist is stored as JSON at [[Wiktionary:Approved Lingua Libre users/AudioBotBlacklist]].
*/
/* jshint esversion: 8 */
( function () {
'use strict';
const BLACKLIST_PAGE = 'Wiktionary:Approved Lingua Libre users/AudioBotBlacklist';
let AddDialog = null;
let EditDialog = null;
let BulkAddDialog = null;
const createStore = ( initial ) => {
let data = initial;
let subscribers = [];
const notify = () => subscribers.forEach( ( fn ) => fn( data ) );
return {
get: () => data,
set: ( value ) => { data = value; notify(); },
subscribe: ( fn ) => {
subscribers.push( fn );
return () => { subscribers = subscribers.filter( ( f ) => f !== fn ); };
},
has: ( key ) => data.hasOwnProperty( key ),
put: ( key, value ) => { data[ key ] = value; notify(); },
remove: ( key ) => { delete data[ key ]; notify(); },
entries: () => Object.entries( data ).sort( sortByAdded ),
count: () => Object.keys( data ).length
};
};
const blacklistStore = createStore( {} );
let blacklistLoaded = false;
let blacklistBaseRevId = null;
const normalizeFilename = ( name ) => name.trim().replace( /^File:/i, '' ).replace( /_/g, ' ' ).trim();
const getEntryReason = ( val ) => ( val && val.reason !== undefined ? val.reason : '' );
const getEntryAdded = ( val ) => ( val && val.added );
const makeEntry = ( reason, added ) => ( added ? { reason, added } : { reason } );
const sortByAdded = ( a, b ) => {
const addedA = getEntryAdded( a[ 1 ] ) || '\u0000';
const addedB = getEntryAdded( b[ 1 ] ) || '\u0000';
return addedB.localeCompare( addedA );
};
let api = null;
let commonsApi = null;
const loadBlacklist = async ( forceReload ) => {
if ( blacklistLoaded && !forceReload ) {
return;
}
const response = await api.get( {
action: 'query',
titles: BLACKLIST_PAGE,
prop: 'revisions',
rvprop: 'content|ids',
rvslots: 'main',
formatversion: 2
} );
const page = response.query.pages[ 0 ];
if ( page.missing ) {
blacklistStore.set( {} );
blacklistBaseRevId = null;
} else {
blacklistStore.set( JSON.parse( page.revisions[ 0 ].slots.main.content ) );
blacklistBaseRevId = page.revisions[ 0 ].revid;
}
blacklistLoaded = true;
};
const saveBlacklist = async ( summary ) => {
const data = blacklistStore.get();
const sortedBlacklist = Object.entries( data ).sort( sortByAdded ).reduce( ( acc, entry ) => {
acc[ entry[ 0 ] ] = entry[ 1 ];
return acc;
}, {} );
const params = {
action: 'edit',
title: BLACKLIST_PAGE,
text: JSON.stringify( sortedBlacklist, null, 2 ),
summary,
minor: false
};
if ( blacklistBaseRevId ) {
params.baserevid = blacklistBaseRevId;
}
const result = await api.postWithToken( 'csrf', params );
if ( result.edit && result.edit.newrevid ) {
blacklistBaseRevId = result.edit.newrevid;
}
};
const checkFileExists = async ( filename ) => {
const data = await commonsApi.get( {
action: 'query',
titles: 'File:' + filename,
formatversion: 2
} );
const page = data.query.pages[ 0 ];
return !page.missing;
};
const addToBlacklist = async ( filename, reason ) => {
await loadBlacklist( true );
if ( blacklistStore.has( filename ) ) {
throw new Error( 'This file is already in the blacklist.' );
}
const added = new Date().toISOString();
blacklistStore.put( filename, makeEntry( reason, added ) );
await saveBlacklist( `Added [[File:${filename}]] to blacklist: ${reason.substring( 0, 100 )}` );
};
const addBulkToBlacklist = async ( entries ) => {
await loadBlacklist( true );
let added = 0;
const data = blacklistStore.get();
const addedAt = new Date().toISOString();
for ( const [ filename, reason ] of entries ) {
if ( !data.hasOwnProperty( filename ) ) {
data[ filename ] = makeEntry( reason, addedAt );
added++;
}
}
if ( added > 0 ) {
blacklistStore.set( data );
await saveBlacklist( `Bulk added ${added} file(s) to blacklist` );
}
return added;
};
const editBlacklistEntry = async ( filename, newReason ) => {
await loadBlacklist( true );
if ( !blacklistStore.has( filename ) ) {
throw new Error( 'This file is not in the blacklist.' );
}
const existingAdded = getEntryAdded( blacklistStore.get()[ filename ] );
blacklistStore.put( filename, makeEntry( newReason, existingAdded ) );
await saveBlacklist( `Updated reason for [[File:${filename}]]` );
};
const removeFromBlacklist = async ( filename ) => {
await loadBlacklist( true );
if ( !blacklistStore.has( filename ) ) {
throw new Error( 'This file is not in the blacklist.' );
}
blacklistStore.remove( filename );
await saveBlacklist( `Removed [[File:${filename}]] from blacklist` );
};
const removeBulkFromBlacklist = async ( filenames ) => {
await loadBlacklist( true );
let removed = 0;
const data = blacklistStore.get();
for ( const filename of filenames ) {
if ( data.hasOwnProperty( filename ) ) {
delete data[ filename ];
removed++;
}
}
if ( removed > 0 ) {
blacklistStore.set( data );
await saveBlacklist( `Bulk removed ${removed} file(s) from blacklist` );
}
return removed;
};
const createDialog = ( config ) => {
class Dialog extends OO.ui.ProcessDialog {
initialize() {
super.initialize();
config.init( this );
return this;
}
getSetupProcess( data ) {
return super.getSetupProcess( data ).next( () => config.setup( this, data || {} ) );
}
getActionProcess( action ) {
if ( action === 'save' ) {
return new OO.ui.Process( async () => {
try {
await config.onSave( this );
this.close( { action } );
} catch ( error ) {
throw new OO.ui.Error( error.message || String( error ) );
}
} );
}
return super.getActionProcess( action );
}
getBodyHeight() {
return config.bodyHeight || 200;
}
}
Dialog.static = Object.assign( {}, OO.ui.ProcessDialog.static, {
name: config.name,
title: config.title,
actions: [
{ action: 'save', label: config.saveLabel || 'Save', flags: [ 'primary', 'progressive' ] },
{ label: 'Cancel', flags: 'safe' }
]
} );
return Dialog;
};
const createAddDialog = () => createDialog( {
name: 'audiobotAdd',
title: 'Add to AudioBot Blacklist',
saveLabel: 'Add to Blacklist',
bodyHeight: 250,
init( dialog ) {
dialog.filenameInput = new OO.ui.TextInputWidget( { placeholder: 'e.g. En-us-example.ogg' } );
dialog.reasonInput = new OO.ui.MultilineTextInputWidget( { placeholder: 'Reason for blacklisting...', rows: 3 } );
dialog.fileExistsMessage = new OO.ui.MessageWidget( { type: 'warning', inline: true, label: 'This file does not exist on Commons.' } );
dialog.fileExistsMessage.$element.hide();
dialog.filenameInput.on( 'change', OO.ui.debounce( async () => {
const filename = normalizeFilename( dialog.filenameInput.getValue() );
if ( filename ) {
const exists = await checkFileExists( filename );
dialog.fileExistsMessage.$element.toggle( !exists );
} else {
dialog.fileExistsMessage.$element.hide();
}
}, 500 ) );
const content = new OO.ui.PanelLayout( { padded: true, expanded: false } );
content.$element.append(
new OO.ui.FieldLayout( dialog.filenameInput, { label: 'Audio filename (without File: prefix):', align: 'top' } ).$element,
dialog.fileExistsMessage.$element,
new OO.ui.FieldLayout( dialog.reasonInput, { label: 'Reason:', align: 'top' } ).$element
);
dialog.$body.append( content.$element );
},
setup( dialog, data ) {
dialog.filenameInput.setValue( data.prefillFilename || '' );
dialog.reasonInput.setValue( '' );
dialog.fileExistsMessage.$element.hide();
if ( data.prefillFilename ) {
dialog.filenameInput.emit( 'change' );
}
},
async onSave( dialog ) {
const filename = normalizeFilename( dialog.filenameInput.getValue() );
const reason = dialog.reasonInput.getValue().trim();
if ( !filename ) { throw new Error( 'Please enter a filename.' ); }
if ( !reason ) { throw new Error( 'Please enter a reason.' ); }
await addToBlacklist( filename, reason );
mw.notify( `Successfully added "${filename}" to the blacklist.`, { type: 'success' } );
}
} );
const createEditDialog = () => createDialog( {
name: 'audiobotEdit',
title: 'Edit Blacklist Reason',
saveLabel: 'Save',
bodyHeight: 180,
init( dialog ) {
dialog.filename = '';
dialog.filenameLabel = new OO.ui.LabelWidget( { label: '' } );
dialog.reasonInput = new OO.ui.MultilineTextInputWidget( { placeholder: 'Reason for blacklisting...', rows: 3 } );
const content = new OO.ui.PanelLayout( { padded: true, expanded: false } );
content.$element.append(
new OO.ui.FieldLayout( dialog.filenameLabel, { label: 'Filename:', align: 'top' } ).$element,
new OO.ui.FieldLayout( dialog.reasonInput, { label: 'Reason:', align: 'top' } ).$element
);
dialog.$body.append( content.$element );
},
setup( dialog, data ) {
dialog.filename = data.filename || '';
dialog.filenameLabel.setLabel( dialog.filename );
dialog.reasonInput.setValue( data.reason || '' );
},
async onSave( dialog ) {
const reason = dialog.reasonInput.getValue().trim();
if ( !reason ) { throw new Error( 'Please enter a reason.' ); }
await editBlacklistEntry( dialog.filename, reason );
mw.notify( `Successfully updated reason for "${dialog.filename}".`, { type: 'success' } );
}
} );
const createBulkAddDialog = () => createDialog( {
name: 'audiobotBulkAdd',
title: 'Bulk Add to AudioBot Blacklist',
saveLabel: 'Add All',
bodyHeight: 320,
init( dialog ) {
dialog.filesInput = new OO.ui.MultilineTextInputWidget( { placeholder: 'Enter one filename per line...', rows: 6 } );
dialog.reasonInput = new OO.ui.MultilineTextInputWidget( { placeholder: 'Reason for blacklisting...', rows: 3 } );
const content = new OO.ui.PanelLayout( { padded: true, expanded: false } );
content.$element.append(
new OO.ui.FieldLayout( dialog.filesInput, { label: 'Filenames (one per line, without File: prefix):', align: 'top' } ).$element,
new OO.ui.FieldLayout( dialog.reasonInput, { label: 'Reason (applies to all):', align: 'top' } ).$element
);
dialog.$body.append( content.$element );
},
setup( dialog ) {
dialog.filesInput.setValue( '' );
dialog.reasonInput.setValue( '' );
},
async onSave( dialog ) {
const filesText = dialog.filesInput.getValue().trim();
const reason = dialog.reasonInput.getValue().trim();
if ( !filesText ) { throw new Error( 'Please enter at least one filename.' ); }
if ( !reason ) { throw new Error( 'Please enter a reason.' ); }
const filenames = filesText.split( '\n' ).map( normalizeFilename ).filter( ( n ) => n.length > 0 );
if ( filenames.length === 0 ) { throw new Error( 'Please enter at least one valid filename.' ); }
const entries = filenames.map( ( f ) => [ f, reason ] );
const added = await addBulkToBlacklist( entries );
mw.notify( `Successfully added ${added} file(s) to the blacklist.`, { type: 'success' } );
}
} );
let windowManager = null;
const showDialog = ( DialogClass, data ) => {
if ( !windowManager ) {
windowManager = new OO.ui.WindowManager();
$( document.body ).append( windowManager.$element );
}
const dialog = new DialogClass( { size: 'medium' } );
windowManager.addWindows( [ dialog ] );
windowManager.openWindow( dialog, data || {} );
};
let selectedFiles = new Set();
let $selectAllCheckbox = null;
let $removeSelectedBtn = null;
const CELL_STYLE = {
padding: '8px 12px',
borderBottom: '1px solid var(--border-color-base)',
verticalAlign: 'middle'
};
const cellCss = ( overrides ) => Object.assign( {}, CELL_STYLE, overrides );
const createIconButton = ( icon, title, destructive ) => new OO.ui.ButtonWidget( {
icon,
title,
framed: false,
flags: destructive ? [ 'destructive' ] : []
} );
const confirmAndRun = async ( message, action, successMsg ) => {
const confirmed = await OO.ui.confirm( message );
if ( !confirmed ) {
return false;
}
try {
const result = await action();
const msg = typeof successMsg === 'function' ? successMsg( result ) : successMsg;
mw.notify( msg, { type: 'success' } );
return true;
} catch ( error ) {
mw.notify( error.message || String( error ), { type: 'error' } );
return false;
}
};
const updateRemoveSelectedButton = () => {
if ( $removeSelectedBtn ) {
$removeSelectedBtn.setDisabled( selectedFiles.size === 0 );
$removeSelectedBtn.setLabel( `Remove selected (${selectedFiles.size})` );
}
};
const updateEntryCount = () => {
$( '#audiobot-entry-count' ).text( `${blacklistStore.count()} file(s) in blacklist` );
};
const renderBlacklistTable = () => {
if ( !$( '#audiobot-blacklist-controls' ).length ) {
return;
}
const entries = blacklistStore.entries();
updateEntryCount();
$( '.mw-json' ).hide();
$( '#audiobot-blacklist-table' ).remove();
selectedFiles.clear();
$selectAllCheckbox = new OO.ui.CheckboxInputWidget();
$selectAllCheckbox.on( 'change', ( selected ) => {
selectedFiles.clear();
$( '#audiobot-blacklist-table tbody tr' ).each( function () {
const $checkbox = $( this ).find( '.oo-ui-checkboxInputWidget input' );
$checkbox.prop( 'checked', selected ).trigger( 'change' );
if ( selected ) {
const filename = $( this ).data( 'filename' );
selectedFiles.add( filename );
}
} );
updateRemoveSelectedButton();
} );
const $table = $( '<table>' )
.attr( 'id', 'audiobot-blacklist-table' )
.css( { width: '100%', borderCollapse: 'collapse', marginTop: '1em' } );
const formatAdded = ( iso ) => {
if ( !iso ) { return ''; }
const d = new Date( iso );
if ( isNaN( d.getTime() ) ) { return iso; }
return d.toLocaleDateString( 'en-GB', { year: 'numeric', month: '2-digit', day: '2-digit' } );
};
const $thead = $( '<thead>' ).append(
$( '<tr>' ).css( { backgroundColor: 'var(--background-color-interactive)' } ).append(
$( '<th>' ).css( cellCss( { width: '40px', textAlign: 'center' } ) ).append( $selectAllCheckbox.$element ),
$( '<th>' ).text( 'Filename' ).css( cellCss( { textAlign: 'left' } ) ),
$( '<th>' ).text( 'Reason' ).css( cellCss( { textAlign: 'left' } ) ),
$( '<th>' ).text( 'Added' ).css( cellCss( { width: '100px', textAlign: 'left' } ) ),
$( '<th>' ).text( 'Actions' ).css( cellCss( { width: '100px', textAlign: 'center' } ) )
)
);
const $tbody = $( '<tbody>' );
for ( const [ filename, rawValue ] of entries ) {
const reason = getEntryReason( rawValue );
const added = getEntryAdded( rawValue );
const checkbox = new OO.ui.CheckboxInputWidget();
checkbox.on( 'change', ( selected ) => {
if ( selected ) {
selectedFiles.add( filename );
} else {
selectedFiles.delete( filename );
}
updateRemoveSelectedButton();
} );
const editBtn = createIconButton( 'edit', 'Edit reason', false );
editBtn.on( 'click', () => showDialog( EditDialog, { filename, reason } ) );
const removeBtn = createIconButton( 'trash', 'Remove from blacklist', true );
removeBtn.on( 'click', () => confirmAndRun(
`Remove "${filename}" from the blacklist?`,
() => removeFromBlacklist( filename ),
`Removed "${filename}" from the blacklist.`
) );
const $row = $( '<tr>' ).data( 'filename', filename ).append(
$( '<td>' ).css( cellCss( { textAlign: 'center' } ) ).append( checkbox.$element ),
$( '<td>' ).css( CELL_STYLE ).text( filename ),
$( '<td>' ).css( CELL_STYLE ).text( reason ),
$( '<td>' ).css( CELL_STYLE ).attr( 'title', added || '' ).text( formatAdded( added ) ),
$( '<td>' ).css( cellCss( { textAlign: 'center', whiteSpace: 'nowrap' } ) ).append( editBtn.$element, removeBtn.$element )
);
$tbody.append( $row );
}
$table.append( $thead, $tbody );
$( '#audiobot-blacklist-controls' ).after( $table );
};
const addBlacklistPageButtons = () => {
const addButton = new OO.ui.ButtonWidget( {
label: 'Add file',
icon: 'add',
flags: [ 'progressive' ]
} );
addButton.on( 'click', () => showDialog( AddDialog ) );
const bulkAddButton = new OO.ui.ButtonWidget( {
label: 'Bulk add',
icon: 'add'
} );
bulkAddButton.on( 'click', () => showDialog( BulkAddDialog ) );
$removeSelectedBtn = new OO.ui.ButtonWidget( {
label: 'Remove selected (0)',
icon: 'trash',
flags: [ 'destructive' ],
disabled: true
} );
$removeSelectedBtn.on( 'click', () => {
if ( selectedFiles.size === 0 ) {
return;
}
confirmAndRun(
`Remove ${selectedFiles.size} file(s) from the blacklist?`,
() => removeBulkFromBlacklist( Array.from( selectedFiles ) ),
( removed ) => `Removed ${removed} file(s) from the blacklist.`
);
} );
const $label = $( '<span>' )
.text( 'AudioBot Blacklist: ' )
.css( 'font-weight', 'bold' );
const $entryCount = $( '<span>' )
.attr( 'id', 'audiobot-entry-count' )
.css( { marginLeft: '1em', fontStyle: 'italic' } )
.text( 'Loading...' );
const $controls = $( '<div>' )
.attr( 'id', 'audiobot-blacklist-controls' )
.css( {
marginBottom: '1em',
padding: '0.5em 1em',
backgroundColor: 'var(--background-color-neutral-subtle)',
border: '1px solid var(--border-color-subtle)',
borderRadius: '2px',
color: 'var(--color-base)'
} )
.append(
$label,
addButton.$element,
' ',
bulkAddButton.$element,
' ',
$removeSelectedBtn.$element,
$entryCount
);
$( '#mw-content-text' ).prepend( $controls );
renderBlacklistTable();
};
const addInlineBlacklistButtons = ( $content ) => {
const $root = ( $content && $content.length ) ? $content : $( document );
for ( const table of $root.find( 'table.audiotable' ).toArray() ) {
const $table = $( table );
const $player = $table.find( '[data-mwtitle]' );
if ( !$player.length ) {
continue;
}
const filename = $player.attr( 'data-mwtitle' );
if ( !filename || $table.data( 'blacklistAdded' ) ) {
continue;
}
$table.data( 'blacklistAdded', true );
const btn = createIconButton( 'block', 'Add to AudioBot blacklist', true );
btn.on( 'click', () => showDialog( AddDialog, { prefillFilename: normalizeFilename( filename ) } ) );
const $actionsCell = $( '<td>' )
.addClass( 'audio-actions' )
.css( { verticalAlign: 'middle' } )
.append( btn.$element );
$table.find( 'tr' ).first().append( $actionsCell );
}
};
const init = async () => {
try {
await mw.loader.using( [
'oojs-ui-core',
'oojs-ui-widgets',
'oojs-ui-windows',
'oojs-ui.styles.icons-moderation',
'oojs-ui.styles.icons-editing-core',
'oojs-ui.styles.icons-interactions',
'mediawiki.api',
'mediawiki.ForeignApi'
] );
api = new mw.Api();
commonsApi = new mw.ForeignApi( 'https://commons.wikimedia.org/w/api.php' );
const userGroups = mw.config.get( 'wgUserGroups' ) || [];
if ( !userGroups.includes( 'autoconfirmed' ) ) {
return;
}
const prefs = mw.wiktGadgetPrefs.get( 'audiobot-blacklist', {
label: {
en: 'AudioBot Blacklist'
}
}, {
showInlineButtons: {
type: 'boolean',
default: false,
label: {
en: 'Show inline blacklist buttons next to audio files'
}
}
} );
AddDialog = createAddDialog();
EditDialog = createEditDialog();
BulkAddDialog = createBulkAddDialog();
const isBlacklistPage = mw.config.get( 'wgPageName' ) === BLACKLIST_PAGE.replace( / /g, '_' );
const isViewAction = mw.config.get( 'wgAction' ) === 'view';
const isDiff = mw.config.get( 'wgDiffOldId' ) || mw.config.get( 'wgDiffNewId' );
if ( isBlacklistPage && !isDiff ) {
$( '#ca-edit, #ca-ve-edit' ).hide();
if ( isViewAction ) {
await loadBlacklist();
blacklistStore.subscribe( () => {
updateEntryCount();
renderBlacklistTable();
} );
addBlacklistPageButtons();
}
}
if ( prefs.showInlineButtons ) {
mw.hook( 'wikipage.content' ).add( addInlineBlacklistButtons );
}
} catch ( error ) {
mw.log.error( 'AudioBot Blacklist gadget: failed', error );
}
};
init();
}() );
00dk55mkgf6r5lm0fgfxlj7b254k1ff
မဳဒဳယာဝဳကဳ:Gadget-AutoContrastFixer.js
8
295783
396615
2026-06-08T15:09:48Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> /* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:6 */ /* global $, mw */ /** * Automatically adjusts contrast of templates in night mode. * * Author(s): Surjection * Last updated: 2025-10-08 */ // [[MediaWiki:Gadget-WiktGadgetPrefs.js]] const preferences = mw.wiktGadgetPrefs.get( "autoContrastFixer", { label: { en: "Automatically fix custom templ..."
396615
javascript
text/javascript
// <nowiki>
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:6 */
/* global $, mw */
/**
* Automatically adjusts contrast of templates in night mode.
*
* Author(s): Surjection
* Last updated: 2025-10-08
*/
// [[MediaWiki:Gadget-WiktGadgetPrefs.js]]
const preferences = mw.wiktGadgetPrefs.get(
"autoContrastFixer",
{
label: {
en: "Automatically fix custom template colors in night mode",
},
},
{
darkTextColorOverride: {
type: "boolean",
default: false,
label: {
en: "Apply also to templates with explicit dark text colors",
},
},
}
);
const darkTextColorOverride = preferences.darkTextColorOverride;
/* Color conversion code. */
/**************************/
function parseCssValue(cssAlpha, divisor) {
/**
* Parses a numeric value in CSS syntax, either given directly or
* as a percentage.
*
* If a divisor is given, it is used to scale the value, unless it is
* a percentage.
*/
if (cssAlpha.endsWith("%")) {
return parseCssValue(cssAlpha.slice(0, -1).trim(), 100.0);
}
return Number(cssAlpha) / (divisor || 1.0);
}
// RegEx used by parseCssColor
const RE_CSS_HEX_COLOR_3 = /^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/;
const RE_CSS_HEX_COLOR_6 =
/^#([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/;
const RE_CSS_RGB_COLOR =
/^rgb\(\s*([0-9.]+\s*%?)(?:\s+|\s*,\s*)([0-9.]+\s*%?)(?:\s+|\s*,\s*)([0-9.]+\s*%?)\s*\)$/;
const RE_CSS_RGBA_COLOR =
/^rgba?\(\s*([0-9.]+\s*%?)\s*,\s*([0-9.]+\s*%?)\s*,\s*([0-9.]+\s*%?)\s*,\s*([0-9.]+\s*%?)\s*\)$/;
const RE_CSS_RGBA_SLASH_COLOR =
/^rgba?\(\s*([0-9.]+\s*%?)\s+([0-9.]+\s*%?)\s+([0-9.]+\s*%?)\s*\/\s*([0-9.]+\s*%?)\s*\)$/;
function parseCssColor(cssColor) {
/**
* Parses a color in CSS syntax and returns it in RGBA format:
*
* [r, g, b, a]
* with each value within [0, 1].
*
* Returns undefined if the color could not be parsed.
*/
let m;
if ((m = cssColor.match(RE_CSS_RGB_COLOR))) {
return [
parseCssValue(m[1], 255.0),
parseCssValue(m[2], 255.0),
parseCssValue(m[3], 255.0),
1.0,
];
}
if ((m = cssColor.match(RE_CSS_RGBA_COLOR))) {
return [
parseCssValue(m[1], 255.0),
parseCssValue(m[2], 255.0),
parseCssValue(m[3], 255.0),
parseCssValue(m[4]),
];
}
if ((m = cssColor.match(RE_CSS_RGBA_SLASH_COLOR))) {
return [
parseCssValue(m[1], 255.0),
parseCssValue(m[2], 255.0),
parseCssValue(m[3], 255.0),
parseCssValue(m[4]),
];
}
if ((m = cssColor.match(RE_CSS_HEX_COLOR_6))) {
return [
parseInt(m[1], 16) / 255.0,
parseInt(m[2], 16) / 255.0,
parseInt(m[3], 16) / 255.0,
1.0,
];
}
if ((m = cssColor.match(RE_CSS_HEX_COLOR_3))) {
return [
parseInt(m[1], 16) / 15.0,
parseInt(m[2], 16) / 15.0,
parseInt(m[3], 16) / 15.0,
1.0,
];
}
if (cssColor === "transparent") return [0, 0, 0, 0];
return undefined;
}
function makeCssColor(rgbaColor) {
/**
* Converts the given RGBA color into CSS format.
*/
const [r, g, b, a] = rgbaColor;
const normR = Math.round(r * 255.0);
const normG = Math.round(g * 255.0);
const normB = Math.round(b * 255.0);
if (a >= 1.0) {
return `rgb(${normR}, ${normG}, ${normB})`;
} else {
return `rgba(${normR}, ${normG}, ${normB}, ${a})`;
}
}
function rgbToHsl(r, g, b) {
/**
* Converts colors from RGB to HSL (hue, saturation, lightness).
*
* The RGB inputs should all lie within [0, 1].
*
* With valid inputs, the hue value will lie within [0, 6],
* while the saturation and lightness values will lie within [0, 1].
*/
const min = Math.min(r, g, b);
const max = Math.max(r, g, b);
const delta = max - min;
const l = (max + min) / 2;
if (delta === 0) {
return [0, 0, l];
}
const s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);
let h;
if (max === r) h = (g - b) / delta + (g < b ? 6 : 0);
else if (max === g) h = (b - r) / delta + 2;
else if (max === b) h = (r - g) / delta + 4;
return [h, s, l];
}
function hslToRgb(h, s, l) {
/**
* Converts colors from HSL (hue, saturation, lightness) to RGB.
*
* The hue value should lie within [0, 6], and the saturation and
* lightness values within [0, 1].
*
* With valid inputs, the RGB outputs will all lie within [0, 1].
*/
if (s === 0) {
return [l, l, l];
}
const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
const p = 2 * l - q;
h /= 6;
if (h < 0) h = 1 - h;
h %= 1;
function hueToRgb(p, q, t) {
if (t < 0) t += 1;
else if (t > 1) t -= 1;
if (t < 1 / 6) return p + (q - p) * 6 * t;
if (t < 1 / 2) return q;
if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t);
return p;
}
const r = hueToRgb(p, q, h + 1 / 3);
const g = hueToRgb(p, q, h);
const b = hueToRgb(p, q, h - 1 / 3);
return [r, g, b];
}
/* Color processing code. */
/**************************/
function colorLuminance(rgbaColor) {
/**
* Returns the luminance of the RGB color (alpha is ignored) using the
* sRGB/BT.709 luminance formula.
*/
const [r, g, b] = rgbaColor;
const convertSrgbChannel = (x) => x <= 0.03928 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);
return 0.2126 * convertSrgbChannel(r) + 0.7152 * convertSrgbChannel(g) + 0.0722 * convertSrgbChannel(b);
}
function colorContrast(fgRgbaColor, bgRgbaColor) {
/**
* Returns the WCAG contrast ratio (>= 1) for the given two colors.
*/
const q =
(colorLuminance(fgRgbaColor) + 0.05) /
(colorLuminance(bgRgbaColor) + 0.05);
return q < 1 ? 1 / q : q;
}
function darkenBackgroundColor(rgbaColor) {
/**
* Darkens the given RGBA color for it to make it a suitable
* background color in night mode.
*/
const [r, g, b, a] = rgbaColor;
const [h, s, l] = rgbToHsl(r, g, b);
let lAdj = 1 - colorLuminance(rgbaColor);
lAdj = 0.02 + 0.98 * Math.pow(lAdj, 0.95);
const lScale = Math.min(Math.max(lAdj, 0.01) / Math.max(l, 0.01), 1);
const [rr, gg, bb] = hslToRgb(h, (s + s * lScale) / 2, lAdj);
return [rr, gg, bb, a];
}
function darkenBorderColor(rgbaColor) {
/**
* Darkens the given RGBA color for it to make it a suitable
* border color in night mode.
*/
const [r, g, b, a] = rgbaColor;
const [h, s, l] = rgbToHsl(r, g, b);
const [rr, gg, bb] = hslToRgb(h, s * 0.5, l * 0.5);
return [rr, gg, bb, a];
}
function lightenForegroundColor(rgbaColor) {
/**
* Lightens the given RGBA color for it to make it a suitable
* text color in night mode.
*/
const [r, g, b, a] = rgbaColor;
const [h, s, l] = rgbToHsl(r, g, b);
const [rr, gg, bb] = hslToRgb(h, s * 0.5, 0.5 + (1 - l) * 0.5);
return [rr, gg, bb, a];
}
/* Auto-fixer parameters. */
/**************************/
/* Whether to adjust border colors. */
const PARAMETER_ADJUST_BORDER_COLORS = false;
/** Any background-foreground combo with the contrast ratio exceeding
* this value are ignored by the fixer. */
const PARAMETER_MAXIMUM_CONTRAST_TO_FIX = 3;
/** The background color must have at least this much alpha,
* or the element is ignored by the fixer. */
const PARAMETER_MINIMUM_BG_ALPHA = 0.5;
/** The foreground color must have at least this much luminance,
* or the element is ignored by the fixer. */
const PARAMETER_MINIMUM_FG_LUMA = 0.5;
/** The border color must have at least this much luminance,
* or it is ignored by the fixer. */
const PARAMETER_MINIMUM_BORDER_LUMA = 0.7;
/* Auto-fixer framework. */
/*************************/
function isSkinNightMode() {
/**
* Returns true if the user has requested night mode.
*/
if (!window.matchMedia) return;
const htmlRoot = document.documentElement;
const nightPref = htmlRoot.classList.contains(
"skin-theme-clientpref-night"
);
const osPref = htmlRoot.classList.contains("skin-theme-clientpref-os");
const isScreen = window.matchMedia("screen").matches;
const prefersDark = window.matchMedia(
"(prefers-color-scheme: dark)"
).matches;
return isScreen && (nightPref || (osPref && prefersDark));
}
function doAutoContrastFix() {
/**
* Applies the auto-contrast fix to all elements in the
* wikipage body.
*/
// see if the user has requested night mode.
if (!isSkinNightMode()) return;
const view = document.defaultView;
const ELEMENTS_PER_FRAME = 50;
function isCandidate(el) {
const style = view.getComputedStyle(el);
return style.background !== "none" || style.borderStyle !== "none";
}
// TODO optimize; can we skip searching candidates or split it up
// into multiple frames to avoid blocking the page for some time?
const candidates = Array.prototype.filter.call(
document.querySelectorAll("#mw-content-text *"),
isCandidate
);
let autoContrastReport = [];
function autoContrastReportElement(el) {
// find top level element within mw-content-text
let top = el;
while (
top.parentElement &&
!top.parentElement.classList.contains("mw-parser-output")
) {
top = top.parentElement;
}
let nextHeadingLevel = 6;
const foundHeadings = Array(nextHeadingLevel + 1);
let sectionId, sectionNumber;
if (top) {
// find elements
let previous = top;
const recordHeading = function (headingElement, headingLevel) {
foundHeadings[headingLevel] = headingElement.textContent;
if (sectionId == null) sectionId = headingElement.id;
if (sectionNumber == null) {
const editLink =
headingElement.parentElement.querySelector(
".mw-editsection a"
);
const editUrl = !editLink ? null : new URL(editLink.href);
if (
editUrl &&
editUrl.searchParams &&
editUrl.searchParams.has("section")
)
sectionNumber = Number(
editUrl.searchParams.get("section")
);
}
};
while ((previous = previous.previousElementSibling)) {
if (previous.classList.contains("mw-heading")) {
// get heading level
const headingElement =
previous.querySelector("h1,h2,h3,h4,h5,h6");
if (headingElement) {
const headingLevel = Number(
headingElement.tagName.replace(/h/i, "")
);
if (headingLevel && headingLevel <= nextHeadingLevel) {
recordHeading(headingElement, headingLevel);
nextHeadingLevel = headingLevel - 1;
}
}
}
}
}
autoContrastReport.push({
headings: foundHeadings
.filter(function (v) {
return v != null;
})
.join(" > "),
sectionId: sectionId,
sectionNumber: sectionNumber,
topClasses: top ? top.className : undefined,
classes: el.className,
element: el,
});
el.classList.add("wikt-auto-contrast-fixed");
}
function autoContrastFixDone() {
/**
* Executed when the auto-contrast fix has been applied
* to all elements.
*/
if (autoContrastReport.length > 0) {
console.log(
`Applied auto-contrast fix to ${autoContrastReport.length} elements`
);
console.log("Full auto-contrast report", autoContrastReport);
}
}
function doAutoContrastFixOne(el) {
/**
* Applies the auto-contrast fix to the specified element.
*/
// exemptions
if (el.closest(".wikt-auto-contrast-exempt")) return;
if (el.closest(".mw-no-invert")) return;
const computedStyle = view.getComputedStyle(el);
// get background and foreground colors.
const cssBackgroundColor = computedStyle.backgroundColor;
const parsedBackgroundColor = parseCssColor(cssBackgroundColor);
if (parsedBackgroundColor == null) return;
const cssForegroundColor = computedStyle.color;
const parsedForegroundColor = parseCssColor(cssForegroundColor);
if (parsedForegroundColor == null) return;
let fixedElement = false;
const hasDarkTextColor =
colorLuminance(parsedForegroundColor) < PARAMETER_MINIMUM_FG_LUMA;
// check that:
// * the background color has enough alpha
// * the text color is actually light (or overridden)
// * the contrast is bad enough to consider fixing (or dark text color and overridden)
// * this isn't something like an image tag
if (
parsedBackgroundColor[3] >= PARAMETER_MINIMUM_BG_ALPHA &&
(darkTextColorOverride || !hasDarkTextColor) &&
(colorContrast(parsedForegroundColor, parsedBackgroundColor) <=
PARAMETER_MAXIMUM_CONTRAST_TO_FIX ||
(hasDarkTextColor && darkTextColorOverride)) &&
el.tagName !== "IMG"
) {
if (
colorLuminance(parsedForegroundColor) <
PARAMETER_MINIMUM_FG_LUMA
) {
// generate a new foreground color and apply it
const newForegroundColor = lightenForegroundColor(
parsedForegroundColor
);
if (
colorLuminance(newForegroundColor) >
colorLuminance(parsedForegroundColor)
) {
fixedElement = true;
el.style.color = makeCssColor(newForegroundColor);
}
}
// generate a background color and apply it, but only if it is darker.
const newBackgroundColor = darkenBackgroundColor(
parsedBackgroundColor
);
if (
colorLuminance(newBackgroundColor) <
colorLuminance(parsedBackgroundColor)
) {
fixedElement = true;
el.style.backgroundColor = makeCssColor(newBackgroundColor);
}
}
if (computedStyle.borderStyle !== "none" && PARAMETER_ADJUST_BORDER_COLORS) {
// odds are the border color needs the same treatment.
const cssBorderColor = view.getComputedStyle(el).borderColor;
const parsedBorderColor = parseCssColor(cssBorderColor);
if (
parsedBorderColor != null &&
colorLuminance(parsedBorderColor) >=
PARAMETER_MINIMUM_BORDER_LUMA
) {
// generate a border color and apply it, but only if it is darker.
const newBorderColor = darkenBorderColor(parsedBorderColor);
if (
colorLuminance(newBorderColor) <
colorLuminance(parsedBorderColor)
) {
fixedElement = true;
el.style.borderColor = makeCssColor(newBorderColor);
}
}
}
if (fixedElement) {
// report that we found an element to fix.
autoContrastReportElement(el);
}
}
function doAutoContrastFixBatch(base) {
/**
* Applies the auto-contrast fix to the next batch
* of elements.
*/
for (let offset = 0; offset < ELEMENTS_PER_FRAME; ++offset) {
const index = base + offset;
if (index >= candidates.length) {
autoContrastFixDone();
return;
}
doAutoContrastFixOne(candidates[index]);
}
window.requestAnimationFrame(function () {
doAutoContrastFixBatch(base + ELEMENTS_PER_FRAME);
});
}
doAutoContrastFixBatch(0);
}
$(document).ready(function () {
doAutoContrastFix();
});
// </nowiki>
de6lc9zew25kkllal43ljzyhnkyh6h9
မဳဒဳယာဝဳကဳ:Gadget-AutoGlossary.js
8
295784
396616
2026-06-08T15:12:39Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> mw.util.addCSS(` .mw-parser-output .auto-glossary a[rel~="mw:ExtLink"]:empty::after { content: '[' counter(mw-numbered-ext-link) ']'; counter-increment: mw-numbered-ext-link; } .mw-parser-output .auto-glossary td:first-child { counter-reset: mw-numbered-ext-link; text-align: center; } .mw-parser-output .auto-glossary ol { margin: 0 0 0 2em; padding: 0; } `); (async () => { // Process..."
396616
javascript
text/javascript
// <nowiki>
mw.util.addCSS(`
.mw-parser-output .auto-glossary a[rel~="mw:ExtLink"]:empty::after {
content: '[' counter(mw-numbered-ext-link) ']';
counter-increment: mw-numbered-ext-link;
}
.mw-parser-output .auto-glossary td:first-child {
counter-reset: mw-numbered-ext-link;
text-align: center;
}
.mw-parser-output .auto-glossary ol {
margin: 0 0 0 2em;
padding: 0;
}
`);
(async () => {
// Process each .auto-glossary element on the page
for (const autoGlossary of document.querySelectorAll(".auto-glossary")) {
const { category, label, language: lang, langCode, inlineOnly, pageSize: pageSizeAttr, filterPrefix: filterPrefixAttr } = autoGlossary.dataset;
const API_HEADERS = { "Api-User-Agent": "Gadget developed by [[User:Ioaxxere]]" };
const actionAPI = new mw.Api({ ajax: { headers: API_HEADERS } });
const restAPI = new mw.Rest({ ajax: { headers: API_HEADERS } });
// Parse configuration
const pageSize = parseInt(pageSizeAttr) || 200;
let filterPrefix = filterPrefixAttr;
if (filterPrefix) {
// Capitalize first letter (Wiktionary requirement)
filterPrefix = filterPrefix.charAt(0).toUpperCase() + filterPrefix.slice(1);
}
const categoryUrl = `./Category:${category.replaceAll(" ", "_")}`;
const langID = lang.replaceAll(" ", "_");
const WIKTIONARY_BASE = "https://mnw.wiktionary.org";
const CATEGORY_LINK_SELECTOR = ':scope > link[rel="mw:PageProp/Category"], :scope > span > span > link[rel="mw:PageProp/Category"]';
const ALLOWED_ATTRS = new Set(["class", "href", "style", "title", "rel"]);
const VALID_NAMESPACES = [0, 100, 118];
const pageCache = new Map();
const MAX_CACHE_SIZE = 5;
// Generate unique cache key for this glossary instance
const CACHE_VERSION = 1;
const pageHash = location.pathname.replace(/\W/g, '_');
const cacheKey = `glossary_v${CACHE_VERSION}_${pageHash}_${category}_${filterPrefix || 'all'}_${pageSize}`;
const CACHE_EXPIRATION = 604800000; // 1 week
// IndexedDB setup
const DB_NAME = 'GlossaryCache';
const DB_VERSION = 1;
let dbInstance = null;
async function openDB() {
if (dbInstance) return dbInstance;
return new Promise((resolve, reject) => {
const request = indexedDB.open(DB_NAME, DB_VERSION);
request.onerror = () => reject(request.error);
request.onsuccess = () => {
dbInstance = request.result;
resolve(dbInstance);
};
request.onupgradeneeded = (event) => {
const db = event.target.result;
if (!db.objectStoreNames.contains('glossaries')) {
db.createObjectStore('glossaries', { keyPath: 'key' });
}
if (!db.objectStoreNames.contains('pages')) {
db.createObjectStore('pages', { keyPath: 'key' });
}
};
});
}
async function getCache(storeName, key) {
try {
const db = await openDB();
return new Promise((resolve, reject) => {
const tx = db.transaction(storeName, 'readonly');
const store = tx.objectStore(storeName);
const request = store.get(key);
request.onsuccess = () => resolve(request.result);
request.onerror = () => reject(request.error);
});
} catch (e) {
console.warn(`IndexedDB get failed:`, e);
return null;
}
}
async function setCache(storeName, data) {
try {
const db = await openDB();
return new Promise((resolve, reject) => {
const tx = db.transaction(storeName, 'readwrite');
const store = tx.objectStore(storeName);
const request = store.put(data);
request.onsuccess = () => resolve();
request.onerror = () => reject(request.error);
});
} catch (e) {
console.warn(`IndexedDB set failed:`, e);
}
}
async function deleteCache(storeName, key) {
try {
const db = await openDB();
return new Promise((resolve, reject) => {
const tx = db.transaction(storeName, 'readwrite');
const store = tx.objectStore(storeName);
const request = store.delete(key);
request.onsuccess = () => resolve();
request.onerror = () => reject(request.error);
});
} catch (e) {
console.warn(`IndexedDB delete failed:`, e);
}
}
async function clearAllCache() {
try {
const db = await openDB();
const tx = db.transaction(['glossaries', 'pages'], 'readwrite');
await Promise.all([
new Promise((resolve) => {
tx.objectStore('glossaries').clear().onsuccess = resolve;
}),
new Promise((resolve) => {
tx.objectStore('pages').clear().onsuccess = resolve;
})
]);
} catch (e) {
console.warn(`IndexedDB clear failed:`, e);
}
}
// API state variables
let allWordsFetched = false;
let continueParam = null;
const allWords = [];
// Load cached word list from IndexedDB on startup
(async () => {
try {
const cached = await getCache('glossaries', cacheKey);
if (cached && Date.now() - cached.timestamp < CACHE_EXPIRATION) {
allWords.push(...cached.allWords);
allWordsFetched = cached.allWordsFetched;
continueParam = cached.continueParam;
console.log(`Loaded ${allWords.length} words from IndexedDB cache`);
} else if (cached) {
await deleteCache('glossaries', cacheKey);
}
} catch (e) {
console.warn("Failed to load from IndexedDB:", e);
}
})();
// Fetch a batch of words from the API
async function fetchWordBatch(limit) {
if (allWordsFetched) return [];
const words = [];
let finished = false;
while (words.length < limit && !finished) {
const apiParams = {
action: "query",
list: "categorymembers",
cmprop: "title|sortkeyprefix",
cmnamespace: VALID_NAMESPACES.join("|"),
cmlimit: "max",
cmtitle: "ကဏ္ဍ:" + category,
cmcontinue: continueParam
};
if (filterPrefix) {
apiParams.cmstartsortkeyprefix = filterPrefix.toUpperCase();
}
let response;
try {
response = await actionAPI.get(apiParams);
console.log(`API response: ${response.query.categorymembers.length} entries`);
} catch (error) {
console.error("API request failed:", error);
throw error;
}
// Process API results
for (const entry of response.query.categorymembers) {
if (filterPrefix) {
const sk = (entry.sortkeyprefix || entry.title).toUpperCase();
const prefixUpper = filterPrefix.toUpperCase();
// Stop if we've passed the prefix alphabetically
if (!sk.startsWith(prefixUpper) && sk > prefixUpper) {
console.log(`Stopping: "${sk}" > "${prefixUpper}"`);
finished = true;
break;
}
if (!sk.startsWith(prefixUpper)) {
continue;
}
}
// Add all entries to allWords, but only return limit entries
if (VALID_NAMESPACES.includes(entry.ns)) {
allWords.push(entry.title);
if (words.length < limit) {
words.push(entry.title);
}
}
}
// Save progress to IndexedDB
async function saveCache() {
await setCache('glossaries', {
key: cacheKey,
allWords,
allWordsFetched,
continueParam,
timestamp: Date.now()
});
}
if (finished || !response.continue) {
allWordsFetched = true;
saveCache();
break;
}
continueParam = response.continue.cmcontinue;
saveCache();
}
return words;
}
// Create UI elements
const paginationControlsTop = document.createElement("div");
paginationControlsTop.style = "margin-bottom: 1em; text-align: center;";
const paginationControlsBottom = document.createElement("div");
paginationControlsBottom.style = "margin-top: 1em; text-align: center;";
const glossaryTable = document.createElement("table");
glossaryTable.className = "wikitable";
glossaryTable.style = "width: 100%; table-layout: fixed; display: table";
glossaryTable.innerHTML = `<thead><tr><th style="width:8em">Terms</th><th>Definitions</th></tr></thead><tbody></tbody>`;
autoGlossary.append(paginationControlsTop);
autoGlossary.append(glossaryTable);
autoGlossary.append(paginationControlsBottom);
let abortController = null;
let currentPage = 1;
const loadingIndicator = document.createElement("div");
autoGlossary.append(loadingIndicator);
// Batch fetch formatted terms
async function fetchFormattedTerms(words) {
if (!words || words.length === 0) return new Map();
const result = new Map();
const BATCH_SIZE = 200;
for (let i = 0; i < words.length; i += BATCH_SIZE) {
const batch = words.slice(i, i + BATCH_SIZE);
const wikitext = batch.map((w, idx) =>
`<div class="term-wrapper" data-index="${idx}">{{l|${langCode}|${w}|tr=-}}</div>`
).join("");
try {
const data = await actionAPI.post({
action: 'parse',
text: wikitext,
prop: 'text',
contentmodel: 'wikitext',
disablelimitreport: true
});
const tempDiv = document.createElement("div");
tempDiv.innerHTML = data.parse.text['*'];
const wrappers = tempDiv.querySelectorAll(".term-wrapper");
wrappers.forEach(wrapper => {
const idx = parseInt(wrapper.getAttribute("data-index"));
if (!isNaN(idx) && idx < batch.length) {
result.set(batch[idx], wrapper.innerHTML);
}
});
} catch (e) {
console.warn("Batch formatting failed", e);
}
}
return result;
}
// Fetch and parse definitions for a single word
async function fetchDefinitions(word, formattedTerm, signal) {
if (signal.aborted) return null;
let response;
try {
response = await Promise.race([
restAPI.get("/v1/page/" + encodeURIComponent(word) + "/html"),
new Promise((_, reject) => setTimeout(() => reject(new Error("timeout")), 10000))
]);
} catch (e) {
if (e.message !== "aborted") {
console.warn(`Failed to fetch ${word}:`, e.message);
}
return null;
}
if (signal.aborted || !response) return null;
const responseDocument = new DOMParser().parseFromString(response, "text/html");
try {
const element = responseDocument.getElementById(langID);
if (!element) return null;
const L2_section = element.parentNode;
// Find definitions with inline category or headword category
let glossaryDefs = [...L2_section.getElementsByTagName("li")].filter(li => {
if ([...li.querySelectorAll(CATEGORY_LINK_SELECTOR)]
.some(linkElement => linkElement.getAttribute("href").startsWith(categoryUrl))) {
return true;
}
const headwordLine = li.parentElement.previousElementSibling;
if (!inlineOnly && headwordLine && headwordLine.tagName === "P" &&
[...headwordLine.querySelectorAll('link[rel="mw:PageProp/Category"]')]
.some(linkElement => linkElement.getAttribute("href").startsWith(categoryUrl))) {
return true;
}
return false;
});
// Fallback: grab all top-level definitions if none found
if (!inlineOnly && !glossaryDefs.length) {
glossaryDefs = L2_section.querySelectorAll(".mw-parser-output section > ol > li");
}
// Build table row if definitions found
if (glossaryDefs.length) {
let termElement;
if (formattedTerm) {
termElement = document.createElement("span");
termElement.innerHTML = formattedTerm;
} else {
// Fallback: create a manual link if template expansion fails/missing
termElement = document.createElement("a");
termElement.href = `${WIKTIONARY_BASE}${mw.util.getUrl(word)}#${langID}`;
termElement.textContent = word;
}
const defList = document.createElement("ol");
defList.append(...glossaryDefs);
for (const link of defList.querySelectorAll("a[href]")) {
link.href = new URL(link.getAttribute("href"), `${WIKTIONARY_BASE}${mw.util.getUrl(word)}`).href;
}
defList.querySelectorAll("link, .previewonly, .maintenance-line").forEach(elem => elem.remove());
for (const elem of defList.querySelectorAll("*")) {
for (const attr of [...elem.attributes]) {
if (!ALLOWED_ATTRS.has(attr.name)) {
elem.removeAttribute(attr.name);
}
}
}
const row = document.createElement("tr");
row.insertCell(0).append(termElement);
row.insertCell(1).append(defList);
return row;
}
} catch (e) {
console.error(`Failed to parse ${word}:`, e);
}
return null;
}
// Fetch a page of definitions (with caching)
async function fetchPage(page, signal) {
if (pageCache.has(page)) {
console.log(`Page ${page}: Using memory cache`);
return pageCache.get(page);
}
try {
const pageCacheKey = `${cacheKey}_page_${page}`;
const cached = await getCache('pages', pageCacheKey);
if (cached && Date.now() - cached.timestamp < CACHE_EXPIRATION) {
console.log(`Page ${page}: Loaded from IndexedDB`);
const rows = cached.rows.map(rowData => {
if (!rowData) return null;
const row = document.createElement('tr');
const wordCell = row.insertCell(0);
const defCell = row.insertCell(1);
wordCell.innerHTML = rowData.word;
defCell.innerHTML = rowData.defs;
return row;
});
const pageData = { words: cached.words, rows };
pageCache.set(page, pageData);
return pageData;
} else if (cached) {
await deleteCache('pages', pageCacheKey);
}
} catch (e) {
console.warn("Failed to load page from IndexedDB:", e);
}
// Calculate how many words we need
const startIndex = (page - 1) * pageSize;
const wordsNeeded = startIndex + pageSize;
console.log(`Page ${page}: startIndex=${startIndex}, wordsNeeded=${wordsNeeded}, allWords.length=${allWords.length}, allWordsFetched=${allWordsFetched}`);
// Fetch more words if needed
while (allWords.length < wordsNeeded && !allWordsFetched) {
console.log(`Page ${page}: Fetching more words...`);
await fetchWordBatch(pageSize);
}
// Get words for this page
const pageWords = allWords.slice(startIndex, startIndex + pageSize);
console.log(`Page ${page}: Got ${pageWords.length} words from allWords`);
if (pageWords.length === 0) return { words: [], rows: [] };
// Fetch definitions with concurrency limit
let ongoingRequests = 0;
const MAX_CONCURRENT = 200;
const formattedTermsMap = await fetchFormattedTerms(pageWords);
const rows = await Promise.all(pageWords.map(async (word) => {
if (signal.aborted) return null;
while (ongoingRequests >= MAX_CONCURRENT) {
if (signal.aborted) return null;
await new Promise(resolve => setTimeout(resolve, 10));
}
ongoingRequests++;
const row = await fetchDefinitions(word, formattedTermsMap.get(word), signal);
ongoingRequests--;
return row;
}));
const pageData = {
words: pageWords,
rows: rows.filter(Boolean)
};
pageCache.set(page, pageData);
const pageCacheKey = `${cacheKey}_page_${page}`;
const compressedRows = pageData.rows.map(row => {
if (!row) return null;
const cells = row.querySelectorAll('td');
if (cells.length < 2) return null;
return {
word: cells[0].innerHTML,
defs: cells[1].innerHTML
};
});
await setCache('pages', {
key: pageCacheKey,
words: pageData.words,
rows: compressedRows,
timestamp: Date.now()
});
if (pageCache.size > MAX_CACHE_SIZE) {
const firstKey = pageCache.keys().next().value;
pageCache.delete(firstKey);
}
return pageData;
}
// Prefetch next pages in background
async function prefetchPages(startPage, count) {
const signal = new AbortController().signal;
for (let i = 0; i < count; i++) {
const pageNum = startPage + i;
const totalPages = allWordsFetched ? Math.ceil(allWords.length / pageSize) : Infinity;
if (!pageCache.has(pageNum) && pageNum <= totalPages) {
console.log(`Prefetching page ${pageNum}...`);
fetchPage(pageNum, signal).catch(() => {
});
}
}
}
// Render a specific page
async function renderPage(page) {
if (abortController) {
abortController.abort();
}
abortController = new AbortController();
const signal = abortController.signal;
currentPage = page;
glossaryTable.querySelector("tbody").innerHTML = "";
loadingIndicator.style.display = "block";
loadingIndicator.textContent = "Loading page " + page + "...";
const pageData = await fetchPage(page, signal);
if (signal.aborted) return;
console.log(`Rendering page ${page}: ${pageData.words.length} words, ${pageData.rows.length} rows`);
loadingIndicator.style.display = "none";
const tbody = glossaryTable.querySelector("tbody");
for (const row of pageData.rows) {
tbody.append(row);
if (window.setupHiddenQuotes) {
for (const quote of row.querySelectorAll("ol > li")) {
window.setupHiddenQuotes(quote);
}
}
}
const estimatedTotalPages = allWordsFetched
? Math.ceil(allWords.length / pageSize)
: page + 1;
console.log(`Pagination: allWordsFetched=${allWordsFetched}, allWords.length=${allWords.length}, pageSize=${pageSize}, totalPages=${estimatedTotalPages}`);
renderPaginationControls(currentPage, estimatedTotalPages);
prefetchPages(page + 1, 2);
}
function renderPaginationControls(page, totalPages) {
paginationControlsTop.innerHTML = "";
paginationControlsBottom.innerHTML = "";
if (totalPages <= 1 && allWordsFetched) return;
const createControls = () => {
const container = document.createElement("div");
container.style = "display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap;";
const prevBtn = document.createElement("button");
prevBtn.textContent = "← Previous";
prevBtn.disabled = page === 1;
prevBtn.onclick = () => renderPage(page - 1);
const nextBtn = document.createElement("button");
nextBtn.textContent = "Next →";
nextBtn.disabled = allWordsFetched && page === totalPages;
nextBtn.onclick = () => renderPage(page + 1);
const pageInfo = document.createElement("span");
pageInfo.textContent = allWordsFetched
? `Page ${page} of ${totalPages}`
: `Page ${page}`;
pageInfo.style = "margin: 0 5px;";
let pageInput, goBtn;
if (allWordsFetched && totalPages > 1) {
pageInput = document.createElement("input");
pageInput.type = "number";
pageInput.min = "1";
pageInput.max = totalPages.toString();
pageInput.value = page.toString();
pageInput.style = "width: 60px; text-align: center;";
pageInput.placeholder = "Page";
goBtn = document.createElement("button");
goBtn.textContent = "Go";
const goToPage = () => {
const targetPage = parseInt(pageInput.value);
if (targetPage >= 1 && targetPage <= totalPages) {
renderPage(targetPage);
}
};
goBtn.onclick = goToPage;
pageInput.onkeypress = (e) => {
if (e.key === "Enter") goToPage();
};
}
container.append(prevBtn, pageInfo);
if (pageInput && goBtn) {
container.append(pageInput, goBtn);
}
container.append(nextBtn);
const refreshBtn = document.createElement("button");
refreshBtn.textContent = "🔄 Refresh";
refreshBtn.title = "Clear cache and reload glossary";
refreshBtn.style = "margin-left: 10px;";
refreshBtn.onclick = async () => {
if (confirm("Clear cache and reload glossary?")) {
await clearAllCache();
location.reload();
}
};
container.append(refreshBtn);
return container;
};
paginationControlsTop.append(createControls());
paginationControlsBottom.append(createControls());
}
// Initial render
renderPage(1);
// Clean up loading elements
for (const elem of [...autoGlossary.childNodes]) {
if (elem !== glossaryTable && elem !== paginationControlsTop && elem !== paginationControlsBottom && elem !== loadingIndicator)
elem.remove();
}
}
})();
// </nowiki>
llj03mizcd80gyuiyxvwql5ue43d80g
396617
396616
2026-06-08T15:13:09Z
咽頭べさ
33
396617
javascript
text/javascript
// <nowiki>
mw.util.addCSS(`
.mw-parser-output .auto-glossary a[rel~="mw:ExtLink"]:empty::after {
content: '[' counter(mw-numbered-ext-link) ']';
counter-increment: mw-numbered-ext-link;
}
.mw-parser-output .auto-glossary td:first-child {
counter-reset: mw-numbered-ext-link;
text-align: center;
}
.mw-parser-output .auto-glossary ol {
margin: 0 0 0 2em;
padding: 0;
}
`);
(async () => {
// Process each .auto-glossary element on the page
for (const autoGlossary of document.querySelectorAll(".auto-glossary")) {
const { category, label, language: lang, langCode, inlineOnly, pageSize: pageSizeAttr, filterPrefix: filterPrefixAttr } = autoGlossary.dataset;
const API_HEADERS = { "Api-User-Agent": "Gadget developed by [[User:Ioaxxere]]" };
const actionAPI = new mw.Api({ ajax: { headers: API_HEADERS } });
const restAPI = new mw.Rest({ ajax: { headers: API_HEADERS } });
// Parse configuration
const pageSize = parseInt(pageSizeAttr) || 200;
let filterPrefix = filterPrefixAttr;
if (filterPrefix) {
// Capitalize first letter (Wiktionary requirement)
filterPrefix = filterPrefix.charAt(0).toUpperCase() + filterPrefix.slice(1);
}
const categoryUrl = `./ကဏ္ဍ:${category.replaceAll(" ", "_")}`;
const langID = lang.replaceAll(" ", "_");
const WIKTIONARY_BASE = "https://mnw.wiktionary.org";
const CATEGORY_LINK_SELECTOR = ':scope > link[rel="mw:PageProp/Category"], :scope > span > span > link[rel="mw:PageProp/Category"]';
const ALLOWED_ATTRS = new Set(["class", "href", "style", "title", "rel"]);
const VALID_NAMESPACES = [0, 100, 118];
const pageCache = new Map();
const MAX_CACHE_SIZE = 5;
// Generate unique cache key for this glossary instance
const CACHE_VERSION = 1;
const pageHash = location.pathname.replace(/\W/g, '_');
const cacheKey = `glossary_v${CACHE_VERSION}_${pageHash}_${category}_${filterPrefix || 'all'}_${pageSize}`;
const CACHE_EXPIRATION = 604800000; // 1 week
// IndexedDB setup
const DB_NAME = 'GlossaryCache';
const DB_VERSION = 1;
let dbInstance = null;
async function openDB() {
if (dbInstance) return dbInstance;
return new Promise((resolve, reject) => {
const request = indexedDB.open(DB_NAME, DB_VERSION);
request.onerror = () => reject(request.error);
request.onsuccess = () => {
dbInstance = request.result;
resolve(dbInstance);
};
request.onupgradeneeded = (event) => {
const db = event.target.result;
if (!db.objectStoreNames.contains('glossaries')) {
db.createObjectStore('glossaries', { keyPath: 'key' });
}
if (!db.objectStoreNames.contains('pages')) {
db.createObjectStore('pages', { keyPath: 'key' });
}
};
});
}
async function getCache(storeName, key) {
try {
const db = await openDB();
return new Promise((resolve, reject) => {
const tx = db.transaction(storeName, 'readonly');
const store = tx.objectStore(storeName);
const request = store.get(key);
request.onsuccess = () => resolve(request.result);
request.onerror = () => reject(request.error);
});
} catch (e) {
console.warn(`IndexedDB get failed:`, e);
return null;
}
}
async function setCache(storeName, data) {
try {
const db = await openDB();
return new Promise((resolve, reject) => {
const tx = db.transaction(storeName, 'readwrite');
const store = tx.objectStore(storeName);
const request = store.put(data);
request.onsuccess = () => resolve();
request.onerror = () => reject(request.error);
});
} catch (e) {
console.warn(`IndexedDB set failed:`, e);
}
}
async function deleteCache(storeName, key) {
try {
const db = await openDB();
return new Promise((resolve, reject) => {
const tx = db.transaction(storeName, 'readwrite');
const store = tx.objectStore(storeName);
const request = store.delete(key);
request.onsuccess = () => resolve();
request.onerror = () => reject(request.error);
});
} catch (e) {
console.warn(`IndexedDB delete failed:`, e);
}
}
async function clearAllCache() {
try {
const db = await openDB();
const tx = db.transaction(['glossaries', 'pages'], 'readwrite');
await Promise.all([
new Promise((resolve) => {
tx.objectStore('glossaries').clear().onsuccess = resolve;
}),
new Promise((resolve) => {
tx.objectStore('pages').clear().onsuccess = resolve;
})
]);
} catch (e) {
console.warn(`IndexedDB clear failed:`, e);
}
}
// API state variables
let allWordsFetched = false;
let continueParam = null;
const allWords = [];
// Load cached word list from IndexedDB on startup
(async () => {
try {
const cached = await getCache('glossaries', cacheKey);
if (cached && Date.now() - cached.timestamp < CACHE_EXPIRATION) {
allWords.push(...cached.allWords);
allWordsFetched = cached.allWordsFetched;
continueParam = cached.continueParam;
console.log(`Loaded ${allWords.length} words from IndexedDB cache`);
} else if (cached) {
await deleteCache('glossaries', cacheKey);
}
} catch (e) {
console.warn("Failed to load from IndexedDB:", e);
}
})();
// Fetch a batch of words from the API
async function fetchWordBatch(limit) {
if (allWordsFetched) return [];
const words = [];
let finished = false;
while (words.length < limit && !finished) {
const apiParams = {
action: "query",
list: "categorymembers",
cmprop: "title|sortkeyprefix",
cmnamespace: VALID_NAMESPACES.join("|"),
cmlimit: "max",
cmtitle: "ကဏ္ဍ:" + category,
cmcontinue: continueParam
};
if (filterPrefix) {
apiParams.cmstartsortkeyprefix = filterPrefix.toUpperCase();
}
let response;
try {
response = await actionAPI.get(apiParams);
console.log(`API response: ${response.query.categorymembers.length} entries`);
} catch (error) {
console.error("API request failed:", error);
throw error;
}
// Process API results
for (const entry of response.query.categorymembers) {
if (filterPrefix) {
const sk = (entry.sortkeyprefix || entry.title).toUpperCase();
const prefixUpper = filterPrefix.toUpperCase();
// Stop if we've passed the prefix alphabetically
if (!sk.startsWith(prefixUpper) && sk > prefixUpper) {
console.log(`Stopping: "${sk}" > "${prefixUpper}"`);
finished = true;
break;
}
if (!sk.startsWith(prefixUpper)) {
continue;
}
}
// Add all entries to allWords, but only return limit entries
if (VALID_NAMESPACES.includes(entry.ns)) {
allWords.push(entry.title);
if (words.length < limit) {
words.push(entry.title);
}
}
}
// Save progress to IndexedDB
async function saveCache() {
await setCache('glossaries', {
key: cacheKey,
allWords,
allWordsFetched,
continueParam,
timestamp: Date.now()
});
}
if (finished || !response.continue) {
allWordsFetched = true;
saveCache();
break;
}
continueParam = response.continue.cmcontinue;
saveCache();
}
return words;
}
// Create UI elements
const paginationControlsTop = document.createElement("div");
paginationControlsTop.style = "margin-bottom: 1em; text-align: center;";
const paginationControlsBottom = document.createElement("div");
paginationControlsBottom.style = "margin-top: 1em; text-align: center;";
const glossaryTable = document.createElement("table");
glossaryTable.className = "wikitable";
glossaryTable.style = "width: 100%; table-layout: fixed; display: table";
glossaryTable.innerHTML = `<thead><tr><th style="width:8em">Terms</th><th>Definitions</th></tr></thead><tbody></tbody>`;
autoGlossary.append(paginationControlsTop);
autoGlossary.append(glossaryTable);
autoGlossary.append(paginationControlsBottom);
let abortController = null;
let currentPage = 1;
const loadingIndicator = document.createElement("div");
autoGlossary.append(loadingIndicator);
// Batch fetch formatted terms
async function fetchFormattedTerms(words) {
if (!words || words.length === 0) return new Map();
const result = new Map();
const BATCH_SIZE = 200;
for (let i = 0; i < words.length; i += BATCH_SIZE) {
const batch = words.slice(i, i + BATCH_SIZE);
const wikitext = batch.map((w, idx) =>
`<div class="term-wrapper" data-index="${idx}">{{l|${langCode}|${w}|tr=-}}</div>`
).join("");
try {
const data = await actionAPI.post({
action: 'parse',
text: wikitext,
prop: 'text',
contentmodel: 'wikitext',
disablelimitreport: true
});
const tempDiv = document.createElement("div");
tempDiv.innerHTML = data.parse.text['*'];
const wrappers = tempDiv.querySelectorAll(".term-wrapper");
wrappers.forEach(wrapper => {
const idx = parseInt(wrapper.getAttribute("data-index"));
if (!isNaN(idx) && idx < batch.length) {
result.set(batch[idx], wrapper.innerHTML);
}
});
} catch (e) {
console.warn("Batch formatting failed", e);
}
}
return result;
}
// Fetch and parse definitions for a single word
async function fetchDefinitions(word, formattedTerm, signal) {
if (signal.aborted) return null;
let response;
try {
response = await Promise.race([
restAPI.get("/v1/page/" + encodeURIComponent(word) + "/html"),
new Promise((_, reject) => setTimeout(() => reject(new Error("timeout")), 10000))
]);
} catch (e) {
if (e.message !== "aborted") {
console.warn(`Failed to fetch ${word}:`, e.message);
}
return null;
}
if (signal.aborted || !response) return null;
const responseDocument = new DOMParser().parseFromString(response, "text/html");
try {
const element = responseDocument.getElementById(langID);
if (!element) return null;
const L2_section = element.parentNode;
// Find definitions with inline category or headword category
let glossaryDefs = [...L2_section.getElementsByTagName("li")].filter(li => {
if ([...li.querySelectorAll(CATEGORY_LINK_SELECTOR)]
.some(linkElement => linkElement.getAttribute("href").startsWith(categoryUrl))) {
return true;
}
const headwordLine = li.parentElement.previousElementSibling;
if (!inlineOnly && headwordLine && headwordLine.tagName === "P" &&
[...headwordLine.querySelectorAll('link[rel="mw:PageProp/Category"]')]
.some(linkElement => linkElement.getAttribute("href").startsWith(categoryUrl))) {
return true;
}
return false;
});
// Fallback: grab all top-level definitions if none found
if (!inlineOnly && !glossaryDefs.length) {
glossaryDefs = L2_section.querySelectorAll(".mw-parser-output section > ol > li");
}
// Build table row if definitions found
if (glossaryDefs.length) {
let termElement;
if (formattedTerm) {
termElement = document.createElement("span");
termElement.innerHTML = formattedTerm;
} else {
// Fallback: create a manual link if template expansion fails/missing
termElement = document.createElement("a");
termElement.href = `${WIKTIONARY_BASE}${mw.util.getUrl(word)}#${langID}`;
termElement.textContent = word;
}
const defList = document.createElement("ol");
defList.append(...glossaryDefs);
for (const link of defList.querySelectorAll("a[href]")) {
link.href = new URL(link.getAttribute("href"), `${WIKTIONARY_BASE}${mw.util.getUrl(word)}`).href;
}
defList.querySelectorAll("link, .previewonly, .maintenance-line").forEach(elem => elem.remove());
for (const elem of defList.querySelectorAll("*")) {
for (const attr of [...elem.attributes]) {
if (!ALLOWED_ATTRS.has(attr.name)) {
elem.removeAttribute(attr.name);
}
}
}
const row = document.createElement("tr");
row.insertCell(0).append(termElement);
row.insertCell(1).append(defList);
return row;
}
} catch (e) {
console.error(`Failed to parse ${word}:`, e);
}
return null;
}
// Fetch a page of definitions (with caching)
async function fetchPage(page, signal) {
if (pageCache.has(page)) {
console.log(`Page ${page}: Using memory cache`);
return pageCache.get(page);
}
try {
const pageCacheKey = `${cacheKey}_page_${page}`;
const cached = await getCache('pages', pageCacheKey);
if (cached && Date.now() - cached.timestamp < CACHE_EXPIRATION) {
console.log(`Page ${page}: Loaded from IndexedDB`);
const rows = cached.rows.map(rowData => {
if (!rowData) return null;
const row = document.createElement('tr');
const wordCell = row.insertCell(0);
const defCell = row.insertCell(1);
wordCell.innerHTML = rowData.word;
defCell.innerHTML = rowData.defs;
return row;
});
const pageData = { words: cached.words, rows };
pageCache.set(page, pageData);
return pageData;
} else if (cached) {
await deleteCache('pages', pageCacheKey);
}
} catch (e) {
console.warn("Failed to load page from IndexedDB:", e);
}
// Calculate how many words we need
const startIndex = (page - 1) * pageSize;
const wordsNeeded = startIndex + pageSize;
console.log(`Page ${page}: startIndex=${startIndex}, wordsNeeded=${wordsNeeded}, allWords.length=${allWords.length}, allWordsFetched=${allWordsFetched}`);
// Fetch more words if needed
while (allWords.length < wordsNeeded && !allWordsFetched) {
console.log(`Page ${page}: Fetching more words...`);
await fetchWordBatch(pageSize);
}
// Get words for this page
const pageWords = allWords.slice(startIndex, startIndex + pageSize);
console.log(`Page ${page}: Got ${pageWords.length} words from allWords`);
if (pageWords.length === 0) return { words: [], rows: [] };
// Fetch definitions with concurrency limit
let ongoingRequests = 0;
const MAX_CONCURRENT = 200;
const formattedTermsMap = await fetchFormattedTerms(pageWords);
const rows = await Promise.all(pageWords.map(async (word) => {
if (signal.aborted) return null;
while (ongoingRequests >= MAX_CONCURRENT) {
if (signal.aborted) return null;
await new Promise(resolve => setTimeout(resolve, 10));
}
ongoingRequests++;
const row = await fetchDefinitions(word, formattedTermsMap.get(word), signal);
ongoingRequests--;
return row;
}));
const pageData = {
words: pageWords,
rows: rows.filter(Boolean)
};
pageCache.set(page, pageData);
const pageCacheKey = `${cacheKey}_page_${page}`;
const compressedRows = pageData.rows.map(row => {
if (!row) return null;
const cells = row.querySelectorAll('td');
if (cells.length < 2) return null;
return {
word: cells[0].innerHTML,
defs: cells[1].innerHTML
};
});
await setCache('pages', {
key: pageCacheKey,
words: pageData.words,
rows: compressedRows,
timestamp: Date.now()
});
if (pageCache.size > MAX_CACHE_SIZE) {
const firstKey = pageCache.keys().next().value;
pageCache.delete(firstKey);
}
return pageData;
}
// Prefetch next pages in background
async function prefetchPages(startPage, count) {
const signal = new AbortController().signal;
for (let i = 0; i < count; i++) {
const pageNum = startPage + i;
const totalPages = allWordsFetched ? Math.ceil(allWords.length / pageSize) : Infinity;
if (!pageCache.has(pageNum) && pageNum <= totalPages) {
console.log(`Prefetching page ${pageNum}...`);
fetchPage(pageNum, signal).catch(() => {
});
}
}
}
// Render a specific page
async function renderPage(page) {
if (abortController) {
abortController.abort();
}
abortController = new AbortController();
const signal = abortController.signal;
currentPage = page;
glossaryTable.querySelector("tbody").innerHTML = "";
loadingIndicator.style.display = "block";
loadingIndicator.textContent = "Loading page " + page + "...";
const pageData = await fetchPage(page, signal);
if (signal.aborted) return;
console.log(`Rendering page ${page}: ${pageData.words.length} words, ${pageData.rows.length} rows`);
loadingIndicator.style.display = "none";
const tbody = glossaryTable.querySelector("tbody");
for (const row of pageData.rows) {
tbody.append(row);
if (window.setupHiddenQuotes) {
for (const quote of row.querySelectorAll("ol > li")) {
window.setupHiddenQuotes(quote);
}
}
}
const estimatedTotalPages = allWordsFetched
? Math.ceil(allWords.length / pageSize)
: page + 1;
console.log(`Pagination: allWordsFetched=${allWordsFetched}, allWords.length=${allWords.length}, pageSize=${pageSize}, totalPages=${estimatedTotalPages}`);
renderPaginationControls(currentPage, estimatedTotalPages);
prefetchPages(page + 1, 2);
}
function renderPaginationControls(page, totalPages) {
paginationControlsTop.innerHTML = "";
paginationControlsBottom.innerHTML = "";
if (totalPages <= 1 && allWordsFetched) return;
const createControls = () => {
const container = document.createElement("div");
container.style = "display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap;";
const prevBtn = document.createElement("button");
prevBtn.textContent = "← Previous";
prevBtn.disabled = page === 1;
prevBtn.onclick = () => renderPage(page - 1);
const nextBtn = document.createElement("button");
nextBtn.textContent = "Next →";
nextBtn.disabled = allWordsFetched && page === totalPages;
nextBtn.onclick = () => renderPage(page + 1);
const pageInfo = document.createElement("span");
pageInfo.textContent = allWordsFetched
? `Page ${page} of ${totalPages}`
: `Page ${page}`;
pageInfo.style = "margin: 0 5px;";
let pageInput, goBtn;
if (allWordsFetched && totalPages > 1) {
pageInput = document.createElement("input");
pageInput.type = "number";
pageInput.min = "1";
pageInput.max = totalPages.toString();
pageInput.value = page.toString();
pageInput.style = "width: 60px; text-align: center;";
pageInput.placeholder = "Page";
goBtn = document.createElement("button");
goBtn.textContent = "Go";
const goToPage = () => {
const targetPage = parseInt(pageInput.value);
if (targetPage >= 1 && targetPage <= totalPages) {
renderPage(targetPage);
}
};
goBtn.onclick = goToPage;
pageInput.onkeypress = (e) => {
if (e.key === "Enter") goToPage();
};
}
container.append(prevBtn, pageInfo);
if (pageInput && goBtn) {
container.append(pageInput, goBtn);
}
container.append(nextBtn);
const refreshBtn = document.createElement("button");
refreshBtn.textContent = "🔄 Refresh";
refreshBtn.title = "Clear cache and reload glossary";
refreshBtn.style = "margin-left: 10px;";
refreshBtn.onclick = async () => {
if (confirm("Clear cache and reload glossary?")) {
await clearAllCache();
location.reload();
}
};
container.append(refreshBtn);
return container;
};
paginationControlsTop.append(createControls());
paginationControlsBottom.append(createControls());
}
// Initial render
renderPage(1);
// Clean up loading elements
for (const elem of [...autoGlossary.childNodes]) {
if (elem !== glossaryTable && elem !== paginationControlsTop && elem !== paginationControlsBottom && elem !== loadingIndicator)
elem.remove();
}
}
})();
// </nowiki>
fsbhxunaq5wx9q9m26bnu3r2ehj601f
မဳဒဳယာဝဳကဳ:Gadget-BoldCitedTerms.css
8
295785
396618
2026-06-08T15:14:03Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု ".citedterm { border:var(--wikt-palette-darkgrey,#333) 1px solid; padding: 1px 2px; margin: -2px 0px;font-weight: normal;}"
396618
css
text/css
.citedterm {
border:var(--wikt-palette-darkgrey,#333) 1px solid; padding: 1px 2px; margin: -2px 0px;font-weight: normal;}
hc8ci0ircf5jxrgidm8k728dpw93f4j
မဳဒဳယာဝဳကဳ:Gadget-EditHere.js
8
295786
396619
2026-06-08T15:15:14Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> /** Edit Here **/ // Edit sections of a page without leaving the article // Based on [[en:w:User:BrandonXLF/QuickEdit]] by [[en:w:User:BrandonXLF]] (function () { let mobile = mw.config.get('skin') === 'minerva'; let titleRegexp = new RegExp( mw.config.get('wgArticlePath').replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replace(/\\\$1/, '([^?]+)') + '|[?&]title=([^&#]*)' ); let apiSingleton; const LIVE..."
396619
javascript
text/javascript
// <nowiki>
/** Edit Here **/
// Edit sections of a page without leaving the article
// Based on [[en:w:User:BrandonXLF/QuickEdit]] by [[en:w:User:BrandonXLF]]
(function () {
let mobile = mw.config.get('skin') === 'minerva';
let titleRegexp = new RegExp(
mw.config.get('wgArticlePath').replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replace(/\\\$1/, '([^?]+)') +
'|[?&]title=([^&#]*)'
);
let apiSingleton;
const LIVE_PREVIEW_KEY = 'edithere-live-preview';
function getLivePreviewPref() {
try {
return localStorage.getItem(LIVE_PREVIEW_KEY) === '1';
} catch (e) {
return false;
}
}
function setLivePreviewPref(value) {
try {
localStorage.setItem(LIVE_PREVIEW_KEY, value ? '1' : '0');
} catch (e) { /* empty */ }
}
function api(func, params) {
if (!apiSingleton) {
apiSingleton = new mw.Api();
}
$.extend(params, {
errorformat: 'html',
errorlang: mw.config.get('wgUserLanguage'),
errorsuselocal: true
});
return apiSingleton[func](params).fail(function (_, data) {
mw.notify(apiSingleton.getErrorMessage(data), {
type: 'error',
tag: 'edithere'
});
});
}
function getPageInfo(title, sectionID) {
return api('get', {
action: 'query',
curtimestamp: 1,
prop: 'revisions',
indexpageids: 1,
titles: title,
rvprop: ['timestamp', 'content'],
rvslots: 'main',
rvsection: sectionID
}).then(function (res) {
let rev = res.query.pages[res.query.pageids[0]].revisions[0];
return {
start: res.curtimestamp,
base: rev.timestamp,
full: rev.slots.main['*']
};
});
}
function getPreviewCallback(editor) {
editor.children('.preview').remove();
new OO.ui.ProgressBarWidget().$element.css({
maxWidth: '100%',
borderRadius: '0',
boxShadow: 'none',
margin: '8px 0'
}).addClass('preview').appendTo(editor);
return function (html) {
editor.children('.preview').remove();
const $preview = $('<div>')
.html(html)
.addClass('editHere-borderColorBase').css({
borderWidth: '1px',
borderStyle: 'solid',
padding: '8px',
overflowX: 'hidden'
})
.addClass('preview')
.appendTo(editor);
mw.hook('wikipage.content').fire($preview);
};
}
function showCompare(editor, title, from, to) {
mw.loader.load('mediawiki.diff.styles');
api('post', {
action: 'compare',
fromslots: 'main',
'fromtext-main': from,
fromtitle: title,
frompst: 'true',
toslots: 'main',
'totext-main': to,
totitle: title,
topst: 'true'
}).then(function (r) {
return r.compare['*'] ? $('<table>').addClass('diff').append(
$('<colgroup>').append(
$('<col>').addClass('diff-marker'),
$('<col>').addClass('diff-content'),
$('<col>').addClass('diff-marker'),
$('<col>').addClass('diff-content')
)
).append(r.compare['*']) : 'No differences.';
}).then(getPreviewCallback(editor));
}
// Parts taken from EditPage::extractSectionTitle and Parser::stripSectionName
function getSectionSummary(text) {
let match = text.match(/^(=+)(.+)\1\s*(\n|$)/);
return !match ? '' : '/* ' + match[2].trim()
// Strip internal link markup
.replace(/\[\[:?([^[|]+)\|([^[]+)\]\]/g, '$2')
.replace(/\[\[:?([^[]+)\|?\]\]/g, '$1')
// Strip external link markup
.replace(new RegExp('\\[(?:' + mw.config.get('wgUrlProtocols') + ')([^ ]+?) ([^\\[]+)\\]', 'ig'), '$2')
// Remove wikitext quotes
.replace(/(''|'''|''''')(?!')/g, '')
// Strip HTML tags
.replace(/<[^>]+?>/g, '') + ' */ ';
}
function showEditor($element) {
let progress = new OO.ui.ProgressBarWidget();
// https://www.mediawiki.org/wiki/Heading_HTML_changes
// Cannot use .closest() because DiscussionTools nests an h2 within a .mw-heading
let heading = $element.parents(':header, .mw-heading').last();
let matcher = heading.nextUntil.bind(heading);
let inserter = heading.after.bind(heading);
let targetEl = $element.siblings('.edithere-target').last();
let titleMatch = targetEl.attr('href').match(titleRegexp);
let title = decodeURIComponent(titleMatch[1] || titleMatch[2]);
let sectionID = /[?&]v?e?section=T?-?(\d*)/.exec(targetEl.attr('href'))[1];
if (!heading.closest('.mw-parser-output').length) {
let $articleContent = $('#mw-content-text .mw-parser-output');
matcher = function (selector) {
let $child = $articleContent.children(selector).first();
if ($child.length) {
return $child.prevAll();
}
return $articleContent.children();
};
inserter = $articleContent.prepend.bind($articleContent);
}
inserter(progress.$element.css({
maxWidth: '100%',
borderRadius: '0',
boxShadow: 'none'
}));
$element.addClass('edithere-loading');
$('.edithere-hide').removeClass('edithere-hide');
$('.edithere-heading').removeClass('edithere-heading');
$('#edithere-editor').remove();
getPageInfo(title, sectionID).then(function (r) {
var start = r.start,
base = r.base,
full = r.full,
saving = false,
expanded = false,
remainderStart = full.match(/\n=+.+=+(?:\n|$)/),
part = remainderStart ? full.substring(0, remainderStart.index) : full,
remainder = remainderStart ? full.substring(remainderStart.index) : '',
level = 0,
editor;
full.replace(/^(=+).+?(=+)(?:\n|$)/, function (m, a, b) {
level = Math.min(a.length, b.length);
return m;
});
var levelMatch = 'h1';
for (var i = 2; i <= level; i++)
levelMatch += ', h' + i + ':has(*), .mw-heading' + i;
var partSection = matcher(':header:has(*), .mw-heading'),
fullSection = matcher(levelMatch),
textarea = new OO.ui.MultilineTextInputWidget({
rows: 1,
maxRows: 20,
autosize: true,
value: part
}),
summary = new OO.ui.TextInputWidget({
value: getSectionSummary(part)
}),
minor = new OO.ui.CheckboxInputWidget({
accessKey: 'i',
}),
save = new OO.ui.ButtonInputWidget({
label: 'Save',
title: 'Save your changes',
flags: ['primary', 'progressive'],
accessKey: 's'
}),
preview = new OO.ui.ButtonInputWidget({
label: 'Preview',
title: 'Preview the new wikitext',
accessKey: 'p'
}),
compare = new OO.ui.ButtonInputWidget({
label: 'Compare',
title: 'View the difference between the current revision and your revision',
accessKey: 'v'
}),
cancel = new OO.ui.ButtonInputWidget({
useInputTag: true,
label: 'Cancel',
title: 'Close the edit form and discard changes',
flags: ['secondary', 'destructive']
}),
more = new OO.ui.ButtonInputWidget({
label: '+',
title: 'Edit the entire section (including subsections)'
}),
livePreview = new OO.ui.CheckboxInputWidget({
selected: getLivePreviewPref(),
title: 'Automatically update the preview as you type'
}),
livePreviewField = new OO.ui.FieldLayout(livePreview, {
label: 'Live preview',
align: 'inline'
}),
buttons = new OO.ui.HorizontalLayout({
items: [save, preview, livePreviewField, compare, cancel]
});
livePreviewField.$element.css({
display: 'flex',
alignItems: 'center'
});
if (part != full) {
buttons.addItems([more], 4);
}
partSection.addClass('edithere-hide');
heading.addClass('edithere-heading');
$element.removeClass('edithere-loading');
progress.$element.remove();
textarea.$input.css({
borderRadius: '0'
});
summary.on('enter', function () {
save.emit('click');
});
save.on('click', function () {
if (saving) return;
var fullText = textarea.getValue() + (expanded ? '' : remainder);
saving = true;
save.setLabel('Saving...');
compare.setDisabled(true);
preview.setDisabled(true);
cancel.setDisabled(true);
more.setDisabled(true);
api('postWithEditToken', {
action: 'edit',
title: title,
section: sectionID,
summary: summary.getValue(),
text: fullText,
minor: minor.isSelected() ? true : undefined,
notminor: minor.isSelected() ? undefined : true,
starttimestamp: start,
basetimestamp: base
}).then(function () {
api('get', {
action: 'parse',
page: mw.config.get('wgPageName'),
prop: ['text', 'categorieshtml']
}).then(function (r) {
var contentText = $('#mw-content-text'),
catLinks = $('#catlinks');
contentText.find('.mw-parser-output').replaceWith(r.parse.text['*']);
mw.hook('wikipage.content').fire(contentText);
catLinks.replaceWith(r.parse.categorieshtml['*']);
mw.hook('wikipage.categories').fire(catLinks);
saving = false;
});
}, function (code) {
if (code == 'editconflict') {
showEditConflict(editor, title, sectionID, fullText).then(function (r) {
start = r.start;
base = r.base;
textarea = r.textarea;
expanded = true;
});
}
compare.setDisabled(false);
preview.setDisabled(false);
cancel.setDisabled(false);
more.setDisabled(expanded);
saving = false;
save.setLabel('Save');
});
});
var livePreviewTimer;
function runPreview() {
return api('post', {
action: 'parse',
title: title,
prop: 'text',
pst: 'true',
disablelimitreport: 'true',
disableeditsection: 'true',
sectionpreview: 'true',
disabletoc: 'true',
text: textarea.getValue()
}).then(function (r) {
return r.parse.text['*'] + '<div style="clear:both;"></div>';
}).then(getPreviewCallback(editor));
}
preview.on('click', runPreview);
textarea.on('change', function () {
if (!livePreview.isSelected()) return;
clearTimeout(livePreviewTimer);
livePreviewTimer = setTimeout(runPreview, 300);
});
livePreview.on('change', function (selected) {
setLivePreviewPref(selected);
clearTimeout(livePreviewTimer);
if (selected) {
runPreview();
}
});
compare.on('click', function () {
showCompare(editor, title, part + (expanded ? remainder : ''), textarea.getValue());
});
cancel.on('click', function () {
editor.remove();
heading.removeClass('edithere-heading');
fullSection.removeClass('edithere-hide');
});
more.on('click', function () {
expanded = true;
textarea.setValue(textarea.getValue() + remainder);
fullSection.addClass('edithere-hide');
more.setDisabled(true);
});
editor = $('<div id="edithere-editor">').css({
overflowX: 'hidden'
}).append(
$('<div>').addClass('editHere-backgroundColorInteractive editHere-colorBase editHere-borderColorBase').css({
borderBottomWidth: '1px',
borderBottomStyle: 'solid',
marginBottom: '8px'
}).append(
textarea.$element.css({
width: '100%',
maxWidth: '100%',
fontFamily: 'monospace, monospace'
}).addClass('edithere-textarea'),
$('<div>').addClass('editHere-borderColorBase').css({
borderStyle: 'solid',
borderWidth: '0 1px'
}).append(
$('<div>').css({
padding: '8px 4px 8px 8px',
display: 'table-cell',
verticalAlign: 'middle'
}).html('Edit summary:'),
summary.$element.css({
width: '100%',
maxWidth: '100%',
padding: '8px 0px',
display: 'table-cell',
verticalAlign: 'middle'
}),
new OO.ui.FieldLayout(minor, {
label: new OO.ui.HtmlSnippet('Minor edit?'),
align: 'inline'
}).$element.css({
padding: '8px 8px 8px 4px',
display: 'table-cell',
verticalAlign: 'middle'
})
),
buttons.$element.addClass('editHere-borderColorBase').css({
borderStyle: 'solid',
borderWidth: '0 1px',
padding: '0 8px 8px'
}),
title !== mw.config.get('wgPageName') ? $('<div>').addClass('editHere-borderColorBase').css({
borderStyle: 'solid',
borderWidth: '0 1px',
padding: '0 8px 8px'
}).append(
'Editing page: ',
$('<a>').attr('href', mw.config.get('wgArticlePath').replace('$1', title)).css({
fontWeight: 'bold'
}).text(title.replace(/_/g, ' '))
) : undefined
)
);
inserter(editor);
// Fix cases when editing a section next to two floating images like at
// https://en.wikipedia.org/w/index.php?title=Elevation&oldid=1235703526#Aviation
textarea.updatePosition();
if (livePreview.isSelected()) {
runPreview();
}
}, function () {
$element.removeClass('edithere-loading');
progress.$element.remove();
});
}
function showEditConflict(editor, title, sectionID, text) {
return getPageInfo(title, sectionID).then(function (r) {
var textarea = new OO.ui.MultilineTextInputWidget({
rows: 1,
maxRows: 20,
autosize: true,
value: r.full
}),
textarea2 = new OO.ui.MultilineTextInputWidget({
rows: 1,
maxRows: 20,
autosize: true,
value: text,
});
function syncSize() {
textarea.styleHeight = -1;
textarea.adjustSize(true);
textarea2.styleHeight = -1;
textarea2.adjustSize(true);
var height = Math.max(textarea.$input.height(), textarea2.$input.height());
textarea.$input.height(height);
textarea2.$input.height(height);
}
textarea.$input.css({
borderRadius: '0'
});
editor.find('> :first-child > :first-child').remove();
$('<table>').addClass('editHere-borderColorBase').css({
width: '100%',
borderWidth: '1px',
borderStyle: 'solid',
borderBottom: 'none',
borderSpacing: '0',
margin: '0 !important'
}).append(
$('<tr>').append(
$('<th>').css({
width: '50%',
paddingTop: '4px'
}).text('Their version (to be saved)'),
$('<th>').css({
width: '50%',
paddingTop: '4px'
}).text('Your version')
),
$('<tr>').append(
$('<td>').css({
width: '50%',
padding: '4px 4px 0 8px'
}).append(
textarea.$element.css({
width: '100%',
maxWidth: '100%',
fontFamily: 'monospace, monospace'
})
),
$('<td>').css({
width: '50%',
padding: '4px 8px 0 4px'
}).append(
textarea2.$element.css({
width: '100%',
maxWidth: '100%',
fontFamily: 'monospace, monospace'
})
)
)
).prependTo(editor.find('> :first-child'));
textarea.on('change', syncSize);
textarea2.on('change', syncSize);
syncSize();
showCompare(editor, title, text, r.full);
r.textarea = textarea;
return r;
});
}
function clickHandler(event) {
const $element = $(event.target).closest('.edithere-editlink');
if (!$element.length || $element.hasClass('edithere-loading')) return;
event.preventDefault();
showEditor($element);
}
function addLinksToChildren($element) {
$element.find('#edithere-editor, .edithere-section').remove();
const $editHereLink = $('<a>')
.addClass('edithere-section edithere-editlink')
.attr('href', '#');
if (mobile) {
$editHereLink
.addClass('edithere-icon edithere-minerva-icon')
.attr('role', 'button')
.attr('tabindex', '0')
.append(
createSvg(20, 20)
.html('<path d="M20 14.4286L16.4 14.4286L16.4 7L14.6 7L14.6 14.4286L11 14.4286L15.5 20L20 14.4286Z" /><path fill-rule="evenodd" clip-rule="evenodd" d="M16.4 7.63119V7H15.7688L16.4 7.63119ZM14.6 10.1498L15.7094 9.04044L14.6 7.93109V10.1498ZM13.7688 5L18.4 5V6.31934L18.7092 6.00057C18.8955 5.81322 19 5.55978 19 5.2956C19 5.03143 18.8955 4.77799 18.7092 4.59063L15.3694 1.29078C15.182 1.10454 14.9286 1 14.6644 1C14.4002 1 14.1468 1.10454 13.9594 1.29078L11.9995 3.23069L13.7688 5ZM9.27453 15.4753L5.74979 19H1V14.2502L10.9596 4.29065L12.6 5.93109V12.1498L12.3212 12.4286H6.81374L9.27453 15.4753Z" />')
);
} else {
$editHereLink.text('edit here');
}
$element.find('.mw-editsection').each(function () {
$('[href*="section="]', this)
.last()
.after(
mobile ? '' : '<span class="edithere-section"> | </span>',
$editHereLink.clone(true)
)
.addClass('edithere-target');
});
}
function createSvg(
width,
height,
viewBoxWidth = width,
viewBoxHeight = height
) {
return $(document.createElementNS('http://www.w3.org/2000/svg', 'svg'))
.attr('width', width)
.attr('height', height)
.attr('viewBox', `0 0 ${viewBoxWidth} ${viewBoxHeight}`)
.attr('aria-hidden', 'true')
// https://en.wikipedia.org/wiki/Project:Dark_mode_(gadget)
.addClass('mw-invert');
}
$.when(mw.loader.using(['oojs-ui-core']), $.ready).done(function () {
const $body = $(document.body);
$body.on('click', clickHandler);
addLinksToChildren($body);
mw.hook('wikipage.content').add(addLinksToChildren);
});
mw.loader.addStyleTag(`
.editHere-backgroundColorInteractive {
background-color: var(--background-color-interactive, #eaecf0);
}
.editHere-colorBase {
color: var(--color-base, #202122);
}
.editHere-borderColorBase {
border-color: var(--border-color-base, #a2a9b1);
}
.skin-minerva .mw-editsection {
white-space: nowrap;
}
.skin-minerva .content .collapsible-heading .edithere-section {
visibility: hidden;
}
.skin-minerva .content .collapsible-heading.open-block .edithere-section {
visibility: visible;
}
.edithere-hide {
display: none !important;
}
.edithere-loading,
.edithere-heading {
color: #777;
}
.edithere-icon {
display: inline-flex;
align-items: center;
justify-content: center;
background-image: none;
svg {
fill: currentcolor;
}
}
.edithere-minerva-icon.edithere-minerva-icon {
color: var(--color-subtle, #54595d);
min-width: 44px;
min-height: 44px;
box-sizing: border-box;
border: 1px solid transparent;
border-radius: 2px;
}
.edithere-minerva-icon.edithere-minerva-icon:hover {
background-color: var(--background-color-button-quiet--hover,rgba(0, 24, 73, .027));
}
.edithere-minerva-icon.edithere-minerva-icon:active {
background-color: var(--background-color-button-quiet--active,rgba(0, 24, 73, .082));
border-color: var(--border-color-interactive, #72777d);
}
.edithere-minerva-icon.edithere-minerva-icon:focus {
outline: 1px solid transparent;
}
.edithere-minerva-icon.edithere-minerva-icon:focus:not(:active) {
border-color: var(--border-color-progressive--focus, #36c);
box-shadow: inset 0 0 0 1px var(--box-shadow-color-progressive--focus, #36c);
}`);
})();
// </nowiki>
4krulu2ve87d2d5l7uegoehfo13ftr8
မဳဒဳယာဝဳကဳ:Gadget-EtytreeZoom.js
8
295787
396620
2026-06-08T15:17:18Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> const elem = s => document.createRange().createContextualFragment(s).firstChild; // helper mw.util.addCSS(` .etytree-scale { position: absolute; right: 0; padding: 0.5em; z-index: 100; } .etytree { position: relative; } .etytree-body { transform-origin: top left; } `); function zoomOut(tree) { let navContent = tree.parentElement; let scale = navContent.clientWidth / tree.scrollWidth..."
396620
javascript
text/javascript
// <nowiki>
const elem = s => document.createRange().createContextualFragment(s).firstChild; // helper
mw.util.addCSS(`
.etytree-scale {
position: absolute;
right: 0;
padding: 0.5em;
z-index: 100;
}
.etytree {
position: relative;
}
.etytree-body {
transform-origin: top left;
}
`);
function zoomOut(tree) {
let navContent = tree.parentElement;
let scale = navContent.clientWidth / tree.scrollWidth;
tree.style.transform = `scale(${scale})`;
navContent.style.overflow = "ပၞုက်"; // hide scrollbars
navContent.scrollLeft = 0;
navContent.style.height = `${tree.scrollHeight * scale}px`;
}
function resetZoom(tree) {
let navContent = tree.parentElement;
tree.style.transform = "";
navContent.style.overflow = "auto";
navContent.style.height = "";
}
mw.hook("wikipage.content").add(function($content) {
for (let etytree of $(".etytree", $content).toArray()) {
let navContent = etytree.querySelector(".NavContent");
let tree = navContent.firstElementChild;
let etytreeScale = elem(`<div class="etytree-scale"><button class="etytree-scale-toggle cdx-button">Zoom out</button></div>`.trim());
let toggle = etytreeScale.querySelector(".etytree-scale-toggle");
navContent.prepend(etytreeScale);
etytree.treeZoomedOut = false;
toggle.addEventListener("click", () => {
if (toggle.textContent === "တံၚ်ပ္တိတ်") {
zoomOut(tree);
etytree.treeZoomedOut = true;
toggle.textContent = "ဂြဲလုပ်";
} else {
resetZoom(tree);
etytree.treeZoomedOut = false;
toggle.textContent = "တံၚ်ပ္တိတ်";
}
});
// The button is hidden if there's no horizontal scrollbar.
etytreeScale.style.display = navContent.scrollWidth > navContent.clientWidth ? "" : "none";
(new ResizeObserver(() => {
for (let etytree of $(".etytree", $content).toArray()) {
if (etytree.treeZoomedOut) // redo the zoom out
zoomOut(etytree.querySelector(".etytree-body"));
let etytreeScale = etytree.querySelector(".etytree-scale");
etytreeScale.style.display = navContent.scrollWidth > navContent.clientWidth ? "" : "none";
}
})).observe(navContent);
}
});
// </nowiki>
5pko8pp6oikvlosvj1ud97gqfnd7yl6
မဳဒဳယာဝဳကဳ:Gadget-FlagMovedPageForDeletion.js
8
295788
396621
2026-06-08T15:18:15Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> // Idea: set a local storage item to remember which page got moved. // Then, on the "other side", make an automated edit which replaces the redirect with {{d}}. (async () => { // Setup. Don't add the button if the user already has permissions to delete the page immediately. if (document.querySelector(".movepage-wrapper") && !document.querySelector("#wpLeaveRedirect")) { let firstCheckbox = document.que..."
396621
javascript
text/javascript
// <nowiki>
// Idea: set a local storage item to remember which page got moved.
// Then, on the "other side", make an automated edit which replaces the redirect with {{d}}.
(async () => {
// Setup. Don't add the button if the user already has permissions to delete the page immediately.
if (document.querySelector(".movepage-wrapper") && !document.querySelector("#wpLeaveRedirect")) {
let firstCheckbox = document.querySelector(".movepage-wrapper .oo-ui-fieldLayout-align-inline");
firstCheckbox.insertAdjacentHTML("afterEnd", `<div id="flag-delete-field" class="oo-ui-layout oo-ui-labelElement oo-ui-fieldLayout oo-ui-fieldLayout-align-inline"><div class="oo-ui-fieldLayout-body"><span class="oo-ui-fieldLayout-field"><span id="flag-delete" class="oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-checkboxInputWidget"><input type="checkbox" tabindex="0" id="flag-delete-checkbox" class="oo-ui-inputWidget-input"><span class="oo-ui-checkboxInputWidget-checkIcon oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement-icon oo-ui-icon-check oo-ui-iconElement oo-ui-labelElement-invisible oo-ui-iconWidget oo-ui-image-invert"></span></span></span><span class="oo-ui-fieldLayout-header"><label for="flag-delete-checkbox" class="oo-ui-labelElement-label">Flag the source page for deletion</label></span></div></div>`);
let flagDeleteCheckbox = document.querySelector("#flag-delete-checkbox");
let submitButton = document.querySelector(".movepage-wrapper button");
submitButton.addEventListener("click", () => {
if (flagDeleteCheckbox.checked) {
let oldPageTitle = document.querySelector(`[name="wpOldTitle"]`).value;
localStorage.setItem("flagDelete", oldPageTitle);
}
});
}
// Make the edit after the move has completed.
let sourcePageElem = document.querySelector("#movepage-oldlink");
let pageToFlagDelete = localStorage.getItem("flagDelete");
if (pageToFlagDelete && sourcePageElem && sourcePageElem.textContent === localStorage.getItem("flagDelete")) {
localStorage.removeItem("flagDelete");
let actionAPI = new mw.Api({ajax: {headers: { "Api-User-Agent": "Gadget developed by [[User:Ioaxxere]]"}}});
let targetPage = document.querySelector("#movepage-newlink").textContent;
let reason = "(no reason provided)";
let pageExists = false;
let ns = (new mw.Title(pageToFlagDelete)).namespace;
// 1. Make sure the moved page still exists (sometimes it gets deleted immediately)
let pageExistsQuery = await actionAPI.get({action: "query", titles: pageToFlagDelete, format: "json"});
if (pageExistsQuery.query.pages[-1] === undefined) {
pageExists = true;
// 2. Find out the edit summary through the logevents API.
let moveLogResponse = await actionAPI.get({
action: "query",
letitle: pageToFlagDelete,
list: "logevents",
letype: "move",
format: "json"
});
if (moveLogResponse.query.logevents[0] && moveLogResponse.query.logevents[0].comment)
reason = moveLogResponse.query.logevents[0].comment;
try {
// 3. Make the edit.
await actionAPI.postWithToken("csrf", {
action: "edit",
title: pageToFlagDelete,
summary: "Flagging for deletion after moving the page to [[:" + targetPage + "]]: " + reason + " ([[MediaWiki:Gadget-FlagMovedPageForDeletion.js|automated]])",
text: "{{d|Page moved to [[:" + targetPage + "]]: " + reason + "}}"
});
} catch (e) {
// 4. If there's an error, try again on /documentation.
if (ns === 8 || ns === 9 || ns === 10 || ns === 11 || ns === 828 || ns === 829) {
await actionAPI.postWithToken("csrf", {
action: "edit",
title: pageToFlagDelete + "/documentation",
summary: "Flagging for deletion after moving the page to [[:" + targetPage + "]]: " + reason + " ([[MediaWiki:Gadget-FlagMovedPageForDeletion.js|automated]])",
text: "{{d|Page moved to [[:" + targetPage + "]]: " + reason + "}}"
});
}
}
}
// 5. Display a message on success.
let a = document.createElement("a");
a.href = mw.util.getUrl(pageToFlagDelete);
a.textContent = pageToFlagDelete;
let message = document.createElement("span");
message.append(a, pageExists ? " has been successfully flagged for deletion." : " has been deleted.");
mw.notify(message);
}
})();
// </nowiki>
at6kg31pq5njx9y9yt3evgb0xu9goh0
မဳဒဳယာဝဳကဳ:Gadget-FormOfItalicLemma.css
8
295789
396622
2026-06-08T15:19:05Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု ".use-with-mention .mention { font-style: italic !important; font-weight: normal !important;}"
396622
css
text/css
.use-with-mention .mention {
font-style: italic !important; font-weight: normal !important;}
6gfyao018sxxtsd26vl0cbt67es59sx
မဳဒဳယာဝဳကဳ:Gadget-FormOfItalicQualifier.css
8
295790
396623
2026-06-08T15:19:42Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု ".use-with-mention { font-style: italic;} .use-with-mention .mention { font-weight: normal !important;}"
396623
css
text/css
.use-with-mention {
font-style: italic;}
.use-with-mention .mention {
font-weight: normal !important;}
jormluwxt1r0u9jepbrjr4u8stkv57b
မဳဒဳယာဝဳကဳ:Gadget-FormOfItalicQualifierBoldLemma.css
8
295791
396624
2026-06-08T15:20:15Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု ".use-with-mention { font-style: italic;}"
396624
css
text/css
.use-with-mention {
font-style: italic;}
qf482vrche6qbcpid5g0urlupldl0v5
မဳဒဳယာဝဳကဳ:Gadget-FormOfPlain.css
8
295792
396625
2026-06-08T15:20:45Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု ".use-with-mention .mention { font-weight: normal !important;}"
396625
css
text/css
.use-with-mention .mention {
font-weight: normal !important;}
g9rcqj5uevepl1frkix67ts8cstqzsk
မဳဒဳယာဝဳကဳ:Gadget-HeadersInline.css
8
295793
396626
2026-06-08T15:21:20Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု ".ns-0 h3, .ns-0 h4, .ns-0 #bodyContent h5 { float:left;margin-top:8px;padding-right:5px;padding-top:0px;font-weight:normal;} .ns-0 h3:after, .ns-0 h4:after, .ns-0 #bodyContent h5:after { content:":";} .ns-0 h3 .editsection, .ns-0 h4 .editsection, .ns-0 h5 .editsection { position:absolute;right:0px;} .ns-0 h3+*, .ns-0 h4+*, .ns-0 h5+* { clear:left;} .ns-0 h3+p, .ns-0 h4+p, .ns-0 h5+p { clear:none;margin:0px;pa..."
396626
css
text/css
.ns-0 h3, .ns-0 h4, .ns-0 #bodyContent h5 {
float:left;margin-top:8px;padding-right:5px;padding-top:0px;font-weight:normal;}
.ns-0 h3:after, .ns-0 h4:after, .ns-0 #bodyContent h5:after {
content:":";}
.ns-0 h3 .editsection, .ns-0 h4 .editsection, .ns-0 h5 .editsection {
position:absolute;right:0px;}
.ns-0 h3+*, .ns-0 h4+*, .ns-0 h5+* {
clear:left;}
.ns-0 h3+p, .ns-0 h4+p, .ns-0 h5+p {
clear:none;margin:0px;padding-top:8px;}
.ns-0 h3+p+*, .ns-0 h4+p+*, .ns-0 h5+p+* {
clear:left;}
tio4eqyvgbdtq5a6j4o6c5hgufbnaxo
မဳဒဳယာဝဳကဳ:Gadget-HideFundraisingNotice.css
8
295794
396627
2026-06-08T15:21:59Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "#centralNotice {display:none}"
396627
css
text/css
#centralNotice {display:none}
q0sn7tkj73qqsc4kkaq1hwc20odg6sb
မဳဒဳယာဝဳကဳ:Gadget-JumpToError.js
8
295795
396628
2026-06-08T15:22:54Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> (async () => { const errors = document.querySelectorAll(".scribunto-error"); if (errors.length) { const message = document.createElement("span"); message.id = "jump-to-scribunto-error"; message.textContent = `Warning: this page has ${errors.length} Lua error${errors.length === 1 ? "" : "s"}; click here to jump to the error`; await mw.notify(message); requestAnimationFrame(() => document.querySelector..."
396628
javascript
text/javascript
// <nowiki>
(async () => {
const errors = document.querySelectorAll(".scribunto-error");
if (errors.length) {
const message = document.createElement("span");
message.id = "jump-to-scribunto-error";
message.textContent = `Warning: this page has ${errors.length} Lua error${errors.length === 1 ? "" : "s"}; click here to jump to the error`;
await mw.notify(message);
requestAnimationFrame(() => document.querySelector("#jump-to-scribunto-error").addEventListener("click", () => {
// open navframes etc.
const firstError = errors[0];
const nav = firstError.closest(".NavContent");
if (nav && nav.style.display === "none")
nav.previousElementSibling.click();
const mwCollapsed = firstError.closest(".mw-collapsed");
if (mwCollapsed)
mwCollapsed.querySelector(".mw-collapsible-toggle-collapsed").click();
const vs = firstError.closest(".vsShow, .vsHide");
if (vs && vs.style.display === "none")
vs.closest(".vsSwitcher").querySelector(`[role="button"]`).click();
const nym = firstError.closest("[data-relation-class]");
if (nym && nym.closest("dl").style.display === "none")
[...nym.closest("li").querySelectorAll(".nyms-toggle > a")].find(elem =>
elem.textContent.includes(nym.getAttribute("data-relation-class"))).click();
const quotes = firstError.closest(".wikt-quote-container");
if (quotes && quotes.style.display === "none")
quotes.parentElement.querySelector(`.HQToggle > a`).click();
requestAnimationFrame(() => firstError.scrollIntoView({block: "center"}));
}));
}
})();
// </nowiki>
szgow42j6d62vf2hoyaqvbtx2ccdv41
မဳဒဳယာဝဳကဳ:Gadget-LogoTiles.css
8
295796
396629
2026-06-08T15:26:09Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "#p-logo a { background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/f/ff/WiktionaryMNW.png/250px-WiktionaryMNW.png); background-size: 136px; background-repeat: no-repeat; background-position-y: 0; }"
396629
css
text/css
#p-logo a {
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/f/ff/WiktionaryMNW.png/250px-WiktionaryMNW.png);
background-size: 136px;
background-repeat: no-repeat;
background-position-y: 0;
}
et0rtec26nrdqpauy1yfjqod9ltz7dk
မဳဒဳယာဝဳကဳ:Gadget-MobileCollapseCategories.js
8
295797
396630
2026-06-08T15:27:49Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> /* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:6 */ /* global $, mw, window.VisibilityToggles */ /** * Makes the category list at the bottom of the page collapsible * (intended for use with the mobile Minerva skin). * * Author(s): Surjection * Last updated: 2026-05-15 */ function makeCategoriesCollapsible($el) { const $ul = $("#mw-normal-catlinks > ul, #mw-hidden-cat..."
396630
javascript
text/javascript
// <nowiki>
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:6 */
/* global $, mw, window.VisibilityToggles */
/**
* Makes the category list at the bottom of the page collapsible
* (intended for use with the mobile Minerva skin).
*
* Author(s): Surjection
* Last updated: 2026-05-15
*/
function makeCategoriesCollapsible($el) {
const $ul = $("#mw-normal-catlinks > ul, #mw-hidden-catlinks > ul", $el);
if (!$(".category-list-toggle").length && $ul.length) {
const $toggleElement = $("<div>").addClass("category-list-toggle");
const $navToggle = $("<span>").addClass("NavToggle").attr("data-nosnippet", "");
const $toggleButton = $("<a>").attr("role", "button").attr("tabindex", "0");
const toggleCategory = "page categories";
const showButtonText = "ထ္ၜး ▼";
const hideButtonText = "ပၞုက် ▲";
$navToggle.append($toggleButton).appendTo($toggleElement);
$toggleElement.insertBefore($ul.parent()[0]);
$toggleElement.show();
$toggleButton.text(hideButtonText);
$toggleElement.on("click", window.VisibilityToggles.register(toggleCategory,
function show() {
$toggleButton.text(hideButtonText);
$ul.removeClass("category-list-hidden");
},
function hide() {
$toggleButton.text(showButtonText);
$ul.addClass("category-list-hidden");
})
);
}
}
mw.util.addCSS(`
/* Specificity hacks */
.category-list-hidden, .category-list-hidden.category-list-hidden.category-list-hidden,
.catlinks .category-list-hidden.category-list-hidden.category-list-hidden {
display: none;
}
`);
$(document).ready(function () {
if (window.VisibilityToggles) {
$("#catlinks").each(function () {
makeCategoriesCollapsible($(this));
});
}
});
// </nowiki>
imnu80xsuhdtxgzs999yny7wavj7maq
မဳဒဳယာဝဳကဳ:Gadget-MonobookSmallerHeadings.css
8
295798
396631
2026-06-08T15:28:59Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "/* headings a bit more balanced in size */ h1 { font-size:160%; font-weight:bold; } h2 { font-size:140%; font-weight:bold; } h3 { font-size:130%; } h4 { font-size:120%; } h5 { font-size:110%; } h6 { font-size:100%; }"
396631
css
text/css
/* headings a bit more balanced in size */
h1 {
font-size:160%;
font-weight:bold;
}
h2 {
font-size:140%;
font-weight:bold;
}
h3 {
font-size:130%;
}
h4 {
font-size:120%;
}
h5 {
font-size:110%;
}
h6 {
font-size:100%;
}
sc9io20biiqcj7j28lpmq4tf913rv08
မဳဒဳယာဝဳကဳ:Gadget-MoreMenu-local-pagestyles.css
8
295799
396632
2026-06-08T15:29:36Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "/*** VECTOR ***/ /* User menu */ .client-js .skin-vector.ns-2 #p-views, .client-js .skin-vector.ns-3 #p-views, .client-js > .skin-vector.mw-special-Contributions #p-views, .client-js > .skin-vector.mw-special-DeletedContributions #p-views, .client-js > .skin-vector.mw-special-Block #p-views { width: 2.65em; } /* Page menu */ .client-js .skin-vector:not(.ns-special) #p-views .vector-menu-content::after { cont..."
396632
css
text/css
/*** VECTOR ***/
/* User menu */
.client-js .skin-vector.ns-2 #p-views,
.client-js .skin-vector.ns-3 #p-views,
.client-js > .skin-vector.mw-special-Contributions #p-views,
.client-js > .skin-vector.mw-special-DeletedContributions #p-views,
.client-js > .skin-vector.mw-special-Block #p-views {
width: 2.65em;
}
/* Page menu */
.client-js .skin-vector:not(.ns-special) #p-views .vector-menu-content::after {
content: '';
display: inline-block;
padding-right: 2.84em;
}
8qzztkola0rdf1jb2tv2kgbszd6h55b
မဳဒဳယာဝဳကဳ:Gadget-MoreMenu-local.js
8
295800
396633
2026-06-08T15:30:18Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "mw.loader.load('https://meta.wikimedia.org/w/load.php?modules=ext.gadget.MoreMenu');"
396633
javascript
text/javascript
mw.loader.load('https://meta.wikimedia.org/w/load.php?modules=ext.gadget.MoreMenu');
4a8nztnsxwdkzojyvj6omx0u6wdapgy
မဳဒဳယာဝဳကဳ:Gadget-NewEntryWizard.js
8
295801
396634
2026-06-08T15:30:55Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> // Optimization, because this gadget is run unconditionally if (document.getElementById("necplaceholder")) importScript("MediaWiki:NewEntryWizard-main.js"); // [[MediaWiki:NewEntryWizard-main.js]] // </nowiki>"
396634
javascript
text/javascript
// <nowiki>
// Optimization, because this gadget is run unconditionally
if (document.getElementById("necplaceholder"))
importScript("MediaWiki:NewEntryWizard-main.js"); // [[MediaWiki:NewEntryWizard-main.js]]
// </nowiki>
l9e7ed1w5tyeoj09jawyknud9n2qma9
မဳဒဳယာဝဳကဳ:NewEntryWizard-main.js
8
295802
396635
2026-06-08T15:49:07Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// todo: clean, jQuerize, use langmetadata, let users extend this /* jshint sub:true, shadow:true, undef:true, unused:true, strict:true, forin:true, latedef:true */ /* global jQuery */ // <nowiki> window.necdata = { pos: "noun", pos2: "နာမ်" }; window.necdefs = [ ['', [], [] ] ]; window.necpost = []; for (var i = 5; i <= 19; ++i) { necpost[i] = []; } window.neccode = 'mnw'; window.necpostlangtext =..."
396635
javascript
text/javascript
// todo: clean, jQuerize, use langmetadata, let users extend this
/* jshint sub:true, shadow:true, undef:true, unused:true, strict:true, forin:true, latedef:true */
/* global jQuery */
// <nowiki>
window.necdata = {
pos: "noun",
pos2: "နာမ်"
};
window.necdefs = [
['', [],
[]
]
];
window.necpost = [];
for (var i = 5; i <= 19; ++i) {
necpost[i] = [];
}
window.neccode = 'mnw';
window.necpostlangtext = [];
var title = mw.config.get('wgTitle');
window.necinfls = {
cmn: {
noun: ['{{cmn-noun', '}}', ['Type', '', [
['Simplified', '|s', "necinfls['cmn']['noun'][6][0]='Traditional';necinfls['cmn']['noun'][6][2][0][2]='|tra='"],
['Traditional', '|t', "necinfls['cmn']['noun'][6][0]='Simplified';necinfls['cmn']['noun'][6][2][0][2]='|sim='"],
['both', '|ts', "necinfls['cmn']['noun'][6][2][0][2]=''"]
]],
['Pinyin', '', [
['input', ' ', '|pin=']
]],
['Pinyin (tone marks as numbers)', '', [
['input', ' ', '|pint=']
]],
['Traditional', '', [
['input', ' ', '|tra=']
]]
]
},
ca: {
noun: ['{{ca-noun', '}}', ['Gender', '', [
['Unknown', ''],
['masculine', '|m'],
['feminine', '|f']
]],
['Plural', '', [
[title + 's', ''],
['input', ' ', '|pl='],
['(uncountable)', '|pl=-']
]]
],
adjective: ['{{ca-adj', '}}'],
adverb: ['{{ca-adv', '}}']
},
en: {
noun: ['{{en-noun', '}}', ['Plural', '', [
[title + 's', ''],
[title + 'es', '|es'],
['(uncountable)', '|-'],
['input', 'Other: ', '|']
]], ],
verb: ['{{en-verb', '}}', ['Third-person singular present tense', '', [
[title + 's', '|' + title + 's'],
['input', 'Other: ', '|']
]],
['Present participle', '', [
[title + 'ing', '|' + title + 'ing'],
['input', 'Other: ', '|']
]],
['Past tense', '', [
[title + 'ed', '|' + title + 'ed'],
['input', 'Other: ', '|']
]],
['Past participle', '', [
[title + 'ed', '|' + title + 'ed'],
['input', 'Other: ', '|']
]]
],
adjective: ['{{en-adj', '}}', ['Comparative', '', [
['more ' + title, '', "necdata['en-adjective3']='most '+title"],
[title + 'er', '|er', "necdata['en-adjective3']=title+'est'"],
['(not comparable)', '|-', "necdata['en-adjective3']='(not comparable)'"],
['input', 'Other: ', '|', '', 'necfunction6("en-adjective3","en-adjective-3-3")']
]],
['Superlative', '', [
['most ' + title, '', "necdata['en-adjective2']='more '+title"],
[title + 'est', '', "necdata['en-adjective2']=title+'er'"],
['(not comparable)', '', "necdata['en-adjective2']='(not comparable)'"],
['input', 'Other: ', '|', '', 'necfunction6("en-adjective2","en-adjective-2-3")']
]]
],
adverb: ['{{en-adv', '}}', ['Comparative', '', [
['more ' + title, '', "necdata['en-adverb3']='most '+title"],
[title + 'er', '|er', "necdata['en-adverb3']=title+'est'"],
['(not comparable)', '|-', "necdata['en-adverb3']='(not comparable)'"],
['input', 'Other: ', '|', '', 'necfunction6("en-adverb3","en-adverb-3-3")']
]],
['Superlative', '', [
['most ' + title, '', "necdata['en-adverb2']='more '+title"],
[title + 'est', '', "necdata['en-adverb2']=title+'er'"],
['(not comparable)', '', "necdata['en-adverb2']='(not comparable)'"],
['input', 'Other: ', '|', '', 'necfunction6("en-adverb2","en-adverb-2-3")']
]]
],
pronoun: ['{{en-pron', '}}'],
conjunction: ['{{en-con', '}}'],
interjection: ['{{en-interj', '}}'],
preposition: ['{{en-prep', '}}'],
propernoun: ['{{en-proper noun', '}}', ['Plural', '', [
['None', ''],
[title + 's', '|s'],
['input', 'Other: ', '|']
]]],
contraction: ['{{en-cont', '}}'],
prefix: ['{{en-prefix', '}}'],
suffix: ['{{en-suffix', '}}']
},
eo: {
noun: ['{{eo-noun', '}}'],
verb: ['{{eo-verb', '}}'],
adjective: ['{{eo-adj', '}}'],
adverb: ['{{eo-adv', '}}'],
propernoun: ['{{eo-proper noun', '}}']
},
es: {
noun: ['{{es-noun', '}}'],
adjective: ['{{es-adj', '}}'],
adverb: ['{{es-adv', '}}'],
propernoun: ['{{es-proper noun', '}}']
},
fr: {
noun: ['{{fr-noun', '}}', ['Gender', '', [
['Unknown', ''],
['masculine', '|m'],
['feminine', '|f']
]],
['Plural', '', [
[title + 's', ''],
['input', ' ', '|pl='],
['(uncountable)', '|pl=-']
]]
],
adjective: ['{{fr-adj', '}}'],
verb: ['{{fr-verb', '}}'],
adverb: ['{{fr-adv', '}}']
},
enm: {
noun: ['{{enm-noun', '}}']
},
frm: {
noun: ['{{frm-noun', '}}', ['Gender', '', [
['Unknown', ''],
['masculine', '|m'],
['feminine', '|f']
]],
['Plural', '', [
[title + 's', ''],
['input', ' ', '|pl='],
['(uncountable)', '|pl=-']
]]
],
adjective: ['{{frm-adj', '}}']
},
fro: {
noun: ['{{fro-noun', '}}', ['Gender', '', [
['Unknown', ''],
['masculine', '|m'],
['feminine', '|f']
]]]
},
he: {
noun: ['{{he-noun', '}}', ['ကၠာဲ', '', [
['input', ' ', '|tr=']
]],
['With vowels', '', [
['?', ''],
['input', ' ', '|wv=']
]],
['Gender', '', [
['?', ''],
['Masculine', '|g=m'],
['Feminine', '|g=f']
]],
['Plural', '', [
['?', ''],
[title + 'ים', '|pl=' + title + 'ים'],
[title + 'ות', '|pl=' + title + 'ות'],
['input', 'Other: ', '|pl='],
['(uncountable)', '|pl=-']
]],
['Plural with vowels', '', [
['?', ''],
['input', ' ', '|plwv=']
]],
['Construct', '', [
['?', ''],
['input', ' ', '|cons='],
['none', '|cons=-']
]],
['Construct with vowels', '', [
['?', ''],
['input', ' ', '|conswv=']
]]
],
verb: ['{{he-verb', '}}', ['ကၠာဲ', '', [
['input', ' ', '|tr=']
]],
['With vowels', '', [
['?', ''],
['input', ' ', '|wv=']
]],
['Binyan', '', [
['?', ''],
['paal', '|pa'],
['nifal', '|nif'],
['piel', '|pi'],
['pual', '|pu'],
['hifil', '|hif'],
['hufal', '|huf'],
['hitpael', '|hit'],
['hitpual', "|hitpu'al"]
]]
],
adverb: ['{{he-adv', '}}', ['Transliteration', '', [
['input', ' ', '|tr=']
]],
['With vowels', '', [
['?', ''],
['input', ' ', '|wv=']
]]
]
},
hi: {
noun: ['{{hi-noun', '}}', ['Gender', '', [
['unknown', ''],
['masculine', '|g=m'],
['feminine', '|g=f'],
['neutral', '|g=mf'],
['m. plural', '|g=mp'],
['f. plural', '|g=fp'],
['n. plural', '|g=p']
]],
['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
propernoun: ['{{hi-proper noun', '}}', ['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
adjective: ['{{hi-adj', '}}', ['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
verb: ['{{hi-verb', '}}', ['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
adverb: ['{{hi-adv', '}}', ['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
verbform: ['{{hi-verb-form', '}}', ['Gender', '', [
['unknown', ''],
['masculine', '|g=m'],
['feminine', '|g=f'],
['m. plural', '|g=m-p'],
['f. plural', '|g=f-p']
]],
['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
pronoun: ['{{hi-pron', '}}', ['Gender', '', [
['unknown', ''],
['masculine', '|g=m'],
['feminine', '|g=f']
]],
['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
interjection: ['{{hi-interj', '}}', ['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
preposition: ['{{hi-prep', '}}', ['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
postposition: ['{{hi-post', '}}', ['Urdu form', '', [
['none', ''],
['input', ' ', '|ur=']
]],
['Transliteration', '', [
['default', ''],
['input', ' ', '|tr=']
]]
],
},
hil: {
noun: ['{{hil-noun', '}}']
},
io: {
noun: ['{{io-noun', '}}'],
verb: ['{{io-verb', '}}'],
adjective: ['{{io-adj', '}}'],
adverb: ['{{io-adv', '}}']
},
lb: {
noun: ['{{lb-noun', '}}', ['Gender', '', [
['Unknown', ''],
['masculine', '|m'],
['feminine', '|f'],
['neuter', '|n']
]],
['Plural', '', [
[title + 's', ''],
['input', ' ', '|pl='],
['(uncountable)', '|pl=-']
]]
],
adjective: ['{{lb-adj', '}}']
},
my: {
noun: ['{{my-noun', '}}']
},
nmn: {
noun: ['{{nmn-noun', '}}', ['Plural', '', [
['input', ' ', '|pl=']
]],
['Diminutive', '', [
['input', ' ', '|dim=']
]],
['Diminutive plural', '', [
['input', ' ', '|dim_pl=']
]],
['Tone class', '', [
['input', ' ', '|tone_class=']
]],
['Noun class', '', [
['input', ' ', '|noun_class=']
]]
]
},
oc: {
noun: ['{{oc-noun', '}}', ['Gender', '', [
['Unknown', ''],
['masculine', '|m'],
['feminine', '|f']
]],
['Plural', '', [
[title + 's', ''],
['input', ' ', '|pl='],
['(uncountable)', '|pl=-']
]]
],
adjective: ['{{oc-adj', '}}'],
verb: ['{{oc-verb', '}}']
},
pl: {
noun: ['{{pl-noun', '}}', ['Gender', '', [
['unknown', ''],
['masculine', '|m'],
['masculine personal', '|m-pr'],
['masculine animate', '|m-an'],
['masculine inanimate', '|m-in'],
['feminine', '|f'],
['neuter', '|n']
]],
['Diminutive', '', [
['none', ''],
['input', ' ', '|dim=']
]],
['Augmentative', '', [
['none', ''],
['input', ' ', '|aug=']
]],
['Female equivalent', '', [
['none', ''],
['input', ' ', '|f=']
]],
['Male equivalent', '', [
['none', ''],
['input', ' ', '|m=']
]],
['Abbreviation', '', [
['none', ''],
['input', ' ', '|abbr=']
]]
],
propernoun: ['{{pl-proper noun', '}}', ['Gender', '', [
['unknown', ''],
['masculine', '|m'],
['masculine personal', '|m-pr'],
['masculine animate', '|m-an'],
['masculine inanimate', '|m-in'],
['feminine', '|f'],
['neuter', '|n']
]],
['Female equivalent', '', [
['none', ''],
['input', ' ', '|f=']
]],
['Male equivalent', '', [
['none', ''],
['input', ' ', '|m=']
]],
['Abbreviation', '', [
['none', ''],
['input', ' ', '|abbr=']
]]
],
adjective: ['{{pl-adj', '}}', ['Gender', '', [
['unknown', '|?'],
['masculine', '|m'],
['feminine', '|f'],
['neuter', '|n']
]],
['Comparative', '', [
['(unknown)', ''],
['bardziej ' + title, '|bardziej'],
['(not comparable)', '|-'],
['input', 'Other: ', '|', '']
]]
],
adverb: ['{{pl-adv', '}}', ['Comparative', '', [
['(unknown)', ''],
[title + 'j', '|j'],
['bardziej ' + title, '|bardziej'],
['(not comparable)', '|-'],
['input', 'Other: ', '|', '']
]]],
verb: ['{{pl-verb', '}}', ['Aspect', '', [
['unknown', ''],
['imperfective', '|a=impf'],
['perfective', '|a=pf']
]],
['Imperfective counterpart', '', [
['none', ''],
['input', ' ', '|impf=']
]],
['Perfective counterpart', '', [
['none', ''],
['input', ' ', '|pf=']
]]
],
},
pro: {
noun: ['{{pro-noun', '}}', ['Gender', '', [
['Unknown', ''],
['masculine', '|m'],
['feminine', '|f']
]],
['Plural', '', [
[title + 's', ''],
['input', ' ', '|pl='],
['(uncountable)', '|pl=-']
]]
],
adjective: ['{{pro-adj', '}}']
},
pt: {
noun: ['{{pt-noun', '}}', ['Gender', '', [
['Unknown', ''],
['masculine', '|m'],
['feminine', '|f']
]],
['Plural', '', [
[title + 's', ''],
['input', ' ', '|pl='],
['(uncountable)', '|pl=-']
]]
],
adjective: ['{{pt-adj', '}}']
},
ru: {
noun: ['{{ru-noun|', '}}', ['Gender', '', [
['Unknown', '|?'],
['masculine animate', '|m-an'],
['masculine inanimate', '|m-in'],
['feminine animate', '|f-an'],
['feminine inanimate', '|f-in'],
['neuter animate', '|n-an'],
['neuter inanimate', '|n-in'],
['masculine animate plural', '|m-an-p'],
['masculine inanimate plural', '|m-in-p'],
['feminine animate plural', '|f-an-p'],
['feminine inanimate plural', '|f-in-p'],
['neuter animate plural', '|n-an-p'],
['neuter inanimate plural', '|n-in-p'],
['plural', '|p']
]]],
propernoun: ['{{ru-proper noun', '}}', ['Gender', '', [
['unknown', ''],
['masculine', '|m'],
['masculine animate', '|m-an'],
['masculine inanimate', '|m-in'],
['feminine', '|f'],
['neuter', '|n']
]],
['Female equivalent', '', [
['none', ''],
['input', ' ', '|f=']
]],
['Male equivalent', '', [
['none', ''],
['input', ' ', '|m=']
]]
],
adjective: ['{{ru-adj', '}}'],
verb: ['{{ru-verb', '}}', ['Stress-marked form', '', [
['input', '', '|']
]],
['Aspect', '', [
['unknown', '|?'],
['imperfective', '|impf'],
['perfective', '|pf']
]],
['Imperfective counterpart', '', [
['none', ''],
['input', ' ', '|impf=']
]],
['Perfective counterpart', '', [
['none', ''],
['input', ' ', '|pf=']
]]
],
adverb: ['{{ru-adv', '}}', ['Stress-marked form', '', [
['input', '', '|']
]],
['Comparative', '', [
['(unknown)', ''],
['(not comparable)', '|-'],
['input', 'Other: ', '|', '']
]]
],
},
wym: {
noun: ['{{head|wym|noun', '}}', ['Gender', '', [
['None', ''],
['masculine', '|g=m'],
['feminine', '|g=f']
]]]
}
};
/*
Notes:
necfunction fills in the edit box
necfunction2 creates the main menu stuff inside the span id'd necplaceholder
necfunction3 doesn't exist
necfunction4 goes to necfunction5 (don't remember what this was for)
necfunction5 creates the inflections options by filling in necinfls
necfunction6 does some extra junk for the infl options input boxes
necdefupdate makes the definitions/example sentence options
necpostbox makes the extra junk ("More details") work (i think)
More recent note: I knew next to nothing about javascript when I originally wrote this, so the code is an utter mess.
It's also probably never going to be fixed up because really, I'd rather work on making WT:EDIT stuff the primary easy-editing method instead of tools like this.
The necinfls object works like this:
Each language is its own object, containing an object for each pos, which contains the information for that pos.
The first part is the stuff that comes at the beginning of the template, the second is the stuff at the end, the third onward are the available parameters of the template and what stuff they produce.
Each template parameter is an array, which contains the word that shows up at the beginning of the section, then a blank value, and then subarrays of each option.
Each subarray contains the text that shows up in the editor, followed by the text that shows up in the textbox (the wikimarkup). Some onclick javascript can be added to an option as the third parameter in the array.
If the option is an input box, the first parameter should be "input", followed by the editor text (DON'T leave this blank or the whole thing will blow up), followed by the pre-inputbox-value wikimarkup, followed by post-inputbox-value wikimarkup, followed by any extra js.
Does this make any sense to anyone? :)
Things to do:
1 Get quotations to work right
2 Fix up pronunciation section
3 Add little help thingies
4 Inflection tables
5 Get the example sentence auto-bolding to not stink
6 Build add-section stuff
There are little href=javascript: things littered all over the place because I don't know any other way to make things look like unvisited links without having to actually put anything in the href.
eh, sploot
*/
window.necetym = null;
window.necpron = null;
window.necheadingorder = ['Usage notes', 'ပရေၚ်ကၠောံ', 'Conjugation', 'လဟုတ်စှ်ေ', 'ဆက်လ္ၚတ်', 'ဝေါဟာလွာ', 'ဝေါဟာတၟုပ်', 'Hypernyms', 'Hyponyms', 'Meronyms', 'Holonyms', 'ဝေါဟာဒစး', 'Related terms', 'Coordinate terms', 'မဒုၚ်လွဳစ', 'ကၠာဲ', 'ဗဵုရံၚ်တဏအ်ကီု', 'External links', 'Categories', 'Images'];
window.necinputadvanced = "";
window.necposlist = ['နာမ်', 'ကြိယာ', 'နာမဝိသေသန', 'ကြိယာဝိသေသန', 'သဗ္ဗနာမ်', 'သမ္ဗန္ဓ', 'အာမေဍိက်', 'ဝိဘတ်', 'နာမ်မကိတ်ညဳ', 'ပစ္စဲ', 'ဝါကျကဆံၚ်အကာဲအရာ', 'ပွမထညောံ', 'အဆက်ဂတ', 'အဆက်လက္ကရဴ', 'သၚ်္ကေတ', 'အက္ခရ်', 'Idiom', 'ဝါကျ'];
function necfunction2() {
/* CREATE OPTIONS */
var x = "Language code: <input type=text value='en' id='necinput' onKeyUp='neccode=this.value;necfunction();necfunction4();necfunction()' onblur=if (necCleanLangCode(this.value)){this.value=necCleanLangCode(this.value)};neccode=this.value;document.getElementById('nectransspan').style.display=((this.value=='en')?'':'none');if (/^[a-z]{2,3}(-[a-z\-]{1,7})?$/.test(this.value)){document.getElementById('neclangerror').style.display='none'}else{document.getElementById('neclangerror').style.display=''};necfunction();necfunction4();necfunction();necdefupdate() title='The two or three letter ISO-639 language code'></input><span id=neclangerror style=display:none;color:red> ERROR: INVALID LANGUAGE CODE</span><br>Part of speech: ";
for (var i = 0; i < 4; ++i) {
x += "<a id='necinputpos" + necposlist[i] + "' href=javascript: onclick=document.getElementById('necinputpos'+necdata['pos2']).style.fontWeight='';necdata['pos2']='" + necposlist[i] + "';necdata['pos']='" + necposlist[i].toLowerCase() + "';this.style.fontWeight='bold';necfunction4();necfunction()";
if (!i) {
x += " style='font-weight:bold'";
}
x += ">" + necposlist[i] + "</a>, ";
}
x += "<span id='necinputpos'>Other: <input type=text onKeyUp=\"document.getElementById('necinputpos'+necdata['pos2']).style.fontWeight='';necdata['pos2']=this.value;necdata['pos']=this.value.toLowerCase().replace(/ /g,'');this.parentNode.setAttribute('ID','necinputpos'+this.value);document.getElementById('necinputpos'+necdata['pos2']).style.fontWeight='bold';necfunction();necfunction4()\" /><select onchange=\"document.getElementById('necinputpos'+necdata['pos2']).style.fontWeight='';necdata['pos2']=this.value;necdata['pos']=this.value.toLowerCase().replace(/ /g,'');this.parentNode.setAttribute('ID','necinputpos'+this.value);document.getElementById('necinputpos'+necdata['pos2']).style.fontWeight='bold';necfunction();necfunction4()\"><option value=''>Select</option>";
for (var i = 0; i < necposlist.length; ++i) {
if (i > 3) {
x += "<option>" + necposlist[i] + "</option>";
}
}
x += "</select></span><span id=necinfls></span><br>More details: <a id=necquotbutton href=javascript: onclick=necpostbox(0);necfunction();this.style.fontWeight='bold' title='Add Usage Notes section'>Usage notes</a>, <a href=javascript: id=necSynonymsbutton onclick=necpost[5][necpost[5].length]=['',''];necpostbox();necfunction();this.style.fontWeight='bold' title='Add Synonyms section'>Synonyms</a>, <span id=nectransspan><a href=javascript: id=nectransbutton onclick=necpost[15].push('');necpostbox();necfunction();this.style.fontWeight='bold' title='Add Translations section'>Translations</a>, </span>More: <select onchange=necpostbox(this.value);this.selectedIndex=0;necfunction()><option select='selected'>Select</option>";
for (var i = 0; i < necheadingorder.length; ++i) {
if (i != 0 && i != 5 && i != 15) {
x += "<option value=" + i + ">" + necheadingorder[i] + "</option>";
}
}
x += "</select><br><span id=necpostbox></span><span id='necdefs'>Definition: <input type=text id='necinput3' onKeyUp=necdefs[0][0]=this.value;necfunction() /><br></span>Further information: <a href=javascript:necdefs.push(['',[],[]]);necdefupdate();necfunction() title='Add new definition'>Another definition</a>, <a href=javascript: id=necetymbutton onclick=document.getElementById('necetymspan').style.display='';necetym=document.getElementById('necetyminput').value;necfunction();this.style.fontWeight='bold' title='Add etymology section'>Etymology</a>, <a href=javascript: id=necpronbutton onclick=document.getElementById('necpronspan').style.display='';necpron=document.getElementById('necproninput').value;necfunction();this.style.fontWeight='bold' title='Add pronunciation section'>Pronunciation</a>. <span id='necetymspan' style='display:none'><br>Etymology: <a href=javascript: onclick=necetym=undefined;document.getElementById('necetymspan').style.display='none';necfunction();document.getElementById('necetymbutton').style.fontWeight='' title='Delete etymology section'>(delete)</a><br><textarea id=necetyminput onKeyUp=necetym=this.value;necfunction()></textarea></span><span id=necpronspan style='display:none'><br>Pronunciation: <a href=javascript: onclick=necpron=undefined;document.getElementById('necpronspan').style.display='none';necfunction();document.getElementById('necpronbutton').style.fontWeight='' title='Delete pronunciation section'>(delete)</a><br><textarea id=necproninput onKeyUp=necpron=this.value;necfunction()></textarea></span><div style='float:right;'><a href=/w/index.php?title=User_talk:Yair_rand/newentrywiz.js&action=edit§ion=new title='Give feedback'>Give feedback</a></div>";
document.getElementById("editform").insertBefore(document.getElementById("necplaceholder"), document.getElementById("editform").firstChild);
document.getElementById("necplaceholder").innerHTML = x;
if (document.URL.match("§ion=new")) {
document.getElementById("wpSummaryLabel").parentNode.removeChild(document.getElementById("wpSummaryLabel"));
document.getElementById("wpSummary").parentNode.removeChild(document.getElementById("wpSummary"));
}
}
// Fill in the edit box.
function necfunction() {
var k = "";
if (document.URL.match("§ion=new")) {
k += "----\n{{rfc-auto}}\n";
} else {
var neceditsummary = "([[MediaWiki:newentrywiz.js|NEC]]) +" + neccode + ":" + necdata['pos'] + ": "; //edit summary
for (var i = 0; i < necdefs.length; ++i) {
neceditsummary += ((i != 0) ? ', ' : '') + necdefs[i][0];
}
document.getElementById("wpSummary").value = neceditsummary;
}
k += "=={{subst:#invoke:languages/templates|getByCode|" + document.getElementById('necinput').value + "|getCanonicalName}}==";
for (var i = 0; i < necpost[19].length; ++i) {
k += "\n[[Image:" + necpost[19][i][0] + "|thumb|" + necpost[19][i][1] + "]]";
}
k += "\n\n";
if (necetym != undefined) {
k += "===နိရုတ်===\n" + necetym + "\n\n";
}
if (necpron != undefined) {
k += "===ဗွဟ်ရမ္သာၚ်===\n" + necpron + "\n\n";
}
k += "===" + necdata['pos2'] + "===\n";
if (!neccode) {
neccode = '';
}
if (neccode != '' && necinfls[neccode] && necinfls[neccode][necdata['pos']] && necinfls[neccode][necdata['pos']][2]) {
if (necdata[neccode + "-" + necdata['pos'] + "2"] != "Advanced") {
if (necinfls[neccode][necdata['pos']][0] != undefined) {
k += necinfls[neccode][necdata['pos']][0];
}
var x = necinfls[neccode][necdata['pos']];
for (var z = 0; z < x.length; ++z) {
if (z <= 1) {
continue;
}
var zz = neccode + "-" + necdata['pos'] + z;
for (var y = 0; y < x[z][2].length; ++y) // search for inflections
{
if (x[z][2][y][0] != "input" && necdata[zz] == x[z][2][y][0]) // is selected option, not input box
{
k += x[z][2][y][1];
break;
}
if (x[z][2][y][0] == "input" && necfunction7(x[z][2], necdata[zz]) == false) {
k += x[z][2][y][2] + necdata[zz];
}
}
}
if (necinfls[neccode][necdata['pos']][1] != undefined) {
k += necinfls[neccode][necdata['pos']][1];
}
} else {
k += necinputadvanced;
}
} else {
if (necinputadvanced) {
k += necinputadvanced;
} else {
if (neccode != '' && necinfls[neccode] && necinfls[neccode][necdata['pos']]) {
k += necinfls[neccode][necdata['pos']][0];
k += necinfls[neccode][necdata['pos']][1];
} else {
k += '{{head|' + neccode + '|' + necdata['pos2'].toLowerCase();
k += '}}';
}
}
}
k += "\n";
for (var i = 0; i < necdefs.length; ++i) {
k += "\n# " + necdefs[i][0];
for (var l = 0; l < necdefs[i][1].length; ++l) {
k += "\n#:''" + necdefs[i][1][l][0].replace(new RegExp("(" + title + ")", "ig"), "'''$1'''") + "''";
if (neccode != "en" && necdefs[i][1][l][1] && (new LangMetadata()).guessScript(neccode) != 'Latn') {
k += "\n#::''" + necdefs[i][1][l][1] + "''";
}
if (neccode != "en") {
k += "\n#::''" + necdefs[i][1][l][2] + "''";
}
}
for (var l = 0; l < necdefs[i][2].length; ++l) {
k += "\n#*'''" + necdefs[i][2][l][0] + "''', " + necdefs[i][2][l][1] + ", ''" + necdefs[i][2][l][2] + "''";
if (necdefs[i][2][l][3]) {
k += ", " + necdefs[i][2][l][3];
}
if (necdefs[i][2][l][4]) {
k += ", page";
if (necdefs[i][2][l][4].match(/(-|–)/)) {
k += "s";
}
k += " " + necdefs[i][2][l][4];
}
k += "\n#*:";
k += necdefs[i][2][l][5].replace(new RegExp("(" + title + ")", "ig"), "'''$1'''");
if (neccode != "mnw") {
k += "\n#*::" + necdefs[i][2][l][6];
}
}
}
/* SUBHEADERS */
for (var o = 0; o <= 3; ++o) {
if (necpost[o] != undefined) {
k += "\n\n====" + necheadingorder[o] + "====\n" + necpost[o];
}
}
if (necpost[4] != undefined) {
k += "\n\n====ဆက်လ္ၚတ်====\n" + necpost[4];
}
for (var o = 5; o <= 17; ++o) {
if (necpost[o][0] != undefined) {
k += "\n\n====" + necheadingorder[o] + "===="
}
if (o < 11 || o == 13) {
for (var i = 0; i < necpost[o].length; ++i) {
k += "\n* {{sense|" + necpost[o][i][0] + "}} ";
for (var u = 0; u < necpost[o][i].length; ++u) {
if (u != 0) {
if (u != 1) {
k += ", ";
}
k += "{{l|" + neccode + "|" + necpost[o][i][u] + "}}";
}
}
}
} else if (o == 14) {
for (var i = 0; i < necpost[o].length; ++i) {
k += "\n* {{subst:#invoke:languages/templates|getByCode|" + necpost[o][i][0] + "|getCanonicalName}}: {{l|" + necpost[o][i][0];
k += "|" + necpost[o][i][1] + "}}";
}
} else if (o == 15) {
for (var i = 0; i < necpost[15].length; ++i) {
k += "\n{{trans-top|" + necpost[15][i] + "}}\n{{trans-bottom}}";
}
} else if (o == 16 || o == 17) {
for (var i = 0; i < necpost[o].length; ++i) {
k += "\n* " + necpost[o][i];
}
} else {
for (var i = 0; i < necpost[o].length; ++i) {
k += "\n* {{l|" + neccode + "|" + necpost[o][i] + "}}";
}
}
}
for (var i = 0; i < necpost[18].length; ++i) {
k += "\n[[ကဏ္ဍ:" + necpost[18][i] + "]]";
}
$(document.editform.wpTextbox1).val(k);
}
window.necfunction = necfunction;
function necCleanLangCode(lang) // taken from wt:edit
{
var key = lang.toLowerCase().replace(' ', '');
var dict = {
aar: "aa",
afar: "aa",
abk: "ab",
abkhazian: "ab",
afr: "af",
afrikaans: "af",
aka: "ak",
akan: "ak",
amh: "am",
amharic: "am",
ara: "ar",
arabic: "ar",
arg: "an",
aragonese: "an",
asm: "as",
assamese: "as",
ava: "av",
avaric: "av",
ave: "ae",
avestan: "ae",
aym: "ay",
aymara: "ay",
aze: "az",
azerbaijani: "az",
bak: "ba",
bashkir: "ba",
bam: "bm",
bambara: "bm",
bel: "be",
belarusian: "be",
ben: "bn",
bengali: "bn",
bis: "bi",
bislama: "bi",
bod: "bo",
tibetan: "bo",
bos: "bs",
bosnian: "bs",
bre: "br",
breton: "br",
bul: "bg",
bulgarian: "bg",
cat: "ca",
catalan: "ca",
ces: "cs",
czech: "cs",
cha: "ch",
chamorro: "ch",
che: "ce",
chechen: "ce",
chu: "cu",
churchslavic: "cu",
chv: "cv",
chuvash: "cv",
cor: "kw",
cornish: "kw",
cos: "co",
corsican: "co",
cre: "cr",
cree: "cr",
cym: "cy",
welsh: "cy",
dan: "da",
danish: "da",
deu: "de",
german: "de",
div: "dv",
dhivehi: "dv",
dzo: "dz",
dzongkha: "dz",
ell: "el",
greek: "el",
eng: "en",
english: "en",
epo: "eo",
esperanto: "eo",
est: "et",
estonian: "et",
eus: "eu",
basque: "eu",
ewe: "ee",
fao: "fo",
faroese: "fo",
fas: "fa",
persian: "fa",
fij: "fj",
fijian: "fj",
fin: "fi",
finnish: "fi",
fra: "fr",
french: "fr",
fry: "fy",
westernfrisian: "fy",
ful: "ff",
fulah: "ff",
gla: "gd",
scottishgaelic: "gd",
gle: "ga",
irish: "ga",
glg: "gl",
galician: "gl",
glv: "gv",
manx: "gv",
grn: "gn",
guarani: "gn",
guj: "gu",
gujarati: "gu",
hat: "ht",
haitian: "ht",
hau: "ha",
hausa: "ha",
heb: "he",
hebrew: "he",
her: "hz",
herero: "hz",
hin: "hi",
hindi: "hi",
hmo: "ho",
hirimotu: "ho",
hrv: "hr",
croatian: "hr",
hun: "hu",
hungarian: "hu",
hye: "hy",
armenian: "hy",
ibo: "ig",
igbo: "ig",
ido: "io",
iii: "ii",
sichuanyi: "ii",
iku: "iu",
inuktitut: "iu",
ile: "ie",
interlingue: "ie",
ina: "ia",
interlingua: "ia",
ind: "id",
indonesian: "id",
ipk: "ik",
inupiaq: "ik",
isl: "is",
icelandic: "is",
ita: "it",
italian: "it",
jav: "jv",
javanese: "jv",
jpn: "ja",
japanese: "ja",
kal: "kl",
kalaallisut: "kl",
kan: "kn",
kannada: "kn",
kas: "ks",
kashmiri: "ks",
kat: "ka",
georgian: "ka",
kau: "kr",
kanuri: "kr",
kaz: "kk",
kazakh: "kk",
khm: "km",
centralkhmer: "km",
kik: "ki",
kikuyu: "ki",
kin: "rw",
kinyarwanda: "rw",
kir: "ky",
kirghiz: "ky",
kom: "kv",
komi: "kv",
kon: "kg",
kongo: "kg",
kor: "ko",
korean: "ko",
kua: "kj",
kuanyama: "kj",
kur: "ku",
kurdish: "ku",
lao: "lo",
lat: "la",
latin: "la",
lav: "lv",
latvian: "lv",
lim: "li",
limburgan: "li",
lin: "ln",
lingala: "ln",
lit: "lt",
lithuanian: "lt",
ltz: "lb",
luxembourgish: "lb",
lub: "lu",
lubakatanga: "lu",
lug: "lg",
ganda: "lg",
mah: "mh",
marshallese: "mh",
mal: "ml",
malayalam: "ml",
mar: "mr",
marathi: "mr",
mkd: "mk",
macedonian: "mk",
mlg: "mg",
malagasy: "mg",
mlt: "mt",
maltese: "mt",
mon: "mn",
mongolian: "mn",
mri: "mi",
maori: "mi",
msa: "ms",
malay: "ms",
mya: "my",
burmese: "my",
nau: "na",
nauru: "na",
nav: "nv",
navajo: "nv",
nbl: "nr",
southndebele: "nr",
nde: "nd",
northndebele: "nd",
ndo: "ng",
ndonga: "ng",
nep: "ne",
nepali: "ne",
nld: "nl",
dutch: "nl",
nno: "nn",
norwegiannynorsk: "nn",
nob: "nb",
norwegianbokmal: "nb",
nor: "no",
norwegian: "no",
nya: "ny",
nyanja: "ny",
oci: "oc",
occitan: "oc",
oji: "oj",
ojibwa: "oj",
ori: "or",
oriya: "or",
orm: "om",
oromo: "om",
oss: "os",
ossetian: "os",
pan: "pa",
panjabi: "pa",
pli: "pi",
pali: "pi",
pol: "pl",
polish: "pl",
por: "pt",
portuguese: "pt",
pus: "ps",
pushto: "ps",
que: "qu",
quechua: "qu",
roh: "rm",
romansh: "rm",
ron: "ro",
romanian: "ro",
run: "rn",
rundi: "rn",
rus: "ru",
russian: "ru",
sag: "sg",
sango: "sg",
san: "sa",
sanskrit: "sa",
sin: "si",
sinhala: "si",
slk: "sk",
slovak: "sk",
slv: "sl",
slovenian: "sl",
sme: "se",
northernsami: "se",
smo: "sm",
samoan: "sm",
sna: "sn",
shona: "sn",
snd: "sd",
sindhi: "sd",
som: "so",
somali: "so",
sot: "st",
southernsotho: "st",
spa: "es",
spanish: "es",
sqi: "sq",
albanian: "sq",
srd: "sc",
sardinian: "sc",
srp: "sr",
serbian: "sr",
ssw: "ss",
swati: "ss",
sun: "su",
sundanese: "su",
swa: "sw",
swahili: "sw",
swe: "sv",
swedish: "sv",
tah: "ty",
tahitian: "ty",
tam: "ta",
tamil: "ta",
tat: "tt",
tatar: "tt",
tel: "te",
telugu: "te",
tgk: "tg",
tajik: "tg",
tgl: "tl",
tagalog: "tl",
tha: "th",
thai: "th",
tir: "ti",
tigrinya: "ti",
ton: "to",
tonga: "to",
tsn: "tn",
tswana: "tn",
tso: "ts",
tsonga: "ts",
tuk: "tk",
turkmen: "tk",
tur: "tr",
turkish: "tr",
twi: "tw",
uig: "ug",
uighur: "ug",
ukr: "uk",
ukrainian: "uk",
urd: "ur",
urdu: "ur",
uzb: "uz",
uzbek: "uz",
ven: "ve",
venda: "ve",
vie: "vi",
vietnamese: "vi",
vol: "vo",
volapuk: "vo",
wln: "wa",
walloon: "wa",
wol: "wo",
wolof: "wo",
xho: "xh",
xhosa: "xh",
yid: "yi",
yiddish: "yi",
yor: "yo",
yoruba: "yo",
zha: "za",
zhuang: "za",
zho: "zh",
chinese: "zh",
zul: "zu",
zulu: "zu"
};
return dict[key];
}
window.necCleanLangCode = necCleanLangCode;
function necfunction4() {
if (!neccode) {
neccode = '';
}
if (neccode && necinfls[neccode] && necinfls[neccode][necdata['pos']] != undefined && necinfls[neccode][necdata['pos']][2] != undefined) {
necfunction5(necinfls[neccode][necdata['pos']]);
} else {
var qq = neccode + "-" + necdata['pos'] + '2';
var xx = "<span class=msgfornonnewbies ";
if (necinputadvanced) {
xx += "style='font-weight:bold' ";
}
xx += "><br>Wikicode: <input type=text value='" + necinputadvanced + "' onKeyUp=\"necinputadvanced=this.value;if (this.value){this.parentNode.style.fontWeight='bold'}else{this.parentNode.style.fontWeight=''};necfunction()\" /></span>";
document.getElementById("necinfls").innerHTML = xx;
necfunction();
}
}
function necfunction5(a) {
/* INFLECTION OPTIONS */
var q = "";
for (var r = 0; r < a.length; ++r) {
if (r <= 1) {
continue;
}
var qq = neccode + "-" + necdata['pos'] + r;
if (necdata[qq] == undefined) {
if (a[r][2][0][0] == 'input') {
necdata[qq] = ''
} else {
necdata[qq] = a[r][2][0][0]
}
}
q += "<br>" + a[r][0] + ": ";
for (var i = 0; i < a[r][2].length; ++i) {
if (a[r][2][i][0] != 'input') {
q += "<a href=javascript: id='necinput" + qq + a[r][2][i][0] + "' onclick=\"";
if (a[r][2][i][2]) {
q += a[r][2][i][2] + ";"
}
q += "necdata[\'" + qq + "\']=\'" + a[r][2][i][0] + "\';necfunction4();necfunction()\">" + a[r][2][i][0] + "</a>";
if (i != a[r][2].length - 1) {
q += ", "
}
} else {
q += "<span id='necinput" + qq;
if (necdata[qq] != "Advanced" && necfunction7(a[r][2], necdata[qq]) == false) {
q += necdata[qq]
}
q += "'>" + a[r][2][i][1] + "<input type=text value='' id='";
q += neccode + "-" + necdata['pos'] + "-" + r + "-" + i;
q += "' onKeyUp=";
if (a[r][2][i][4]) {
q += a[r][2][i][4] + ";"
}
q += "necfunction6('" + qq + "','" + neccode + "-" + necdata['pos'] + "-" + r + "-" + i + "');";
q += "necfunction() /></span>";
if (i != a[r][2].length - 1) {
q += ", "
}
}
}
/* ADVANCED OPTIONS */
if (r == 2) {
q += "<span id='necinput" + qq + "Advanced' class=msgfornonnewbies><span style=font-weight:normal>, </span>Wikicode: <input type=text value='" + necinputadvanced + "' onKeyUp=necinputadvanced=this.value;document.getElementById('necinput" + qq + "'+necdata['" + qq + "']).style.fontWeight='';necdata['" + qq + "']='Advanced';document.getElementById('necinput" + qq + "'+necdata['" + qq + "']).style.fontWeight='bold';necfunction() /></span>";
}
}
document.getElementById("necinfls").innerHTML = q;
for (var r = 0; r < a.length; ++r) {
if (r <= 1) {
continue;
}
var qq = neccode + "-" + necdata['pos'] + r;
document.getElementById('necinput' + qq + necdata[qq]).style.fontWeight = 'bold';
if (document.getElementById('necinput' + qq + necdata[qq]).childNodes[1] && necdata[qq] != 'Advanced' && necfunction7(a[r][2], necdata[qq]) == false) {
document.getElementById('necinput' + qq + necdata[qq]).childNodes[1].value = necdata[qq];
}
}
}
function necdefupdate() {
/* DEFINITIONS */
var def = "";
for (var i = 0; i < necdefs.length; ++i) {
def += "Definition: <input size=50 type=text value='" + necdefs[i][0] + "' onKeyUp=necdefs[" + i + "][0]=this.value;necfunction() />";
if (i > 0) {
def += "<a href=javascript:necdefs.splice(" + i + ",1);necdefupdate();necfunction() title='Delete this definition'>(–)</a>";
}
def += "<a href=javascript:necdefs[" + i + "][1].push(['','','']);necdefupdate();necfunction() title='Add example sentence'>(+example sentence)</a><a href=javascript:necdefs[" + i + "][2].push(['','','','','','','']);necdefupdate();necfunction() title='Add quotation'>(+quotation)</a>";
for (var l = 0; l < necdefs[i][1].length; ++l) // Example sentences
{
def += "<br><span style='padding-left:30px;'>Example sentence: </span><input type=text size=40 value='" + necdefs[i][1][l][0] + "' onKeyUp=necdefs[" + i + "][1][" + l + "][0]=this.value;necfunction() /><a href=javascript:necdefs[" + i + "][1].splice(" + l + ",1);necdefupdate();necfunction() title='Delete this example sentence'>(–)</a>";
if (neccode != "en") {
if ((new LangMetadata()).guessScript(neccode) != 'Latn') {
def += "<br><span style='padding-left:60px;'>Transliteration: </span><input type=text size=40 value='" + necdefs[i][1][l][1] + "' onKeyUp=necdefs[" + i + "][1][" + l + "][1]=this.value;necfunction() />";
}
def += "<br><span style='padding-left:60px;'>Translation: </span><input type=text size=40 value='" + necdefs[i][1][l][2] + "' onKeyUp=necdefs[" + i + "][1][" + l + "][2]=this.value;necfunction() />";
}
}
for (var l = 0; l < necdefs[i][2].length; ++l) // Quotations
{
var x = ['Year', 'Author', 'Source title', 'Publisher', 'Page(s)'];
var z = [4, 20, 20, 20, 5]; //sizes
def += "<br><span style='padding-left:30px;'>";
for (var y = 0; y < x.length; ++y) {
def += x[y] + ": <input type=text size=" + z[y] + " value='" + necdefs[i][2][l][y] + "' onKeyUp=necdefs[" + i + "][2][" + l + "][" + y + "]=this.value;necfunction() /> "
}
def += "</span><br><span style='padding-left:30px;'>Quotation: <input type=text size=40 value='" + necdefs[i][2][l][5] + "' onKeyUp=necdefs[" + i + "][2][" + l + "][5]=this.value;necfunction() /><a href=javascript:necdefs[" + i + "][2].splice(" + l + ",1);necdefupdate();necfunction() title='Delete this quotation'>(–)</a>";
if (neccode != "en") {
def += "<br><span style='padding-left:60px;'>Translation: </span><input type=text size=40 value='" + necdefs[i][2][l][6] + "' onKeyUp=necdefs[" + i + "][2][" + l + "][6]=this.value;necfunction() />"
}
}
def += "<br>";
}
document.getElementById('necdefs').innerHTML = def;
}
function necpostbox(q) {
if (q != undefined) {
if ((q > 5 && q <= 10) || q == 13 || q == 14 || q == 19) {
necpost[q][necpost[q].length] = ['', '']
} else if ((q > 10 && q < 13) || q > 15) {
necpost[q][necpost[q].length] = ''
} else {
necpost[q] = ''
}
}
var m = "";
/* USAGE NOTES, INFLECTION TABLES */
for (var o = 0; o <= 4; o++) {
if (necpost[o] != undefined) {
m += "<span style='padding-left:30px;'>" + necheadingorder[o] + ": <a href=javascript:necpost[" + o + "]=undefined;";
if (!o) {
m += "document.getElementById('necquotbutton').style.fontWeight='';";
}
m += "necpostbox();necfunction() title='Delete section'>(delete)</a></span><br><span style='padding-left:60px;'><textarea onKeyUp=necpost[" + o + "]=this.value;necfunction()>" + necpost[o] + "</textarea></span><br>";
}
}
/* NYMS */
for (o = 5; o < 14; o++) {
if (necpost[o][0] != undefined) {
m += "<span style='padding-left:30px;'>" + necheadingorder[o] + ": <a id=nec" + necheadingorder[o] + "button href=javascript:necpost[" + o + "][necpost[" + o + "].length]=['',''];necpostbox();necfunction() title='add section'>(add section)</a></span><br>"
} else if (o == 5) {
document.getElementById('necSynonymsbutton').style.fontWeight = ''
}
for (var i = 0; i < necpost[o].length; ++i) {
m += "<span style='padding-left:60px;'>Gloss: <input type=text value='" + necpost[o][i][0] + "' onKeyUp=necpost[" + o + "][" + i + "][0]=this.value;necfunction() /> " + necheadingorder[o] + ": ";
for (var u = 0; u < necpost[o][i].length; ++u) {
if (u != 0) {
if (u != 1) {
m += ", ";
}
m += "<input type=text size=5 value='" + necpost[o][i][u] + "' onKeyUp=necpost[" + o + "][" + i + "][" + u + "]=this.value;necfunction() />";
}
}
m += "<a href=javascript:necpost[" + o + "][" + i + "].push('');necpostbox();necfunction() title='Add " + necheadingorder[o].substr(0, necheadingorder[o].length - 1).toLowerCase() + "'>(+)</a>";
if (necpost[o][i].length > 2) {
m += "<a href=javascript:necpost[" + o + "][" + i + "].splice(" + (necpost[o][i].length - 1) + ",1);necpostbox();necfunction() title='Delete " + necheadingorder[o].substr(0, necheadingorder[o].length - 1).toLowerCase() + "'>(–)</a>"
}
m += "<a href=javascript:necpost[" + o + "].splice(" + i + ",1);necpostbox();necfunction() title='Remove section'>(remove section)</a><br>";
}
if (o == 10) {
o = 12
}
}
/* DERIVED TERMS, RELATED TERMS, SEE ALSO, EXTERNAL LINKS */
for (o = 11; o <= 17; o++) {
if (necpost[o][0] != undefined) {
m += "<span style='padding-left:30px;'>" + necheadingorder[o] + ": <a href=javascript:necpost[" + o + "].push('');necpostbox();necfunction()>(new)</a></span><br>";
}
for (var i = 0; i < necpost[o].length; ++i) {
m += "<span style='padding-left:60px;'><input type=text value='" + necpost[o][i] + "' onKeyUp=necpost[" + o + "][" + i + "]=this.value;necfunction() /><a href=javascript:necpost[" + o + "].splice(" + i + ",1);necpostbox();necfunction() title='Delete'>(–)</a><br>"
}
if (o == 12) {
o = 15
}
}
/* DESCENDANTS */
if (necpost[14][0] != undefined) {
m += "<span style='padding-left:30px;'>" + necheadingorder[14] + ": <a href=javascript:necpost[14].push(['','']);necpostbox();necfunction() title='Add new descendant'>(new)</a></span><br>";
}
for (var i = 0; i < necpost[14].length; ++i) {
m += "<span style='padding-left:60px;'>Language: <input type=text value='" + necpost[14][i][0] + "' onKeyUp=necpost[14][" + i + "][0]=this.value;necfunction() onblur=if (necCleanLangCode(this.value)){this.value=necCleanLangCode(this.value)};necpost[14][" + i + "][0]=this.value;necfunction() /> Word: <input type=text value='" + necpost[14][i][1] + "' onKeyUp=necpost[14][" + i + "][1]=this.value;necfunction() /><a href=javascript:necpost[14].splice(" + i + ",1);necpostbox();necfunction() title='Delete'>(–)</a><br>"
}
/* TRANSLATIONS */
if (necpost[15][0] != undefined) {
m += "<span style='padding-left:30px;'>Translations section: <a href=javascript:necpost[15].push('');necpostbox();necfunction() title='Add translations section'>(add section)</a></span><br>"
} else {
document.getElementById('nectransbutton').style.fontWeight = ''
}
for (var i = 0; i < necpost[15].length; ++i) {
m += "<span style='padding-left:60px;'>Gloss: <input type=text value='" + necpost[15][i] + "' onKeyUp=necpost[15][" + i + "]=this.value;necfunction() /><a href=javascript:necpost[15].splice(" + i + ",1);necpostbox();necfunction() title='Delete'>(–)</a><br>"
}
if (necpost[18][0] != undefined) {
for (var i = 0; i < necpost[18].length; ++i) {
m += "<span style='padding-left:30px;'>Category:<input type=text value='" + necpost[18][i] + "' onKeyUp=necpost[18][" + i + "]=this.value;necfunction() /><a href=javascript:necpost[18].splice(" + i + ",1);necpostbox();necfunction() title='Remove category'>(–)</a>";
if (i == 0) {
m += "<a href=javascript:necpost[18].push('');necpostbox();necfunction() title='Add new category'>(+new category)</a>"
}
m += "</span><br>"
}
}
if (necpost[19][0] != undefined) {
for (var i = 0; i < necpost[19].length; ++i) {
m += "<span style='padding-left:30px;'>File name:<input type=text value='" + necpost[19][i][0] + "' onKeyUp=necpost[19][" + i + "][0]=this.value;necfunction() /> Caption:<input type=text value='" + necpost[19][i][1] + "' onKeyUp=necpost[19][" + i + "][1]=this.value;necfunction() /><a href=javascript:necpost[19].splice(" + i + ",1);necpostbox();necfunction() title='Remove image'>(–)</a>";
if (i == 0) {
m += "<a href=javascript:necpost[19].push(['','']);necpostbox();necfunction() title='Add new image'>(+new image)</a>"
}
m += "</span><br>"
}
}
document.getElementById('necpostbox').innerHTML = m;
}
window.necpostbox = necpostbox;
function necfunction6(cc, dd) {
document.getElementById('necinput' + cc + necdata[cc]).style.fontWeight = '';
necdata[cc] = document.getElementById(dd).value;
document.getElementById(dd).parentNode.setAttribute('ID', 'necinput' + cc + document.getElementById(dd).value);
document.getElementById('necinput' + cc + necdata[cc]).style.fontWeight = 'bold';
}
function necfunction7(qw, er) {
var qwe = false;
for (var ty in qw) {
if (er == qw[ty][0]) {
qwe = true;
}
}
return qwe;
}
necfunction2();
necdefupdate();
necfunction();
necfunction4();
necfunction();
// </nowiki>
jsn2e40r3bmer899378i2659p0soa91
မဳဒဳယာဝဳကဳ:Gadget-NsfwOverride.css
8
295803
396636
2026-06-08T15:49:54Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု ".tmulti-nsfw .thumbimage.tmulti-nsfw-gadget-ready { position: relative !important; } .tmulti-nsfw .thumbimage.tmulti-nsfw-gadget-ready .tmulti-nsfw-media { filter: none !important; -webkit-filter: none !important; clip-path: none !important; -webkit-clip-path: none !important; margin: 0 !important; padding: 0 !important; transform: none !important; } .tmulti-nsfw .thumbimage.tmulti-nsfw-gadget-ready .tmulti-..."
396636
css
text/css
.tmulti-nsfw .thumbimage.tmulti-nsfw-gadget-ready {
position: relative !important;
}
.tmulti-nsfw .thumbimage.tmulti-nsfw-gadget-ready .tmulti-nsfw-media {
filter: none !important;
-webkit-filter: none !important;
clip-path: none !important;
-webkit-clip-path: none !important;
margin: 0 !important;
padding: 0 !important;
transform: none !important;
}
.tmulti-nsfw .thumbimage.tmulti-nsfw-gadget-ready .tmulti-nsfw-media > span,
.tmulti-nsfw .thumbimage.tmulti-nsfw-gadget-ready .tmulti-nsfw-media > span > a {
display: block !important;
}
.tmulti-nsfw .thumbimage.tmulti-nsfw-gadget-ready .tmulti-nsfw-media img {
display: block !important;
width: auto !important;
max-width: 100% !important;
margin: 0 !important;
transform: none !important;
}
.tmulti-nsfw .thumbimage.tmulti-nsfw-gadget-ready .tmulti-nsfw-warning {
display: none !important;
}
ps9qxz4iwfe6m04chv8o3qfzdw1b5e5
မဳဒဳယာဝဳကဳ:Gadget-NoMiniToc.js
8
295804
396637
2026-06-08T15:50:30Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> /* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:6 */ /* global $, mw */ $(document).ready(() => { // If the TOC is inside a div with the data-toc-length attribute, move it out of there. const toc = document.querySelector("#mw-content-text #toc"); if (toc) { const minitocWrapped = toc.closest("[data-toc-length]"); if (minitocWrapped) { minitocWrapped.parentNode.insert..."
396637
javascript
text/javascript
// <nowiki>
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:6 */
/* global $, mw */
$(document).ready(() => {
// If the TOC is inside a div with the data-toc-length attribute, move it out of there.
const toc = document.querySelector("#mw-content-text #toc");
if (toc) {
const minitocWrapped = toc.closest("[data-toc-length]");
if (minitocWrapped) {
minitocWrapped.parentNode.insertBefore(toc, minitocWrapped);
minitocWrapped.style.display = "none";
}
}
});
t0zb45l3ptr8xj0nyq01roj43h4k2ek
မဳဒဳယာဝဳကဳ:Gadget-NoMiniToc.css
8
295805
396638
2026-06-08T15:51:08Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု ".minitoc { display: none; } /* increased specificity */ .minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc { display: none; } /* selector intentionally repeated a bunch of times - CSS specificity trick */ div[data-toc-length][data-toc-leng..."
396638
css
text/css
.minitoc { display: none; }
/* increased specificity */
.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc.minitoc { display: none; }
/* selector intentionally repeated a bunch of times - CSS specificity trick */
div[data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length][data-toc-length] > #toc { display: inline-block; }
.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc.mammoth-minitoc { display: block; }
oh53ebe99fwlaunck0mn8xdzcph7qfw
မဳဒဳယာဝဳကဳ:Gadget-NsfwOverride.js
8
295806
396639
2026-06-08T15:51:56Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> /* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:8 */ /* global mw */ /** * Disable NSFW blur/overlay used in {{multiple images}}/{{img}}. * * Author(s): Fenakhay * Last updated: 2026-04-23 */ ( function () { "use strict"; function applyNsfwOverride( $content ) { if ( !$content || !$content.length ) return; $content.find( ".tmulti-nsfw .thumbimage" ).each( function (..."
396639
javascript
text/javascript
// <nowiki>
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, esversion:8 */
/* global mw */
/**
* Disable NSFW blur/overlay used in {{multiple images}}/{{img}}.
*
* Author(s): Fenakhay
* Last updated: 2026-04-23
*/
( function () {
"use strict";
function applyNsfwOverride( $content ) {
if ( !$content || !$content.length ) return;
$content.find( ".tmulti-nsfw .thumbimage" ).each( function () {
this.classList.add( "tmulti-nsfw-gadget-ready" );
} );
}
mw.hook( "wikipage.content" ).add( function ( $content ) {
if ( mw.config.get( "wgAction" ) !== "view" ) return;
applyNsfwOverride( $content );
} );
}() );
// </nowiki>
nbwkx51vnqmj9njp5j9c14tt2nplxj6
မဳဒဳယာဝဳကဳ:Gadget-OrangeLinks.js
8
295807
396640
2026-06-08T15:53:24Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// <nowiki> function HTML_unescape(text) { return new DOMParser().parseFromString(text, "text/html").body.textContent; } mw.util.addCSS(` .orange-link { color: var(--wikt-palette-gold); } .orange-link:visited { color: var(--wikt-palette-dullgold); } .orange-link:hover, .orange-link:visited:hover { color: var(--wikt-palette-honey); } `); const actionAPI = new mw.Api({ajax: {headers: {"Api-User-Agent": "G..."
396640
javascript
text/javascript
// <nowiki>
function HTML_unescape(text) {
return new DOMParser().parseFromString(text, "text/html").body.textContent;
}
mw.util.addCSS(`
.orange-link {
color: var(--wikt-palette-gold);
}
.orange-link:visited {
color: var(--wikt-palette-dullgold);
}
.orange-link:hover, .orange-link:visited:hover {
color: var(--wikt-palette-honey);
}
`);
const actionAPI = new mw.Api({ajax: {headers: {"Api-User-Agent": "Gadget developed by [[User:Ioaxxere]]"}}});
// Maps each page title to a list of IDs.
const pageIDsOf = new Map();
let count = 0;
const linkTitles = new Set();
class OrangeLinker {
constructor() {
this.pagesToProcess = [];
this.linksToProcess = [];
}
static getTitleAndAnchor(link) {
const linkTitle =
link.pathname.startsWith("/wiki/")
? decodeURIComponent(link.pathname.split("/wiki/")[1])
: new URLSearchParams(link.search).get("title");
const linkAnchor = decodeURIComponent(link.hash.slice(1) || "");
return [linkTitle, linkAnchor];
}
addLink(link) {
// Check whether the linked page is in the right domain
// and whether the path starts with [[mw:Manual:$wgArticlePath]]
// or goes to [[mw:Manual:$wgScript]]
// and whether it exists and has not already been processed by makeLinksOrange.
if (!(link.hostname === "mnw.wiktionary.org"
&& (link.pathname.startsWith("/wiki/")
|| link.pathname === "/" /* This covers links without / after en.wiktionary.org */
|| link.pathname === "/w"
|| link.pathname === "/w/" || link.pathname === "/w/index.php")
&& !link.matches(".orange-link, .not-orange-link, .new")))
return;
const [linkTitle, linkAnchor] = OrangeLinker.getTitleAndAnchor(link);
if (!(linkTitle && linkAnchor) || /^[a-z]/.test(linkAnchor)
// Only handle links to main, Appendix, Reconstruction namespaces.
|| ![0, 100, 118].includes(new mw.Title(linkTitle).namespace))
return;
if (!linkTitles.has(linkTitle)) {
this.pagesToProcess.push(linkTitle);
linkTitles.add(linkTitle);
}
this.linksToProcess.push(link);
}
addLinksInElement(element) {
for (const link of element.querySelectorAll("a")) {
this.addLink(link);
}
}
async makeLinksOrange() {
if (this.linksToProcess.length === 0) return;
// Process links in small enough chunks that [[Module:get IDs]]
// doesn't hit a timeout error.
// There should be no duplicates because we check linkTitles before
// adding a link.
const queries = [];
for (let i = 0; i < this.pagesToProcess.length; i += 100) {
const pageTitles = this.pagesToProcess.slice(i, i + 100);
// If there are no titles to query, create an empty set of promises
// and immediately start oranging links.
if (pageTitles.length === 0) break;
count++;
console.info("OrangeLinks request #" + count + " for " + pageTitles.join(", "));
// Query the IDs for all the pages using [[Module:get IDs]].
const params = {
action: "expandtemplates",
format: "json",
prop: "wikitext",
text: `{{#invoke:get IDs|show|${pageTitles.join("|")}}}`,
};
queries.push(actionAPI.post(params).then(response => {
// Integrate the results into `pageIDsOf`.
const pageIDs = HTML_unescape(response.expandtemplates.wikitext).split("\n\n");
for (let j = 0; j < pageTitles.length; j++)
pageIDsOf.set(pageTitles[j], pageIDs[j].split(" "));
}));
}
// After all the queries have returned, determine whether each link needs to be orange.
await Promise.all(queries);
for (const link of this.linksToProcess) {
const [linkTitle, linkAnchor] = OrangeLinker.getTitleAndAnchor(link);
const existingAnchors = pageIDsOf.get(linkTitle);
const anchorExists = existingAnchors instanceof Array && existingAnchors.includes(linkAnchor);
link.classList.add(anchorExists ? "not-orange-link" : "orange-link");
}
this.pagesToProcess = [];
this.linksToProcess = [];
}
}
// Activate the gadget.
mw.hook("wikipage.content").add($content => {
var orangeLinker = new OrangeLinker();
for (const element of $content) {
if (!(element instanceof Element || element instanceof Document)) continue;
const parserOutput = element.querySelector(".mw-parser-output");
if (parserOutput) {
orangeLinker.addLinksInElement(parserOutput);
} else if (element.matches(".mw-parser-output, .mw-parser-output *")) {
if (element.tagName === "A") {
orangeLinker.addLink(element);
} else {
orangeLinker.addLinksInElement(element);
}
}
}
orangeLinker.makeLinksOrange();
});
// Create a global hook in case any other gadget or script would like to activate it.
window.OrangeLinker = OrangeLinker;
// </nowiki>
j34oeyhez8j7a618f419e0sgv1znq27
မဳဒဳယာဝဳကဳ:Gadget-PagePreviews.js
8
295808
396641
2026-06-08T16:00:02Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "// Page Previews for Wiktionary, by [[User:Ioaxxere]] // <nowiki> // Generated using: [[MediaWiki:Gadget-PagePreviews.js/ConstGeneration]] const INTERWIKI_PREFIXES = new Map([["aa","aa"],["ab","ab"],["abstract","abstract"],["acc",0],["ace","ace"],["acronym",0],["advisory",0],["ady","ady"],["af","af"],["ak","ak"],["als","als"],["alt","alt"],["am","am"],["ami","ami"],["an","an"],["ang","ang"],["ann","ann"],["anp","anp"..."
396641
javascript
text/javascript
// Page Previews for Wiktionary, by [[User:Ioaxxere]]
// <nowiki>
// Generated using: [[MediaWiki:Gadget-PagePreviews.js/ConstGeneration]]
const INTERWIKI_PREFIXES = new Map([["aa","aa"],["ab","ab"],["abstract","abstract"],["acc",0],["ace","ace"],["acronym",0],["advisory",0],["ady","ady"],["af","af"],["ak","ak"],["als","als"],["alt","alt"],["am","am"],["ami","ami"],["an","an"],["ang","ang"],["ann","ann"],["anp","anp"],["antwiki",0],["appropedia",0],["aquariumwiki",0],["ar","ar"],["arbcom-zh",0],["arborwiki",0],["arc","arc"],["arxiv",0],["ary","ary"],["arz","arz"],["as","as"],["ast","ast"],["atj","atj"],["av","av"],["avk","avk"],["awa","awa"],["ay","ay"],["az","az"],["azb","azb"],["b",0],["ba","ba"],["ban","ban"],["bar","bar"],["bat-smg","bat-smg"],["battlestarwiki",0],["bbc","bbc"],["bcl","bcl"],["bcnbio",0],["bdr","bdr"],["be","be"],["be-tarask","be-tarask"],["be-x-old","be-tarask"],["beacha",0],["betawiki",0],["betawikiversity",0],["bew","bew"],["bg","bg"],["bh","bh"],["bi","bi"],["bibcode",0],["bibliowiki",0],["bjn","bjn"],["blk","blk"],["bm","bm"],["bn","bn"],["bo","bo"],["botwiki",0],["boxrec",0],["bpy","bpy"],["br","br"],["bs","bs"],["btm","btm"],["bug","bug"],["bugzilla",0],["bulba",0],["bxr","bxr"],["c",0],["c2",0],["ca","ca"],["cache",0],["cbk-zam","cbk-zam"],["ccorg",0],["cdo","cdo"],["ce","ce"],["ceb","ceb"],["centralwikia",0],["ch","ch"],["chapter",0],["cho","cho"],["choralwiki",0],["chr","chr"],["chy","chy"],["citizendium",0],["ckb","ckb"],["cmn","zh"],["co","co"],["commons",0],["communitywiki",0],["comune",0],["cr","cr"],["creativecommons",0],["creativecommonswiki",0],["crh","crh"],["cs","cs"],["csb","csb"],["cu","cu"],["cv","cv"],["cy","cy"],["cz","cs"],["d",0],["da","da"],["dag","dag"],["dbdump",0],["dcdatabase",0],["dcw",0],["de","de"],["debian",0],["devmo",0],["dga","dga"],["dico",0],["dicoado",0],["dict",0],["dictionary",0],["diffblog",0],["din","din"],["diq","diq"],["discord",0],["disinfopedia",0],["dk","da"],["dmoz",0],["dmozs",0],["doi",0],["donate",0],["doom_wiki",0],["download",0],["dpd",0],["dpla",0],["drae",0],["dsb","dsb"],["dtp","dtp"],["dty","dty"],["dv","dv"],["dz","dz"],["ee","ee"],["egl","eml"],["el","el"],["elibre",0],["emacswiki",0],["eml","eml"],["en","en"],["en-simple","simple"],["encyc",0],["englyphwiki",0],["enkol",0],["eo","eo"],["epo","eo"],["es","es"],["esolang",0],["et","et"],["etherpad",0],["etherpadbackup",0],["ethnologue",0],["ethnologuefamily",0],["eu","eu"],["exkcd",0],["exotica",0],["ext","ext"],["f",0],["fa","fa"],["fandom",0],["fanimutationwiki",0],["fat","fat"],["fedora",0],["ff","ff"],["fi","fi"],["finalfantasy",0],["finnix",0],["fiu-vro","fiu-vro"],["fj","fj"],["flickrphoto",0],["flickruser",0],["fo","fo"],["foldoc",0],["fon","fon"],["foundation",0],["foundationsite",0],["fr","fr"],["freebsdman",0],["freedomdefined",0],["freenode",0],["freesoft",0],["frp","frp"],["frr","frr"],["fur","fur"],["fy","fy"],["ga","ga"],["gag","gag"],["gan","gan"],["gcr","gcr"],["gd","gd"],["gentoo",0],["genwiki",0],["gerrit",0],["git",0],["github",0],["gitiles",0],["gitlab",0],["gl","gl"],["glk","glk"],["globalcontribs",0],["glottolog",0],["glottopedia",0],["gn","gn"],["gom","gom"],["google",0],["googledefine",0],["googlegroups",0],["gor","gor"],["got","got"],["gpe","gpe"],["gs",0],["gsw","als"],["gu","gu"],["guc","guc"],["gucprefix",0],["guildwarswiki",0],["gur","gur"],["gutenberg",0],["gutenbergwiki",0],["guw","guw"],["gv","gv"],["ha","ha"],["hackerspaces",0],["hak","hak"],["hammondwiki",0],["haw","haw"],["hdl",0],["he","he"],["heraldik",0],["hi","hi"],["hif","hif"],["ho","ho"],["horizonlabs",0],["hr","hr"],["hrfwiki",0],["hrwiki",0],["hsb","hsb"],["ht","ht"],["hu","hu"],["hy","hy"],["hyw","hyw"],["hz","hz"],["ia","ia"],["iarchive",0],["iba","iba"],["id","id"],["ie","ie"],["ig","ig"],["igl","igl"],["ii","ii"],["ik","ik"],["ilo","ilo"],["imdbcompany",0],["imdbname",0],["imdbtitle",0],["incubator",0],["infosphere",0],["inh","inh"],["io","io"],["irc",0],["ircrc",0],["ircs",0],["is","is"],["isni",0],["iso639-3",0],["issn",0],["it","it"],["iu","iu"],["iuridictum",0],["ja","ja"],["jaglyphwiki",0],["jam","jam"],["jbo","jbo"],["jira",0],["jp","ja"],["jstor",0],["jv","jv"],["ka","ka"],["kaa","kaa"],["kab","kab"],["kai","kai"],["kaj","kaj"],["kamelo",0],["karlsruhe",0],["kbd","kbd"],["kbp","kbp"],["kcg","kcg"],["kg","kg"],["kge","kge"],["ki","ki"],["kj","kj"],["kk","kk"],["kl","kl"],["km","km"],["kn","kn"],["knc","knc"],["ko","ko"],["koi","koi"],["kr","kr"],["krc","krc"],["ks","ks"],["ksh","ksh"],["ku","ku"],["kus","kus"],["kv","kv"],["kw","kw"],["ky","ky"],["la","la"],["labsconsole",0],["lad","lad"],["lb","lb"],["lbe","lbe"],["lexemes",0],["lez","lez"],["lfn","lfn"],["lg","lg"],["li","li"],["liberachat",0],["libreplanet",0],["lij","lij"],["lingualibre",0],["linguistlist",0],["listarchive",0],["lld","lld"],["lmo","lmo"],["ln","ln"],["lo","lo"],["localwiki",0],["lofc",0],["lojban",0],["lokalhistoriewiki",0],["lostpedia",0],["lrc","lrc"],["lt","lt"],["ltg","ltg"],["luxo",0],["lv","lv"],["lzh","zh-classical"],["m",0],["mad","mad"],["mai","mai"],["mail",0],["mailarchive",0],["map-bms","map-bms"],["mariowiki",0],["marveldatabase",0],["mdf","mdf"],["mdwiki",0],["meatball",0],["mediawikiwiki",0],["mediazilla",0],["memoryalpha",0],["meta",0],["metawiki",0],["metawikimedia",0],["metawikipedia",0],["mg","mg"],["mh","mh"],["mhr","mhr"],["mi","mi"],["min","min"],["mineralienatlas",0],["miraheze",0],["mixnmatch",0],["mk","mk"],["ml","ml"],["mn","mn"],["mni","mni"],["mnw","mnw"],["mo","mo"],["moinmoin",0],["mos","mos"],["mosapedia",0],["mozillawiki",0],["mozillazinekb",0],["mr","mr"],["mrj","mrj"],["ms","ms"],["mt","mt"],["mus","mus"],["mw",0],["mwl","mwl"],["mwod",0],["mwot",0],["my","my"],["myv","myv"],["mzn","mzn"],["n",0],["na","na"],["nah","nah"],["nan","zh-min-nan"],["nap","nap"],["nara",0],["nb","no"],["nds","nds"],["nds-nl","nds-nl"],["ne","ne"],["new","new"],["ng","ng"],["nia","nia"],["nl","nl"],["nlab",0],["nn","nn"],["no","no"],["nost","nostalgia"],["nostalgia","nostalgia"],["nov","nov"],["nqo","nqo"],["nr","nr"],["nrm","nrm"],["nso","nso"],["nup","nup"],["nv","nv"],["ny","ny"],["oc","oc"],["oclc",0],["oeis",0],["oewiki",0],["oldwikisource",0],["olo","olo"],["olpc",0],["om","om"],["openlibrary",0],["openstreetmap",0],["openwetware",0],["or","or"],["organicdesign",0],["orthodoxwiki",0],["os","os"],["osmwiki",0],["otrs",0],["otrswiki",0],["outreach",0],["outreachwiki",0],["owasp",0],["pa","pa"],["pag","pag"],["pam","pam"],["pap","pap"],["paws",0],["pcd","pcd"],["pcm","pcm"],["pdc","pdc"],["petscan",0],["pfl","pfl"],["phab",0],["phabricator",0],["pi","pi"],["pih","pih"],["pl","pl"],["planetmath",0],["pmid",0],["pms","pms"],["pnb","pnb"],["pnt","pnt"],["pokewiki",0],["pokéwiki",0],["policy",0],["ppl","ppl"],["proofwiki",0],["ps","ps"],["pt","pt"],["pwn","pwn"],["pyrev",0],["pythoninfo",0],["q",0],["qu","qu"],["quality",0],["quarry",0],["rcirc",0],["regiowiki",0],["rev",0],["revo",0],["rfc",0],["rheinneckar",0],["rki","rki"],["rm","rm"],["rmy","rmy"],["rn","rn"],["ro","ro"],["roa-rup","roa-rup"],["roa-tara","roa-tara"],["rodovid",0],["rsk","rsk"],["rt",0],["ru","ru"],["rue","rue"],["rup","roa-rup"],["rw","rw"],["s",0],["sa","sa"],["sah","sah"],["sat","sat"],["sc","sc"],["scholar",0],["schoolswp",0],["schoolwiki",0],["scn","scn"],["sco","sco"],["scores",0],["scoutwiki",0],["sd","sd"],["se","se"],["securewikidc",0],["semantic-mw",0],["senseislibrary",0],["sep11",0],["sg","sg"],["sgs","bat-smg"],["sh","sh"],["sharemap",0],["shi","shi"],["shn","shn"],["shoutwiki",0],["shy","shy"],["si","si"],["silcode",0],["simple","simple"],["sk","sk"],["skr","skr"],["sl","sl"],["slashdot",0],["sm","sm"],["smn","smn"],["sn","sn"],["so","so"],["sourceforge",0],["spamcheck",0],["spcom",0],["species",0],["sq","sq"],["sr","sr"],["srn","srn"],["ss","ss"],["st","st"],["stats",0],["stewardry",0],["stq","stq"],["strategy",0],["strategywiki",0],["su","su"],["sulutil",0],["sv","sv"],["svn",0],["sw","sw"],["swtrain",0],["syl","syl"],["szl","szl"],["szy","szy"],["ta","ta"],["tardis",0],["tay","tay"],["tclerswiki",0],["tcy","tcy"],["tdd","tdd"],["te","te"],["tenwiki","ten"],["test2wiki","test2"],["testcommons",0],["testwiki","test"],["testwikidata",0],["tet","tet"],["tfwiki",0],["tg","tg"],["th","th"],["thelemapedia",0],["theopedia",0],["ti","ti"],["ticket",0],["tig","tig"],["tk","tk"],["tl","tl"],["tly","tly"],["tmbw",0],["tn","tn"],["to","to"],["tok","tok"],["tolkiengateway",0],["toolforge",0],["toolhub",0],["toollabs",0],["tools",0],["tpi","tpi"],["tr","tr"],["translatewiki",0],["trv","trv"],["ts","ts"],["tswiki",0],["tt","tt"],["tum","tum"],["tviv",0],["tw","tw"],["twiki",0],["twl",0],["ty","ty"],["tyv","tyv"],["tyvawiki",0],["udm","udm"],["ug","ug"],["uk","uk"],["umap",0],["uncyclopedia",0],["unihan",0],["ur","ur"],["urbandict",0],["usability",0],["usemod",0],["utrs",0],["uz","uz"],["v",0],["ve","ve"],["vec","vec"],["vep","vep"],["vi","vi"],["viaf",0],["vikidia",0],["vlos",0],["vls","vls"],["vo","vo"],["votewiki",0],["voy",0],["vro","fiu-vro"],["vrts",0],["vrtwiki",0],["w","en"],["wa","wa"],["war","war"],["wcna",0],["weirdgloop",0],["werelate",0],["wg","wg-en"],["wikia",0],["wikiapiary",0],["wikiasite",0],["wikibooks",0],["wikicities",0],["wikicity",0],["wikiconference",0],["wikidata",0],["wikiedudashboard",0],["wikifunctions",0],["wikifur",0],["wikihow",0],["wikiindex",0],["wikilivres",0],["wikilivresru",0],["wikimania",0],["wikimedia",0],["wikinews",0],["wikinfo",0],["wikinvest",0],["wikipapers",0],["wikipedia",0],["wikipediawikipedia",0],["wikiquote",0],["wikiskripta",0],["wikisophia",0],["wikisource",0],["wikisp",0],["wikispecies",0],["wikispore",0],["wikispot",0],["wikitech",0],["wikiti",0],["wikitrek",0],["wikiversity",0],["wikivoyage",0],["wikiwikiweb",0],["wikt",0],["wiktionary",0],["wm2005",0],["wm2006",0],["wm2007",0],["wm2008",0],["wm2009",0],["wm2010",0],["wm2011",0],["wm2012",0],["wm2013",0],["wm2014",0],["wm2015",0],["wm2016",0],["wm2017",0],["wm2018",0],["wmam",0],["wmania",0],["wmar",0],["wmat",0],["wmau",0],["wmbd",0],["wmbe",0],["wmbr",0],["wmca",0],["wmch",0],["wmcl",0],["wmcn",0],["wmco",0],["wmcz",0],["wmcz_docs",0],["wmcz_old",0],["wmdc",0],["wmde",0],["wmdeblog",0],["wmdk",0],["wmdoc",0],["wmec",0],["wmee",0],["wmes",0],["wmet",0],["wmf",0],["wmfblog",0],["wmfdashboard",0],["wmfi",0],["wmfr",0],["wmge",0],["wmhi",0],["wmhk",0],["wmhu",0],["wmid",0],["wmil",0],["wmin",0],["wmit",0],["wmke",0],["wmmk",0],["wmmx",0],["wmnl",0],["wmno",0],["wmnoc",0],["wmnoch",0],["wmnyc",0],["wmpa-us",0],["wmph",0],["wmpl",0],["wmplsite",0],["wmpt",0],["wmpunjabi",0],["wmromd",0],["wmrs",0],["wmru",0],["wmse",0],["wmsk",0],["wmteam",0],["wmtr",0],["wmtw",0],["wmua",0],["wmuk",0],["wmve",0],["wmza",0],["wo","wo"],["wookieepedia",0],["wowwiki",0],["wplibrary",0],["wurmpedia",0],["wuu","wuu"],["xal","xal"],["xh","xh"],["xkcd",0],["xmf","xmf"],["xtools",0],["yi","yi"],["yo","yo"],["yue","zh-yue"],["za","za"],["zea","zea"],["zgh","zgh"],["zh","zh"],["zh-classical","zh-classical"],["zh-cn","zh"],["zh-min-nan","zh-min-nan"],["zh-tw","zh"],["zh-yue","zh-yue"],["zu","zu"],["zum",0]]);
const WP_LANGUAGES = new Map([["ab","Abkhazian"],["ace","Acehnese"],["ady","Adyghe"],["af","Afrikaans"],["als","Alemannic"],["alt","Southern Altai"],["am","Amharic"],["ami","Amis"],["an","Aragonese"],["ang","Old English"],["ann","Obolo"],["anp","Angika"],["ar","Arabic"],["arc","Aramaic"],["ary","Moroccan Arabic"],["arz","Egyptian Arabic"],["as","Assamese"],["ast","Asturian"],["atj","Atikamekw"],["av","Avaric"],["avk","Kotava"],["awa","Awadhi"],["ay","Aymara"],["az","Azerbaijani"],["azb","South Azerbaijani"],["ba","Bashkir"],["ban","Balinese"],["bar","Bavarian"],["bat-smg","Samogitian"],["bbc","Batak Toba"],["bcl","Central Bikol"],["bdr","West Coast Bajau"],["be","Belarusian"],["be-tarask","Belarusian (Taraškievica orthography)"],["bew","Betawi"],["bg","Bulgarian"],["bh","Bhojpuri"],["bi","Bislama"],["bjn","Banjar"],["blk","Pa'O"],["bm","Bambara"],["bn","Bangla"],["bo","Tibetan"],["bpy","Bishnupriya"],["br","Breton"],["bs","Bosnian"],["btm","Batak Mandailing"],["bug","Buginese"],["bxr","Russia Buriat"],["ca","Catalan"],["cbk-zam","Chavacano"],["cdo","Mindong"],["ce","Chechen"],["ceb","Cebuano"],["ch","Chamorro"],["chr","Cherokee"],["chy","Cheyenne"],["ckb","Central Kurdish"],["co","Corsican"],["crh","Crimean Tatar"],["cs","Czech"],["csb","Kashubian"],["cu","Church Slavic"],["cv","Chuvash"],["cy","Welsh"],["da","Danish"],["dag","Dagbani"],["de","German"],["dga","Southern Dagaare"],["din","Dinka"],["diq","Dimli"],["dsb","Lower Sorbian"],["dtp","Central Dusun"],["dty","Doteli"],["dv","Divehi"],["dz","Dzongkha"],["ee","Ewe"],["el","Greek"],["eml","Emiliano-Romagnolo"],["en","English"],["eo","Esperanto"],["es","Spanish"],["et","Estonian"],["eu","Basque"],["ext","Extremaduran"],["fa","Persian"],["fat","Fanti"],["ff","Fula"],["fi","Finnish"],["fiu-vro","Võro"],["fj","Fijian"],["fo","Faroese"],["fon","Fon"],["fr","French"],["frp","Arpitan"],["frr","Northern Frisian"],["fur","Friulian"],["fy","Western Frisian"],["ga","Irish"],["gag","Gagauz"],["gan","Gan"],["gcr","Guianan Creole"],["gd","Scottish Gaelic"],["gl","Galician"],["glk","Gilaki"],["gn","Guarani"],["gom","Goan Konkani"],["gor","Gorontalo"],["got","Gothic"],["gpe","Ghanaian Pidgin"],["gu","Gujarati"],["guc","Wayuu"],["gur","Frafra"],["guw","Gun"],["gv","Manx"],["ha","Hausa"],["hak","Hakka Chinese"],["haw","Hawaiian"],["he","Hebrew"],["hi","Hindi"],["hif","Fiji Hindi"],["hr","Croatian"],["hsb","Upper Sorbian"],["ht","Haitian Creole"],["hu","Hungarian"],["hy","Armenian"],["hyw","Western Armenian"],["ia","Interlingua"],["iba","Iban"],["id","Indonesian"],["ie","Interlingue"],["ig","Igbo"],["igl","Igala"],["ik","Inupiaq"],["ilo","Iloko"],["inh","Ingush"],["io","Ido"],["is","Icelandic"],["it","Italian"],["iu","Inuktitut"],["ja","Japanese"],["jam","Jamaican Creole English"],["jbo","Lojban"],["jv","Javanese"],["ka","Georgian"],["kaa","Kara-Kalpak"],["kab","Kabyle"],["kai","Karekare"],["kaj","Jju"],["kbd","Kabardian"],["kbp","Kabiye"],["kcg","Tyap"],["kg","Kongo"],["kge","Komering"],["ki","Kikuyu"],["kk","Kazakh"],["km","Khmer"],["kn","Kannada"],["knc","Central Kanuri"],["ko","Korean"],["koi","Komi-Permyak"],["krc","Karachay-Balkar"],["ks","Kashmiri"],["ksh","Colognian"],["ku","Kurdish"],["kus","Kusaal"],["kv","Komi"],["kw","Cornish"],["ky","Kyrgyz"],["la","Latin"],["lad","Ladino"],["lb","Luxembourgish"],["lbe","Lak"],["lez","Lezghian"],["lfn","Lingua Franca Nova"],["lg","Ganda"],["li","Limburgish"],["lij","Ligurian"],["lld","Ladin"],["lmo","Lombard"],["ln","Lingala"],["lo","Lao"],["lt","Lithuanian"],["ltg","Latgalian"],["lv","Latvian"],["mad","Madurese"],["mai","Maithili"],["map-bms","Banyumasan"],["mdf","Moksha"],["mg","Malagasy"],["mhr","Eastern Mari"],["mi","Māori"],["min","Minangkabau"],["mk","Macedonian"],["ml","Malayalam"],["mn","Mongolian"],["mni","Manipuri"],["mnw","Mon"],["mos","Mossi"],["mr","Marathi"],["mrj","Western Mari"],["ms","Malay"],["mt","Maltese"],["mwl","Mirandese"],["my","Burmese"],["myv","Erzya"],["mzn","Mazanderani"],["nah","Nahuatl"],["nap","Neapolitan"],["nds","Low German"],["nds-nl","Low Saxon"],["ne","Nepali"],["new","Newari"],["nia","Nias"],["nl","Dutch"],["nn","Norwegian Nynorsk"],["no","Norwegian"],["nov","Novial"],["nqo","N’Ko"],["nr","South Ndebele"],["nrm","Norman"],["nso","Northern Sotho"],["nup","Nupe"],["nv","Navajo"],["ny","Nyanja"],["oc","Occitan"],["olo","Livvi-Karelian"],["om","Oromo"],["or","Odia"],["os","Ossetic"],["pa","Punjabi"],["pag","Pangasinan"],["pam","Pampanga"],["pap","Papiamento"],["pcd","Picard"],["pcm","Nigerian Pidgin"],["pdc","Pennsylvania German"],["pfl","Palatine German"],["pi","Pali"],["pl","Polish"],["pms","Piedmontese"],["pnb","Western Punjabi"],["pnt","Pontic"],["ppl","Nawat"],["ps","Pashto"],["pt","Portuguese"],["pwn","Paiwan"],["qu","Quechua"],["rki","Arakanese"],["rm","Romansh"],["rmy","Vlax Romani"],["rn","Rundi"],["ro","Romanian"],["roa-rup","Aromanian"],["roa-tara","Tarantino"],["rsk","Pannonian Rusyn"],["ru","Russian"],["rue","Rusyn"],["rw","Kinyarwanda"],["sa","Sanskrit"],["sah","Yakut"],["sat","Santali"],["sc","Sardinian"],["scn","Sicilian"],["sco","Scots"],["sd","Sindhi"],["se","Northern Sami"],["sg","Sango"],["sh","Serbo-Croatian"],["shi","Tachelhit"],["shn","Shan"],["si","Sinhala"],["simple","Simple English"],["sk","Slovak"],["skr","Saraiki"],["sl","Slovenian"],["sm","Samoan"],["smn","Inari Sami"],["sn","Shona"],["so","Somali"],["sq","Albanian"],["sr","Serbian"],["srn","Sranan Tongo"],["ss","Swati"],["st","Southern Sotho"],["stq","Saterland Frisian"],["su","Sundanese"],["sv","Swedish"],["sw","Swahili"],["syl","Sylheti"],["szl","Silesian"],["szy","Sakizaya"],["ta","Tamil"],["tay","Atayal"],["tcy","Tulu"],["tdd","Tai Nuea"],["te","Telugu"],["tet","Tetum"],["tg","Tajik"],["th","Thai"],["ti","Tigrinya"],["tig","Tigre"],["tk","Turkmen"],["tl","Tagalog"],["tly","Talysh"],["tn","Tswana"],["to","Tongan"],["tok","Toki Pona"],["tpi","Tok Pisin"],["tr","Turkish"],["trv","Taroko"],["ts","Tsonga"],["tt","Tatar"],["tum","Tumbuka"],["tw","Twi"],["ty","Tahitian"],["tyv","Tuvinian"],["udm","Udmurt"],["ug","Uyghur"],["uk","Ukrainian"],["ur","Urdu"],["uz","Uzbek"],["ve","Venda"],["vec","Venetian"],["vep","Veps"],["vi","Vietnamese"],["vls","West Flemish"],["vo","Volapük"],["wa","Walloon"],["war","Waray"],["wo","Wolof"],["wuu","Wu"],["xal","Kalmyk"],["xh","Xhosa"],["xmf","Mingrelian"],["yi","Yiddish"],["yo","Yoruba"],["za","Zhuang"],["zea","Zeelandic"],["zgh","Standard Moroccan Tamazight"],["zh","Chinese"],["zh-classical","Literary Chinese"],["zh-min-nan","Minnan"],["zh-yue","Cantonese"],["zu","Zulu"]]);
const appendixWithSlash = ["Adûni", "Afrihili", "Arabic_roots", "Belter_Creole", "Bibliography", "Black_Speech", "Bolak", "Communicationssprache", "Dothraki", "Eloi", "Gestures", "Glosa", "Goa'uld", "High_Valyrian", "Idiom_Neutral", "Interlingue", "Interslavic", "Klingon", "Kotava", "Láadan", "Lapine", "Lingua_Franca_Nova", "Lojban", "Mandalorian", "Medefaidrin", "Minecraft", "Mundolinco", "Na'vi", "Neo", "Novial", "Noxilo", "Protologisms/Long_words", "Quenya", "Romanova", "Sindarin", "Snowclones", "Talossan", "Toki_Pona", "Unas"];
const appendixNoSlash = ["Boldface", "Capital_letter", "Italics", "Lowercase_letter", "Possessive", "Repetition", "Small_caps", "Strikethrough", "Subscript", "Superscript", "Underline", "Uppercase_letter"];
const animationSpeed = 0.2; // seconds
mw.util.addCSS(`
.page-preview ol {
margin: 0 0.5em 0 1.5em;
padding: 0;
}
.page-preview dl {
margin-bottom: 0;
}
.page-preview p {
margin: 0;
}
/* popupContainer has the opacity animation, while popup gets translated. */
.popup-fade-in-up, .popup-fade-in-down {
animation: popup-fade-in ${animationSpeed}s ease forwards;
}
.popup-fade-out-up, .popup-fade-out-down {
animation: popup-fade-out ${animationSpeed}s ease forwards;
}
.popup-fade-in-up > div {
animation: popup-move-in-up ${animationSpeed}s ease forwards;
}
.popup-fade-in-down > div {
animation: popup-move-in-down ${animationSpeed}s ease forwards;
}
.popup-fade-out-up > div {
animation: popup-move-out-up ${animationSpeed}s ease forwards;
}
.popup-fade-out-down > div {
animation: popup-move-out-down ${animationSpeed}s ease forwards;
}
@keyframes popup-move-in-up {
0% {
transform: translate(0, 20px);
}
}
@keyframes popup-move-in-down {
0% {
transform: translate(0, -20px);
}
}
@keyframes popup-move-out-up {
100% {
transform: translate(0, -20px);
}
}
@keyframes popup-move-out-down {
100% {
transform: translate(0, 20px);
}
}
@keyframes popup-fade-out {
100% {
opacity: 0;
}
}
@keyframes popup-fade-in {
0% {
opacity: 0;
}
}
.ring-loader {
margin: auto;
width: 24px;
height: 24px;
border-radius: 50%;
border-top: 5px solid var(--wikt-palette-black);
border-bottom: 5px solid var(--wikt-palette-black);
border-left: 5px solid transparent;
border-right: 5px solid transparent;
animation: spin 1.2s linear infinite;
}
@keyframes spin {
100% {
transform: rotate(360deg);
}
}
.preview-headerlink, .preview-headerlink:visited {
color: inherit;
font-weight: bold;
}
/* Hack: get the speaker icon on Wikipedia articles without having to load Phonos. */
.ext-phonos .oo-ui-buttonElement-button:after {
content: "🔊";
}
.ext-phonos * {
display: inline !important;
padding: 0 !important;
margin: 0 !important;
}
`);
const definitionIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" fill="currentColor"><g><path d="M15 2a7.65 7.65 0 00-5 2 7.65 7.65 0 00-5-2H1v15h4a7.65 7.65 0 015 2 7.65 7.65 0 015-2h4V2zm2.5 13.5H14a4.38 4.38 0 00-3 1V5s1-1.5 4-1.5h2.5z"></path></g></svg>`;
const glossaryIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" fill="currentColor"><g><path d="M12.43 14.34A5 5 0 0110 15a5 5 0 113.95-2L17 16.09V3a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h10a2 2 0 001.45-.63z"></path><circle cx="10" cy="10" r="3"></circle></g></svg>`;
const articleIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" fill="currentColor"><g><path d="M5 1a2 2 0 00-2 2v14a2 2 0 002 2h10a2 2 0 002-2V3a2 2 0 00-2-2zm0 3h5v1H5zm0 2h5v1H5zm0 2h5v1H5zm10 7H5v-1h10zm0-2H5v-1h10zm0-2H5v-1h10zm0-2h-4V4h4z"></path></g></svg>`;
const bibliographyIcon = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" fill="currentColor"><g><path d="M3 2h12c.5 0 1 .5 1 1v1c0 .5-.5 1-1 1H3c0 0 .5-.5.5-1V3c0-.5-.5-1-.5-1zM4 6h12c.5 0 1 .5 1 1v1c0 .5-.5 1-1 1H4c0 0 .5-.5.5-1V7c0-.5-.5-1-.5-1zM3 10h12c.5 0 1 .5 1 1v1c0 .5-.5 1-1 1H3c0 0 .5-.5.5-1v-1c0-.5-.5-1-.5-1zM4 14h12c.5 0 1 .5 1 1v1c0 .5-.5 1-1 1H4c0 0 .5-.5.5-1v-1c0-.5-.5-1-.5-1z"/></g></svg>`;
const loader = document.createElement("div");
loader.className = "ring-loader";
const popupContainer = document.createElement("div");
const popup = document.createElement("div");
const popupContent = document.createElement("div");
popupContainer.style = `display: none; position: absolute; filter: drop-shadow(0px 30px 30px rgba(0, 0, 0, 0.15)) drop-shadow(0px 0px 0.75px var(--wikt-palette-dullblue)); z-index: 801`;
popupContainer.className = "page-preview";
popup.style = "box-sizing: border-box; height: 100%; background: var(--wikt-palette-white)";
popupContent.style = "display: flex; flex-direction: column; border-radius: 2px; box-sizing: border-box; color: var(--wikt-palette-black); overflow: auto; height: 100%; overflow-wrap: break-word; scrollbar-width: thin";
document.body.append(popupContainer);
popupContainer.append(popup);
popup.append(popupContent);
let popupTimer;
let openLink;
let mouseX, mouseY;
let API_controller = new AbortController();
function closePopup() {
if (!openLink) return;
openLink = null;
API_controller.abort();
API_controller = new AbortController();
if (popupContainer.classList.contains("popup-fade-in-up")) {
popupContainer.classList.remove("popup-fade-in-up");
popupContainer.classList.add("popup-fade-out-down");
} else {
popupContainer.classList.remove("popup-fade-in-down");
popupContainer.classList.add("popup-fade-out-up");
}
// After the animation has completed, reset the popup to its initial state.
setTimeout(() => {
popupContainer.style.display = "none";
popupContainer.classList.remove("popup-fade-out-down", "popup-fade-out-up");
}, animationSpeed * 1000);
}
popup.addEventListener("pointerenter", () => {
clearTimeout(popupTimer);
});
popup.addEventListener("pointerleave", () => {
clearTimeout(popupTimer);
popupTimer = setTimeout(closePopup, 300);
});
function processLink(link) {
let linkTitle = decodeURIComponent(link.pathname.split("/wiki/")[1]);
let titlePrefix = linkTitle.includes(":") ? linkTitle.toLowerCase().split(":")[0] : "";
let resolvedTitle = linkTitle;
let API_domain = link.origin;
let linkAnchor = decodeURIComponent(link.hash.slice(1) || "");
let isWPlink = link.href.match(/^https:\/\/[^.]+.wikipedia.org\/wiki\//);
let isPreviewLink = Boolean(link.closest(".page-preview"));
let isGlossary = /^Appendix:.*[Gg]lossary$/.test(linkTitle);
// Start with various checks to determine whether a link should be processed.
if (link.matches(`nav a, .cancelLink a, .mw-widget-titleOptionWidget a, .new, .preview-headerlink, .external, [href$="#"]`)) {
return;
} else if (isGlossary) {
// Links to glossary *must* have an anchor.
if (!linkAnchor) return;
} else if (linkTitle.startsWith("Appendix:Bibliography/")) {
// Bibliography subpages must have an anchor starting with `bib-`.
if (!linkAnchor || !linkAnchor.startsWith("bib-")) return;
} else if (!isWPlink) {
// Other Wiktionary pages must not have a lowercase-starting anchor (filters out some unhelpful links).
if (/^[a-z]/.test(linkAnchor)) return;
}
if (link.href.startsWith("https://mnw.wiktionary.org/wiki/")) {
// Filter out all interwiki prefixes.
if (INTERWIKI_PREFIXES.has(titlePrefix))
return;
let {namespace, title} = new mw.Title(linkTitle);
if (namespace === 0) { // Mainspace
if (title.endsWith("/translations"))
return;
} else if (namespace === 100) { // Appendix space
if (!appendixWithSlash.some(lang => title.startsWith(lang + "/")) && !appendixNoSlash.includes(title) && !isGlossary)
return;
} else if (namespace !== 118) { // Reconstruction space
return;
}
} else if (isWPlink) {
// Filter out invalid interwiki prefixes.
if (INTERWIKI_PREFIXES.get(titlePrefix) === 0)
return;
// Get the resolved title if it's a language interwiki.
if (INTERWIKI_PREFIXES.has(titlePrefix)) {
API_domain = `https://${INTERWIKI_PREFIXES.get(titlePrefix)}.wikipedia.org`;
resolvedTitle = linkTitle.substring(linkTitle.indexOf(":") + 1);
// If the resolved title contains another interwiki, return.
let resolvedTitlePrefix = resolvedTitle.includes(":") ? resolvedTitle.toLowerCase().split(":")[0] : ""; // same as titlePrefix
if (INTERWIKI_PREFIXES.has(resolvedTitlePrefix))
return;
}
} else {
return;
}
link.addEventListener("pointerover", event => {
[mouseX, mouseY] = [event.clientX, event.clientY];
clearTimeout(popupTimer);
// Ignore links which are already open.
if (link === openLink)
return;
if (!isPreviewLink)
closePopup();
// Fetch popup text immediately on hover to reduce delay.
let responsePromise = fetch(`${API_domain}/api/rest_v1/page/html/${encodeURIComponent(resolvedTitle)}`, {
headers: {"Api-User-Agent": "Gadget developed by [[User:Ioaxxere]]"},
signal: API_controller.signal
}).then(r => r.text()).catch(() => { /* fetch was aborted */ });
popupTimer = setTimeout(() => {
popupContainer.style.display = "";
popupContent.innerHTML = "";
popupContent.append(loader);
popupContent.style.padding = "14px 16px 8px";
// Disable link hovering until animation has completed.
popupContent.style.pointerEvents = "none";
setTimeout(() => popupContent.style.pointerEvents = "", animationSpeed * 1000);
// Adapt the popup for large, standard, and small size preference in Vector 2022.
let sizeSetting = 0;
if (document.documentElement.matches(".vector-feature-custom-font-size-clientpref-1"))
sizeSetting = 1;
else if (document.documentElement.matches(".vector-feature-custom-font-size-clientpref-2"))
sizeSetting = 2;
let width = [320, 340, 360][sizeSetting];
let height = [210, 225, 240][sizeSetting];
let triangleSize = [9, 10, 11][sizeSetting];
popupContainer.style.fontSize = ["14px", "15px", "17px"][sizeSetting];
popupContainer.style.lineHeight = ["21px", "22px", "24px"][sizeSetting];
popupContainer.style.width = width + "px";
popupContainer.style.height = height + "px";
if (isPreviewLink) {
// Trigger fade-in-down animation.
popupContainer.classList.remove("popup-fade-in-up", "popup-fade-in-down");
void popupContainer.offsetLeft; // force reflow
popupContainer.classList.add("popup-fade-in-down");
} else {
openLink = link;
// Get list of rects (lines) of the target element, then find the one whose midpoint is closest to mouseY.
// This ensures that the code can correctly handle multi-line links.
let linkBlock = [...event.target.getClientRects()].reduce((prev, next) => Math.abs((next.top + next.bottom) / 2 - mouseY) < Math.abs((prev.top + prev.bottom) / 2 - mouseY) ? next : prev);
// Horizontal position. Choose left or right depending on the side of the screen the mouse is in.
let leftPosition = mouseX - 30;
if (mouseX > document.documentElement.clientWidth / 2)
leftPosition = mouseX - width + 30;
// Ensure that the popup is at least 5px away from the side of the screen.
leftPosition = Math.max(5, Math.min(leftPosition, document.documentElement.clientWidth - width - 5));
popupContainer.style.left = leftPosition + document.documentElement.scrollLeft + "px";
// Vertical position. Prioritize fade-in-down unless there would be less than 10px of room above.
if (linkBlock.top > height + 10 || linkBlock.top > document.documentElement.clientHeight - linkBlock.bottom) {
popupContainer.style.top = linkBlock.top + document.documentElement.scrollTop - height + "px";
popupContainer.classList.add("popup-fade-in-down");
popup.style.padding = `0 0 ${triangleSize}px`;
// Create a triangle on the bottom.
popup.style.clipPath = `polygon(0 0, 100% 0, 100% calc(100% - ${triangleSize}px), ${mouseX - leftPosition + triangleSize}px calc(100% - ${triangleSize}px), ${mouseX - leftPosition}px 100%, ${mouseX - leftPosition - triangleSize}px calc(100% - ${triangleSize}px), 0 calc(100% - ${triangleSize}px))`;
} else {
popupContainer.style.top = linkBlock.bottom + document.documentElement.scrollTop + "px";
popupContainer.classList.add("popup-fade-in-up");
popup.style.padding = `${triangleSize}px 0 0`;
// Create a triangle on top.
popup.style.clipPath = `polygon(0 ${triangleSize}px, ${mouseX - leftPosition - triangleSize}px ${triangleSize}px, ${mouseX - leftPosition}px 0, ${mouseX - leftPosition + triangleSize}px ${triangleSize}px, 100% ${triangleSize}px, 100% 100%, 0 100%)`;
}
}
responsePromise.then(response => {
if (!response) return; // if the fetch was aborted
popupContent.innerHTML = "";
let responseDocument = new DOMParser().parseFromString(response, "text/html");
// Convert to absolute URLs.
responseDocument.querySelectorAll("a[href]").forEach(link => link.setAttribute("href", link.href));
let anchoredElement = responseDocument.getElementById(linkAnchor);
let popupHeader = document.createElement("div");
popupHeader.style = "font-size: 90%; color: var(--wikt-palette-deepblue)";
popupContent.append(popupHeader);
let iconContainer = document.createElement("span");
iconContainer.style = "float: right; margin-left: 10px; height: 20px; color: var(--wikt-palette-black)";
popupHeader.append(iconContainer);
let titleLink = document.createElement("a");
titleLink.href = link.href;
titleLink.title = link.title;
titleLink.className = "skin-invert-image preview-headerlink";
// Scrape entry content.
if (isWPlink) {
iconContainer.innerHTML = articleIcon;
titleLink.textContent = linkTitle.replaceAll("_", " ");
if (responseDocument.title)
titleLink.innerHTML = responseDocument.title; // sometimes gives HTML text
let WikipediaName = WP_LANGUAGES.get(API_domain.substr(8).split(".")[0]);
popupHeader.append(WikipediaName + " Wikipedia article for ", titleLink);
let articleContent = document.createElement("div");
articleContent.style.margin = "5px 0 0 10px";
let firstSection = responseDocument.querySelector("section");
if (firstSection && responseDocument.querySelector(`meta[property="mw:pageNamespace"][content="0"]`)) {
firstSection.querySelectorAll("b").forEach(boldElem => boldElem.outerHTML = boldElem.innerHTML);
firstSection.querySelectorAll(":scope > p, :scope > ul, :scope > ol").forEach(elem => articleContent.append(elem));
}
if (articleContent.childElementCount)
popupContent.append(articleContent);
} else if (isGlossary) {
iconContainer.innerHTML = glossaryIcon;
titleLink.textContent = linkAnchor.replaceAll("_", " ");
popupHeader.append("Glossary definition of ", titleLink);
if (anchoredElement && anchoredElement.matches(".template-anchor")) {
// Get succeeding `dd` elements. The HTML is <dt>...<span class="template-anchor"></span>...</dt><dd>...</dd><dd>...</dd>
for (let elem = anchoredElement.parentElement.nextElementSibling; elem && elem.matches("dd"); elem = elem.nextElementSibling) {
elem.style = "margin: 5px 0 0 15px";
popupContent.append(elem.cloneNode(true));
}
}
} else if (linkTitle.startsWith("Appendix:Bibliography/")) {
iconContainer.innerHTML = bibliographyIcon;
let language = linkTitle.slice(22).replaceAll("_", " "); // trim "Appendix:Bibliography/" prefix
popupHeader.append(`${language} bibliography`);
if (anchoredElement && anchoredElement.matches(".bibliography-id")) {
let bibliographyCitation = document.createElement("div");
bibliographyCitation.style = "margin: 5px 0 0 15px";
bibliographyCitation.innerHTML = anchoredElement.innerHTML;
popupContent.append(bibliographyCitation);
}
} else {
const hasDefinitions = elem => Boolean(elem.querySelector("ol:not(.references), .ja-see, .zh-see"));
iconContainer.innerHTML = definitionIcon;
// Try to resolve the anchor element to #Chinese.
if (!anchoredElement && ["ကာန်ဒုန်", "ကာဲန်", "ဟးကာ", "ဟောတ်ကဳယာန်", "လိက်ပတ်ကြုက်", "မာန်ဒါရေဝ်", "ကြုက်လဒေါဝ်", "ကြုက်တြေံ", "ဝူ", "သေၚ်"].includes(linkAnchor))
anchoredElement = responseDocument.querySelector("#ကြုက်");
// Try to guess the anchor target in the following order: English, Chinese, Translingual, [first h2 on page]
// Always prioritize an L2 section which contains definitions.
if (!linkAnchor) {
let pageH2s = [...responseDocument.querySelectorAll("h2")];
if (pageH2s.some(h2 => hasDefinitions(h2.parentElement)))
pageH2s = pageH2s.filter(h2 => hasDefinitions(h2.parentElement));
anchoredElement = pageH2s.find(h2 => h2.id === "မန်");
if (!anchoredElement) anchoredElement = pageH2s.find(h2 => h2.id === "ကြုက်");
if (!anchoredElement) anchoredElement = pageH2s.find(h2 => h2.id === "မအရေဝ်ပံၚ်ကောံ");
if (!anchoredElement) anchoredElement = pageH2s[0];
}
let displayTitle = document.createElement("strong");
displayTitle.textContent = linkTitle.split("/").pop().replaceAll("_", " ");
if (linkTitle.startsWith("Reconstruction:"))
displayTitle.textContent = "*" + displayTitle.textContent;
// Find localest section containing an h2.
let languageSection = anchoredElement;
while (languageSection && !languageSection.querySelector(":scope > h2"))
languageSection = languageSection.parentElement.closest("section");
// Make sure that the entry is well-formed.
if (languageSection) {
let language = languageSection.querySelector(":scope > h2").textContent;
let scrapeSection = anchoredElement.closest("section");
// Find localest section which contains any definitions.
while (scrapeSection && !hasDefinitions(scrapeSection))
scrapeSection = scrapeSection.parentElement.closest("section");
if (scrapeSection) {
let headwords = [...scrapeSection.querySelectorAll(".headword-line > strong")];
if (new Set(headwords.map(h => h.textContent)).size === 1) {
// If there is a single unique headword, replace the display title with that.
displayTitle = headwords[0];
if (displayTitle.querySelector("a > img"))
displayTitle = displayTitle.querySelector("a > img").cloneNode();
} else if (new Set(headwords.map(h => h.cloneNode().outerHTML)).size === 1) {
// If there is a single unique set of element attributes, use that with the display title.
headwords[0].innerHTML = displayTitle.innerHTML;
displayTitle = headwords[0];
}
// Remove existing links in the headword.
displayTitle.querySelectorAll("a").forEach(elem => elem.replaceWith(elem.textContent));
let ols = scrapeSection.querySelectorAll(":scope > ol:not(.references), section > ol:not(.references)");
if (anchoredElement.matches(".senseid")) {
[...anchoredElement.parentElement.childNodes].forEach(child => {
if (child !== anchoredElement) child.remove();
});
ols = [anchoredElement.closest("ol")];
}
for (let ol of ols) {
let POS_container = document.createElement("div");
POS_container.style.margin = "8px 0 5px 0";
let POS = document.createElement("span");
POS.style = "font-size: 110%; font-weight: bold";
POS.textContent = ol.closest("section").firstChild.textContent;
POS_container.append(POS);
let tlb = ol.closest("section").querySelector(".headword-line ~ .usage-label-term");
if (tlb)
POS_container.append(document.createElement("br"), tlb);
popupContent.append(POS_container, ol);
}
// {{ja-see}} and {{zh-see}} don't follow the normal format, so just insert them verbatim.
for (let seeTemplate of scrapeSection.querySelectorAll(".ja-see, .zh-see"))
popupContent.append(seeTemplate);
}
titleLink.append(displayTitle);
popupHeader.append("Preview definitions of " + language + " ", titleLink);
} else {
titleLink.append(displayTitle);
popupHeader.append("Preview definitions of ", titleLink);
}
}
// Post-fetch error handling.
if (popupContent.childElementCount > 1) {
// Clean up HTML.
popupContent.querySelectorAll("link, .previewonly, .maintenance-line, .mw-empty-elt, .reference, .Inline-Template, .vsHide").forEach(elem => elem.remove());
if (!isWPlink)
popupContent.querySelectorAll("li > ul").forEach(elem => elem.remove()); // remove quotations
for (let elem of popupContent.querySelectorAll("*"))
elem.removeAttribute("id"); // avoid inadvertently repeating IDs within a page
} else if (isWPlink) {
// Display a message if the Wikipedia article was invalid or not in mainspace.
let noArticle = document.createElement("div");
noArticle.style = "margin: 5px 0 0 15px; font-size: 90%";
noArticle.textContent = "(article content could not be previewed)";
popupContent.append(noArticle);
} else if (linkAnchor && !anchoredElement) {
// Display a message if the anchor is invalid.
let noSectionFound = document.createElement("div");
noSectionFound.style = "margin: 10px 0 0 7.5px; font-size: 90%";
let strong = document.createElement("strong");
strong.textContent = linkAnchor.replaceAll("_", " ");
noSectionFound.append("The ", strong, " section was not found on this page.");
popupContent.append(noSectionFound);
} else {
// Display a message if no definitions were found in the section.
let noDefinitionsFound = document.createElement("div");
noDefinitionsFound.style = "margin: 5px 0 0 15px; font-size: 90%";
noDefinitionsFound.textContent = "(no definitions found)";
popupContent.append(noDefinitionsFound);
}
// Reduce the padding if a scrollbar is present. The intended padding is 16px on each side.
if (width - popupHeader.clientWidth > 32)
popupContent.style.paddingRight = Math.max(4, 48 + popupHeader.clientWidth - width) + "px";
});
// (Hack?) make sure that `link pointerleave` doesn't cause the popup to immediately close.
setTimeout(() => clearTimeout(popupTimer), 0);
}, isPreviewLink ? 1200 : 400);
});
link.addEventListener("pointerout", () => {
clearTimeout(popupTimer);
if (link === openLink) {
popupTimer = setTimeout(closePopup, 300);
} else {
API_controller.abort();
API_controller = new AbortController();
}
});
link.addEventListener("pointermove", event => [mouseX, mouseY] = [event.clientX, event.clientY]);
link.addEventListener("click", () => clearTimeout(popupTimer));
}
// Process all links.
document.querySelectorAll("a").forEach(processLink);
// Process links which are added to the DOM after the gadget has run.
(new MutationObserver(events => events.flatMap(event => [...event.addedNodes]).forEach(node => {
if (node instanceof HTMLAnchorElement)
processLink(node);
if (node instanceof HTMLElement)
node.querySelectorAll("a").forEach(processLink);
}))).observe(document.body, {childList: true, subtree: true});
// Dispatch hover events to support [[w:MediaWiki:Gadget-ReferenceTooltips.js]].
const linkEvent = ev => openLink && openLink.dispatchEvent(new Event(ev, {bubbles: true, cancelable: true}));
// Note: for some reason an event listener on `popup` doesn't catch everything...
popupContainer.addEventListener("pointerenter", () => setTimeout(() => linkEvent("mouseover")));
popupContainer.addEventListener("pointerleave", () => linkEvent("mouseout"));
// Custom events
popupContainer.addEventListener("pointerenter", () => linkEvent("linkPopupHover"));
popupContainer.addEventListener("pointerleave", () => linkEvent("linkPopupUnhover"));
// </nowiki>
68wiykbkptptaplukp85svv3lszt7mj
ထာမ်ပလိက်:mk-decl-noun-f
10
295809
396642
2026-06-08T16:19:43Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{mk-decl-noun-table{{#if:{{{n|}}}|-single}}{{#if:{{{col|}}}|-collective}}<!-- -->|n={{{n|}}}<!-- -->|ind_sg={{#if:{{{1|}}}|{{{1}}}а|{{pagename}}}}<!-- -->|def_unsp_sg={{#if:{{{1|}}}|{{{1}}}ата|{{pagename}}та}}<!-- -->|def_prox_sg={{#if:{{{1|}}}|{{{1}}}ава|{{pagename}}ва}}<!-- -->|def_dist_sg={{#if:{{{1|}}}|{{{1}}}ана|{{pagename}}на}}<!-..."
396642
wikitext
text/x-wiki
{{#invoke:checkparams|warn}}<!-- Validate template parameters
-->{{mk-decl-noun-table{{#if:{{{n|}}}|-single}}{{#if:{{{col|}}}|-collective}}<!--
-->|n={{{n|}}}<!--
-->|ind_sg={{#if:{{{1|}}}|{{{1}}}а|{{pagename}}}}<!--
-->|def_unsp_sg={{#if:{{{1|}}}|{{{1}}}ата|{{pagename}}та}}<!--
-->|def_prox_sg={{#if:{{{1|}}}|{{{1}}}ава|{{pagename}}ва}}<!--
-->|def_dist_sg={{#if:{{{1|}}}|{{{1}}}ана|{{pagename}}на}}<!--
-->|voc_sg={{#if:{{{3|}}}|{{{3}}}|{{#if:{{{1|}}}|{{{1}}}о|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}о}}}}<!--
-->|col_sg={{#if:{{{2|}}}|{{{2}}}е|{{#if:{{{1|}}}|{{{1}}}је|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}је}}}}<!--
-->|col_sg2={{{col_sg2|}}}<!--
-->|ind_pl={{#if:{{{1|}}}|{{{1}}}и|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}и}}<!--
-->|def_unsp_pl={{#if:{{{1|}}}|{{{1}}}ите|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}ите}}<!--
-->|def_prox_pl={{#if:{{{1|}}}|{{{1}}}иве|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}иве}}<!--
-->|def_dist_pl={{#if:{{{1|}}}|{{{1}}}ине|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}ине}}<!--
-->|voc_pl={{#if:{{{1|}}}|{{{1}}}и|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}и}}<!--
-->|col_pl={{#if:{{{colpl|}}}|{{#if:{{{2|}}}|{{{2}}}а|{{#if:{{{1|}}}|{{{1}}}ја}}|{{#invoke:string/templates|sub|s={{pagename}}|1|{{#expr:-1-1}}}}ја}}}}<!--
-->|col_pl2={{{col_pl2|}}}<!--
-->}}<!--
-->{{#if:{{{mf|}}}| |}}<!--
-->{{#ifeq:{{{n|}}}|sg| |}}<!--
--><noinclude>{{documentation}}</noinclude>
6o4bpan52aem8dwfe2vldftfbxx67f3
ထာမ်ပလိက်:mk-decl-noun-f/documentation
10
295810
396643
2026-06-08T16:22:40Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} This template provides the inflection of Macedonian feminine nouns that end in {{m|mk||-а|tr=-}} and form the vocative with {{m|mk||-о|tr=-}}. It is also used for masculine nouns with a feminine declension, like "{{m|mk|колега|tr=-}}", "{{m|mk|оџа|tr=-}}" or "{{m|mk|шура|tr=-}}". ==Parameters== ; <code>1=</code> : Optional and mainly used in old entries that used the old code...."
396643
wikitext
text/x-wiki
{{documentation subpage}}
This template provides the inflection of Macedonian feminine nouns that end in {{m|mk||-а|tr=-}} and form the vocative with {{m|mk||-о|tr=-}}. It is also used for masculine nouns with a feminine declension, like "{{m|mk|колега|tr=-}}", "{{m|mk|оџа|tr=-}}" or "{{m|mk|шура|tr=-}}".
==Parameters==
; <code>1=</code>
: Optional and mainly used in old entries that used the old code. It is filled by the stem, which is the singular form without the final {{m|mk||-а|tr=-}}.
; <code>2=</code>
: The collective stem, e.g "воѓ" for "вода". If left empty, <code>1</code> is used by default.
; <code>3=</code>
: For manual entering of the vocative form.
; <code>n=</code>
: The number of the noun. Leave this empty for normal countable nouns. For singular-only nouns, use <code>n=sg</code>, and for plural-only nouns, use <code>n=pl</code>.
; <code>col=</code>
: Used to display collective forms, which are suppressed by default. To only display a singular collective form, use <code>col=1</code>. To display a plural collective form as well, also add <code>colpl=1</code>. To display a second singular collective form, use <code>col_sg2=</code> (as in the entry for {{m|mk|вода|tr=-}}). To display a second plural collective form use <code>col_pl2=</code>.
; <code>mf=1</code>
: Places the noun in [[:Category:Macedonian masculine nouns with a feminine declension]].
==Usage Examples==
Assuming the template is used on the page {{m|mk|Македонка|g=f|tr=-}}, use this code:
* <code><nowiki>{{mk-decl-noun-f}}</nowiki></code>
<br />
Assuming the template is used on the page {{m|mk|нива|g=f|tr=-}}, to display the collective form, use this code:
* <code><nowiki>{{mk-decl-noun-f|col=1}}</nowiki></code>
<br />
Assuming the template is used on the page {{m|mk|ливада|g=f|tr=-}}, to display the collective form, use this code:
* <code><nowiki>{{mk-decl-noun-f|2=ливаѓ|col=1}}</nowiki></code>
or
* <code><nowiki>{{mk-decl-noun-f||ливаѓ|col=1}}</nowiki></code>
<br />
Assuming the template is used on the page {{m|mk|колега|g=m|tr=-}}, to manually enter the vocative form, use this code:
* <code><nowiki>{{mk-decl-noun-f|3=колега|mf=1}}</nowiki></code>
or
* <code><nowiki>{{mk-decl-noun-f|||колега|mf=1}}</nowiki></code>
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်မက်သဳဒဝ်နဳယျာဂမၠိုၚ်|f]]
</includeonly>
c0gbfmcump6ftz9u260v50m2w5wv5ro
ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်မက်သဳဒဝ်နဳယျာဂမၠိုၚ်
14
295811
396644
2026-06-08T16:24:03Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏမက်သဳဒဝ်နဳယျာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|မ]]"
396644
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏမက်သဳဒဝ်နဳယျာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်ဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|မ]]
o4jkhd4opif2ub948ts7d5t9q5u21mr
ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏမက်သဳဒဝ်နဳယျာဂမၠိုၚ်
14
295812
396645
2026-06-08T16:25:15Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "[[ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|မ]]"
396645
wikitext
text/x-wiki
[[ကဏ္ဍ:ထာမ်ပလိက်မက်သဳဒဝ်နဳယျာဂမၠိုၚ်]][[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏဗက်အလိုက်အရေဝ်ဘာသာဂမၠိုၚ်|မ]]
si6rfikxvau5n3263ame6bf6yw7qrei
ထာမ်ပလိက်:mk-decl-noun-table
10
295813
396646
2026-06-08T16:35:28Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{#invoke:checkparams|error|n,accel-gender,col_sg,col_sg2,col_pl,col_pl2}}<!-- Validate template parameters -->{{inflection-table-top|palette=amber|title=မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{m|mk||{{pagename}}|tr=-}}|tall=yes}} ! | ! | ကိုန်ဨကဝုစ် ! | ကိုန်ဗဟုဝစ် |- ! | ဟွံချိုတ်ပၠိုတ် | {{#if:{{{ind_sg|}}}|{{l-self|mk|..."
396646
wikitext
text/x-wiki
{{#invoke:checkparams|error|n,accel-gender,col_sg,col_sg2,col_pl,col_pl2}}<!-- Validate template parameters
-->{{inflection-table-top|palette=amber|title=မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{m|mk||{{pagename}}|tr=-}}|tall=yes}}
! |
! | ကိုန်ဨကဝုစ်
! | ကိုန်ဗဟုဝစ်
|-
! | ဟွံချိုတ်ပၠိုတ်
| {{#if:{{{ind_sg|}}}|{{l-self|mk|{{{ind_sg}}}}}|—}}
| {{#if:{{{ind_pl|}}}|{{l-self|mk|{{{ind_pl}}}| accel-form=indef{{!}}pl}}|—}}
|-
! | ဟွံဂွံစၟတ်သမ္တီလဝ်မချိုတ်ပၠိုတ်
| {{#if:{{{def_unsp_sg|}}}|{{l-self|mk|{{{def_unsp_sg}}}| accel-form=unspecified{{!}}def{{!}}sg}}|—}}
| {{#if:{{{def_unsp_pl|}}}|{{l-self|mk|{{{def_unsp_pl}}}| accel-form=unspecified{{!}}def{{!}}pl}}|—}}
|-
! | ပရေၚ်ကြပ်မချိုတ်ပၠိုတ်
| {{#if:{{{def_prox_sg|}}}|{{l-self|mk|{{{def_prox_sg}}}| accel-form=prox{{!}}def{{!}}sg}}|—}}
| {{#if:{{{def_prox_pl|}}}|{{l-self|mk|{{{def_prox_pl}}}| accel-form=prox{{!}}def{{!}}pl}}|—}}
|-
! | ဇမ္ၚောဲမချိုတ်ပၠိုတ်
| {{#if:{{{def_dist_sg|}}}|{{l-self|mk|{{{def_dist_sg}}}| accel-form=distal{{!}}def{{!}}sg}}|—}}
| {{#if:{{{def_dist_pl|}}}|{{l-self|mk|{{{def_dist_pl}}}| accel-form=distal{{!}}def{{!}}pl}}|—}}
|-
! | ပရေၚ်ဂယိုၚ်လမျီု
| {{#if:{{{voc_sg|}}}|{{l-self|mk|{{{voc_sg}}}| accel-form=voc{{!}}sg}}{{#if:{{{voc_sg2|}}}|<br>{{l-self|mk|{{{voc_sg2}}}| accel-form=voc{{!}}sg}}}}|—}}
| {{#if:{{{voc_pl|}}}|{{l-self|mk|{{{voc_pl}}}| accel-form=voc{{!}}pl}}|—}}
{{#if:{{{count|}}}|{{!}}-
! {{!}} count form
{{!}} —
{{!}} {{l-self|mk|{{{count}}}| accel-form=count form}}
}}
{{inflection-table-bottom}}<!--
--><noinclude>{{documentation}}</noinclude>
du7xk0a84dk53yylcqb6hixhpruya4g
ထာမ်ပလိက်:mk-decl-noun-table/documentation
10
295814
396647
2026-06-08T16:50:26Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}} {{isAccelerated}} The purpose of this template is to provide the basic code for the more specific templates which exist for Macedonian nouns. It is not used in entries directly. <includeonly> [[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်မက်သဳဒဝ်နဳယျာဂမၠိုၚ်|*]] </includeonly>"
396647
wikitext
text/x-wiki
{{documentation subpage}}
{{isAccelerated}}
The purpose of this template is to provide the basic code for the more specific templates which exist for Macedonian nouns. It is not used in entries directly.
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်အပြံၚ်အလှာဲပ္တဝ်ထ္ၜးပမာဏနာမ်မက်သဳဒဝ်နဳယျာဂမၠိုၚ်|*]]
</includeonly>
0tntttz6fokawv2nsh811qoqiheo3sd
ထာမ်ပလိက်:mk-decl-noun-table-single
10
295815
396648
2026-06-08T16:54:00Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{inflection-table-top|palette=amber|title=မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{m|mk||{{pagename}}|tr=-}}|tall=yes}} ! ! {{#ifeq:{{{n}}}|pl|ကိုန်ဗဟုဝစ်|ကိုန်ဨကဝုစ်}} |- ! ဟွံချိုတ်ပၠိုတ် | {{#if:{{{ind_{{{n}}}|}}}|{{l-self|mk|{{{ind_{{{n}}}}}}}}|—}} |- ! ဟွံဂွံစၟတ်သမ္တီလဝ်မ..."
396648
wikitext
text/x-wiki
{{inflection-table-top|palette=amber|title=မလဟုတ်စှ်ေဆေၚ်စပ်ကဵု {{m|mk||{{pagename}}|tr=-}}|tall=yes}}
!
! {{#ifeq:{{{n}}}|pl|ကိုန်ဗဟုဝစ်|ကိုန်ဨကဝုစ်}}
|-
! ဟွံချိုတ်ပၠိုတ်
| {{#if:{{{ind_{{{n}}}|}}}|{{l-self|mk|{{{ind_{{{n}}}}}}}}|—}}
|-
! ဟွံဂွံစၟတ်သမ္တီလဝ်မချိုတ်ပၠိုတ်
| {{#if:{{{def_unsp_{{{n}}}|}}}|{{l-self|mk|{{{def_unsp_{{{n}}}}}}|accel-form=unspecified{{!}}def}}|—}}
|-
! ပရေၚ်ကြပ်မချိုတ်ပၠိုတ်
| {{#if:{{{def_prox_{{{n}}}|}}}|{{l-self|mk|{{{def_prox_{{{n}}}}}}|accel-form=prox{{!}}def}}|—}}
|-
! ဇမ္ၚောဲမချိုတ်ပၠိုတ်
| {{#if:{{{def_dist_{{{n}}}|}}}|{{l-self|mk|{{{def_dist_{{{n}}}}}}|accel-form=distal{{!}}def}}|—}}
|-
! ပရေၚ်ဂယိုၚ်လမျီု
| {{#if:{{{voc_{{{n}}}|}}}|{{l-self|mk|{{{voc_{{{n}}}}}}|accel-form=voc}}{{#if:{{{voc_sg2|}}}|<br>{{l-self|mk|{{{voc_sg2}}}|accel-form=voc}}}}|—}}
{{inflection-table-bottom}}<!--
--><noinclude>{{documentation}}</noinclude>
m5iistibpb509ipbsssj0kvo70m4x81
ထာမ်ပလိက်:m
10
295816
396650
2026-06-08T16:55:26Z
咽頭べさ
33
咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[ထာမ်ပလိက်:m]] ဇရေင် [[ထာမ်ပလိက်:mention]] နကု မကလေင်ပညုင်
396650
wikitext
text/x-wiki
#REDIRECT [[ထာမ်ပလိက်:mention]]
74z4dvbcxil8xrnedjx433axg9voei4
ထာမ်ပလိက်:mention/documentation
10
295817
396651
2026-06-08T16:57:09Z
咽頭べさ
33
စာမျက်နှာကို [[ထာမ်ပလိက်:link/documentation]] သို့ ပြန်ညွှန်းလိုက်သည်
396651
wikitext
text/x-wiki
#REDIRECT [[Template:link/documentation]]
rgz6iqypo0yhm35lfusp0qw63d5jgic
ထာမ်ပလိက်:link/documentation
10
295818
396652
2026-06-08T16:58:34Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{documentation subpage}}{{uses lua|Module:links/templates}} {{#switch:{{PAGENAME}}|link={{shortcut|Template:l}}|mention={{shortcut|Template:m}}}} This template generates a link to an entry in a given language. It links to a specific language-section on the target page, and applies language-specific formatting. It can also show a number of annotations after the linked term. There are several linking templates: * {{te..."
396652
wikitext
text/x-wiki
{{documentation subpage}}{{uses lua|Module:links/templates}}
{{#switch:{{PAGENAME}}|link={{shortcut|Template:l}}|mention={{shortcut|Template:m}}}}
This template generates a link to an entry in a given language. It links to a specific language-section on the target page, and applies language-specific formatting. It can also show a number of annotations after the linked term.
There are several linking templates:
* {{temp|link}} (shortcut {{temp|l}}). Use this template outside running text, in sections that list entries, such as “[[Wiktionary:Synonyms|Synonyms]]”, “[[Wiktionary:Related terms|Related terms]]”{{,}} and “[[Wiktionary:Descendants|Descendants]]”.
* {{temp|mention}} (shortcut {{temp|m}}). Use this template when a particular term is [[mention]]ed ([[w:use–mention distinction|not ''used'']]) within running English text, particularly in “[[Wiktionary:Etymology|Etymology]]” and “[[Wiktionary:Usage notes|Usage notes]]” sections, and occasionally in definitions.
* {{temp|l-self}}. Use this template in inflection tables and other templates that list multiple terms. It works the same as {{temp|link}}, but when it links to the same page it is placed on, the link turns bold rather than becoming a link. This mimics the MediaWiki software's behaviour when linking to the same page, but has the full language support of {{temp|link}}.
* {{temp|m-self}}. Use this template in templates that mention multiple terms in running text. It displays like {{temp|mention}}, but works the same as {{temp|l-self}} when linked to the current page.
* {{temp|ll}}. This template creates a link, but does not add any additional formatting or annotations. There is at the moment no consensus on whether it should be used in entries or not.
All of these templates create a link to a language's section of an entry, or to a language-specific sense id created by the template {{temp|senseid}} if the {{para|id}} parameter is used.
If the second parameter of {{temp|l}}, {{temp|m}}, {{temp|l-self}}{{,}} or {{temp|m-self}} contains a wikilink (<code><nowiki>[[entryname|text]]</nowiki></code> or <code><nowiki>[[entryname]]</nowiki></code>), then this link will be transformed into a link to the language's section of the entry. For instance, <code><nowiki>the [[word]]</nowiki></code> will be transformed into <code><nowiki>the [[word#English|word]]</nowiki></code> and <code><nowiki>these [[word|words]]</nowiki></code> will be transformed into <code><nowiki>these [[word#English|words]]</nowiki></code>, if the language code supplied to the template is <code>en</code>.
The annotations – transliteration, translation, literal translation{{,}} and part of speech – are displayed by {{temp|l}}, {{temp|m}}, {{temp|l-self}}{{,}} or {{temp|m-self}} in parentheses after the link. {{temp|ll}} does not support any of these annotations.
See also [[Wiktionary:Style guide#Styling templates]] for a list of all the various styling templates with examples.
This template uses [[Module:links]] as a back-end, so it supports all the features and bugs of that module. Please see its documentation for more details.
==Parameters==
The template takes one required positional parameter and several optional parameters. Note that either the second or third positional parameter should be given, although technically neither is required.
; {{para|1|req=1}}
: The language code (see [[Wiktionary:Languages]]) for the language that the term is in. All Wiktionary language codes are supported, including those for constructed and reconstructed languages.
; {{para|2|opt=1}}
: The page name to be linked to. The template will automatically remove diacritics and punctuation from the page title, according to the <code>entry_name</code> setting in [[Module:languages]], but will keep them in the displayed text.
:* Add {{cd|:}} in front of a page name to link to the page as-is, without any diacritic stripping.
:* To link to a reconstructed term, such as {{m+|gem-pro|*dagaz}}, add {{cd|*}} in front of the term. This automatically converts the link to be in the {{cd|Reconstruction}} namespace.
:* To link to a mainspace term in a reconstructed language (i.e. a language that is unattested or mostly unattested and which is normally required to put its lemmas in the {{cd|Reconstruction}} namespace), add {{cd|!!}} in front of the term. An example of such a term is {{m+|gmw-pro|!!ᚲᚨᛒᚨ|tr=kaba|ts=kamba}}, which should be linked as {{tl|l|gmw-pro|!!ᚲᚨᛒᚨ|tr=kaba|ts=kamba}} or similar. (Proto-West Germanic is a reconstructed language with a single attested term written in Runic script, normally used for the related Proto-Norse language.)
:* For scripts which do not use capitalisation (e.g. Devanagari, Han, Mongolian, etc.), a letter of an automatic transliteration can be capitalised by putting {{cd|^}} before the corresponding character in the term. For example, {{tl|l|zh|^西方}} gives {{l|zh|^西方}}. Please note that this should be used instead of giving a capitalised manual transliteration.
:* Unsupported titles (see [[Special:PrefixIndex/Unsupported titles]]) can be linked to, by adding the displayed title, without the <code>Unsupported titles/</code> prefix: for instance, {{temp|m|mul|:}} → {{m|mul|:}} links to [[Unsupported titles/Colon]]. This feature is made possible by the list found at [[Module:links/data]]. To add new unsupported titles, follow the directions in the module.
; {{para|3|opt=1}}
: Alternative text to display as the link title, if different from the page name. Please do not use this only for adding diacritics or punctuation to the word, as the template can automatically remove these. See above.
; {{para|t}} or {{para|4|opt=1}}
: A gloss or short translation of the word. <small>The parameter {{para|gloss}} is deprecated for this purpose.</small>
; {{para|sc|opt=1}}
: The script code (see [[Wiktionary:Scripts]]) for the script that the term is written in. When no code is given, the template will try to detect the script based on the characters in the term and the scripts in the language's data table (see {{section link|Module:languages#Language:findBestScript}}). In most cases, it will succeed. If it fails, the code <code>None</code> will be used.
; {{para|tr|opt=1}}
: Transliteration for non-Latin-script words. When no transliteration is given, the template will try to add a default transliteration when possible. For certain languages, automated transliteration will override the value of this parameter. Use <code>tr=-</code> if you don't want a transliteration to be automatically generated (you shouldn't really ever do this in an entry).
; {{para|ts|opt=1}}
: Transcription for non-Latin-script words whose transliteration is markedly different from the actual pronunciation. Should not be used for IPA pronunciations.
; {{para|pos|opt=1}}
: A part of speech indication for the term.
:* If the value is one of the abbreviations listed in [[Template:head#Part of speech]] (such as {{cd|a}} or {{cd|adj}} for ''adjective'', {{cd|n}} for ''noun'', {{cd|prepphr}} for ''prepositional phrase'', etc.), it will be displayed in the expanded (canonical) form.
:* If the value is those same abbreviations followed by an {{cd|f}} (e.g. {{cd|af}} or {{cd|adjf}} for ''adjective form'', or {{cd|nf}} for ''noun form''), it will be displayed in the expanded (canonical) form followed by the word ''form''.
:* If the value is a spelled-out part of speech followed by an {{cd|f}} (e.g. {{cd|nounf}} for ''noun form'', {{cd|verbf}} for ''verb form'' or {{cd|proper nounf}} for ''proper noun form''), it will be displayed as the part of speech followed by the word ''form''. This only happens for recognized lemma parts of speech (specifically the singular equivalents of the plural lemma parts of speech listed in {{lua|data.lemmas}} in [[Module:headword/data]]), not for arbitrary words ending in {{cd|f}}.
:* Anything else is displayed as-is.
; {{para|ng|opt=1}}
: Arbitrary non-gloss explanatory text. This is displayed as-is, in upright text, not inside of quotes. It is recommended to use this in preference to {{para|pos}} for any sort of explanatory text other than a grammatical description.
; {{para|g|opt=1}}
: Gender/number specification(s) for the term, if necessary. Separate multiple specifications with a comma (with no space following). You can use inline modifiers {{cd|<l:...>}}, {{cd|<ll:...>}}, {{cd|<q:...>}}, {{cd|<qq:...>}} or {{cd|<ref:...>}} to add labels, qualifiers and/or references to individual gender-number specifications. See examples below, and see [[Module:gender and number]] for the format used. <small>Alternatively, additional gender/number specs can be given in {{para|g2}}, {{para|g3}}, etc., but this is deprecated.</small>
; {{para|lit|opt=1}}
: A literal translation for the term.
; {{para|id|opt=1}}
: An etymology or sense id for the term, which links to anchors on the page set by the {{temp|etymid}} or {{temp|senseid}} templates.
; {{para|accel-form|opt=1}}
: Specifies an accelerated creation tag to be used by the [[WT:ACCEL]] gadget, to automatically generate an entry for a non-lemma form when the link is clicked. For information about acceleration tags, see [[WT:ACCEL#Acceleration tags]]. You should only provide this parameter when using the linking template as part of a headword-line or inflection-table template. Don't use it directly in entries. If the acceleration tag contains a vertical bar <code><nowiki>|</nowiki></code>, use {{temp|!}} instead.
; {{para|accel-translit|opt=1}}
: Specifies a manual transliteration of the non-lemma form for use with accelerated creation of entries; see [[WT:ACCEL]] and {{para|accel-form}} above. The value of this parameter goes into param {{para|tr}} of the call to {{temp|head}} in the accelerated entry. You only need to specify this for languages that use a non-Latin script, and only when the auto-generated transliteration is insufficient, incorrect or nonexistent.
; {{para|accel-lemma|opt=1}}
: Specifies the lemma corresponding to the non-lemma form for use with accelerated creation of entries; see [[WT:ACCEL]] and {{para|accel-form}} above. The value of this parameter goes into param {{para|2}} of the call to {{temp|inflection of}} in the accelerated entry. It defaults to the name of the current page, and only needs to be specified when the lemma contains additional diacritics that are stripped in order to generate the pagename (as in Latin, Russian, Ancient Greek, Old English, etc.).
; {{para|accel-lemma-translit|opt=1}}
: Specifies a manual transliteration of the lemma corresponding to the non-lemma form for use with accelerated creation of entries; see [[WT:ACCEL]] and {{para|accel-form}} above. The value of this parameter goes into param {{para|tr}} of the call to {{temp|inflection of}} in the accelerated entry. You only need to specify this for languages that use a non-Latin script, and only when the auto-generated transliteration is insufficient, incorrect or nonexistent.
; {{para|accel-gender|opt=1}}
: Specifies the gender of the non-lemma form for use with accelerated creation of entries; see [[WT:ACCEL]] and {{para|accel-form}} above. The value of this parameter goes into param {{para|g}} of the call to {{temp|head}} in the accelerated entry. You should only rarely specify this.
; {{para|accel-nostore|1}}
: For use with accelerated creation of entries. Place this on links that appear in the collapsed state of collapsible tables; see [[WT:ACCEL]].
==Examples==
{|class="wikitable"
! Wikitext !! Output !! Comment
|-
| {{demo2c|<nowiki>{{l|cs|háček}}</nowiki>}}
| Simple example.
|-
| {{demo2c|<nowiki>{{l|en|go|went}}</nowiki>}}
| Showing alternative text; links to [[go]].
|-
| {{demo2c|<nowiki>{{l|en|[[God]] be [[with]] [[you]]}}</nowiki>}}
| With wikilinks in input; links individual words [[God]], [[with]] and [[you]].
|-
| {{demo2c|<nowiki>{{l|la|exemplī grātiā}}</nowiki>}}
| Removal of diacritics; links to {{l|la|exempli gratia}}.
|-
| {{demo2c|<nowiki>{{l|ine-pro|*bʰréh₂tēr}}</nowiki>}}
| Reconstructed words; links to [[Reconstruction:Proto-Indo-European/bʰréh₂tēr]].
|-
| {{demo2c|<nowiki>{{l|la|similis|t=like}}</nowiki>|fmt=0}} ''or'' {{demo2c|<nowiki>{{l|la|similis||like}}</nowiki>}}
| Translation.
|-
| {{demo2c|<nowiki>{{l|ru|ру́сский||Russian|g=m}}</nowiki>}}
| Miscellaneous / with many options.
|-
| {{demo2c|<nowiki>{{l|ca|amor|g=m,f<l:<<archaic>> or <<poetic>>>}}</nowiki>}}
| Multiple genders with inline modifier label modifying the second gender.
|-
| {{demo2c|<nowiki>{{l-self|ang|{{{dat_pl_f}}}|accel-form=dat{{!}}f{{!}}p|accel-lemma={{{nom_sg_m}}}}}</nowiki>}}
| Use of accelerators (in an inflection-table entry).
|}
==Wikicode==
{{temp|l}}, {{temp|m}}, {{temp|l-self}}{{,}} or {{temp|m-self}} all add HTML tags in addition to creating a link. {{temp|l|en|word}} outputs the wikicode {{code|html|2=<span class="Latn" lang="en">[[word#English|word]]</span>}}, and {{temp|m|en|word}} outputs {{code|html|2=<i class="Latn mention" lang="en">[[word#English|word]]</i>}}. {{temp|l-self}} and {{temp|m-self}} do the same, except they don't create a link if the page being linked to is the same as the current page. This HTML is applied by [[Module:script utilities]]; for more, see [[Module:script utilities/documentation#tag text]].
==Customization==
The outcome of [[Wiktionary:Votes/2007-10/style for mentioned terms]] determined the default style for terms mentioned with the {{temp|mention}}/{{temp|m}} template. The preliminary default for Latin-script (i.e. Roman script, not just Latin-language) terms and phrases is italics. Readers can easily toggle the output from italics to bold by selecting “'''Show other Latin (Roman) script mentions in bold'''” from [[WT:PREFS]]. Alternatively, or for more advanced customization, readers can add styles to their style sheets as described in [[WT:CUSTOM]]:
*For plain format (e.g.: From <span style='font-style:normal'>[[mot#French|mot]]</span> + ...):
*: <code>.mention-Latn { font-style: normal }</code>
* For bold format (e.g.: From <span style='font-weight:bold'>[[mot#French|mot]]</span> + ...):
*: <code>.mention-Latn { font-weight: bold; font-style: normal }</code>
* For italicized format (e.g.: From <span style='font-style:italic'>[[mot#French|mot]]</span> + ...):
*: <code>.mention-Latn { font-style: italic }</code>
Further, the default style of the subsequent English translation glosses is in double quotes (pending a vote to approve this template). Readers can easily change the output to single quotes by selecting “'''Show English glosses for mentioned terms in single quotes'''” from [[WT:PREFS]].
==See also==
* {{temp|m+}} – to create a link like {{temp|m}} but with the language name
* {{temp|user}} – for mentioning ''users''
* {{temp|mention-gloss}} ({{temp|m-g}}) – to create quotation marks (for glosses or translations) that are formatted with the same HTML code as used by {{temp|link}} or {{temp|mention}}
* {{temp|zh-l}} – a similar template specialized for Chinese
* {{temp|ltc-l}} – a similar template specialized for Middle Chinese
* {{temp|ja-l}} – a similar template specialized for Japanese
* {{temp|ko-l}} – a similar template specialized for Korean
* {{temp|fa-l}} – a similar template specialized for Persian
* {{temp|th-l}} – a similar template specialized for Thai
* {{temp|vi-l}} – a similar template specialized for Vietnamese
* {{temp|section link}} – to link to a section of a page
==Language-specific subtemplates==
There are high performance versions of this template for several languages. All of them take two parameters: the word and the alternative text. Some may support transliteration also, but they should not support any other parameters for speed reasons. Using any of these subtemplates is sometimes necessary for pages that have many links, since they are faster. For normal use, there is no need for this, and the regular {{temp|l}} should be used instead.
{{Special:PrefixIndex/{{#titleparts:Template:l|1|1}}/}}
{{Special:PrefixIndex/{{#titleparts:{{FULLPAGENAME}}|1|1}}/}}
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "language code",
"description": "The language code (see Wiktionary:Languages) for the language that the term is in. All languages are supported, including constructed and reconstructed ones.",
"type": "string",
"required": true,
"example": "en"
},
"2": {
"type": "wiki-page-name",
"label": "entry to link",
"description": "The page name to be linked to",
"example": "house",
"required": true
},
"3": {
"label": "displayed text",
"description": "Alternative text to display as the link title, if different from the page name",
"type": "string",
"suggested": true
},
"4": {
"aliases": [
"t",
"gloss"
],
"label": "gloss",
"description": "A gloss or short translation of the term",
"type": "string",
"suggested": true
},
"lit": {
"label": "literal translation",
"description": "A literal translation of the term",
"type": "string"
},
"id": {
"label": "sense ID",
"description": "A sense ID for the term, which links to anchors on the page set by the {{senseid}} template.",
"type": "string",
"example": "Q20502"
},
"sc": {
"label": "script code",
"description": "(optional) The script code (see [[Wiktionary:Scripts]]) for the script that the term is written in. The template can usually figure this out itself, so this is rarely needed. When no code is given, the template will try to detect the script based on the characters of the word, and if it fails to detect the script, the code <code>None</code> will be used.",
"type": "string",
"example": "Latn"
},
"pos": {
"label": "part of speech",
"description": "A part of speech indication for the term",
"type": "string",
"example": "noun",
"suggested": true
},
"tr": {
"label": "transliteration",
"description": "Transliteration for non-Latin-script words. When no transliteration is given, the template will try to add a default transliteration when possible. For certain languages, automated transliteration will override the value of this parameter. Use <code>tr=-</code> if you don't want a transliteration to be automatically generated (you shouldn't really ever do this in an entry).",
"type": "string",
"suggested": true
},
"g": {
"label": "gender and number",
"description": "Gender and number; see [[Module:gender and number]] for details.",
"type": "string"
}
},
"description": "This template generates a link to an entry in a given language. It links to a specific language-section on the target page, and applies language-specific formatting. It can also show a number of annotations after the linked term.",
"format": "inline"
}
</templatedata>
<includeonly>
[[ကဏ္ဍ:ထာမ်ပလိက်မနွံဒၟံၚ်အပ္ဍဲလေန်ဂမၠိုၚ်|l]]
</includeonly>
4ggmdtf67jx8mshz0oj7pm0spgxt0dr
Unsupported titles/:
0
295819
396653
2026-06-08T17:01:50Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|꞉|ː|ꓽ|׃|։|⁚|∶|uni=auto}} {{character info|:}} {{character info/var|﹕|:|︓}} ==မအရေဝ်ပံၚ်ကောံ== ===သၚ်္ကေတ=== {{mul-symbol}} # အပိုၚ်အခြာ။"
396653
wikitext
text/x-wiki
{{also|꞉|ː|ꓽ|׃|։|⁚|∶|uni=auto}}
{{character info|:}}
{{character info/var|﹕|:|︓}}
==မအရေဝ်ပံၚ်ကောံ==
===သၚ်္ကေတ===
{{mul-symbol}}
# အပိုၚ်အခြာ။
c8p8n74nxfru8xj1ucabbn8pf3qabvd
396654
396653
2026-06-08T17:02:23Z
咽頭べさ
33
咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[Unsupported titles/Colon]] ဇရေင် [[Unsupported titles/:]]
396653
wikitext
text/x-wiki
{{also|꞉|ː|ꓽ|׃|։|⁚|∶|uni=auto}}
{{character info|:}}
{{character info/var|﹕|:|︓}}
==မအရေဝ်ပံၚ်ကောံ==
===သၚ်္ကေတ===
{{mul-symbol}}
# အပိုၚ်အခြာ။
c8p8n74nxfru8xj1ucabbn8pf3qabvd
Unsupported titles/Colon
0
295820
396655
2026-06-08T17:02:24Z
咽頭べさ
33
咽頭べさ ပြံင်ပဆုဲလဝ် မုက်လိက် [[Unsupported titles/Colon]] ဇရေင် [[Unsupported titles/:]]
396655
wikitext
text/x-wiki
#REDIRECT [[Unsupported titles/:]]
3y7bwl9ommvwln4c2uxjshlii7thew6
⁚
0
295821
396656
2026-06-08T17:18:41Z
咽頭べさ
33
ခၞံကၠောန်လဝ် မုက်လိက် နကု "{{also|:|׃|꞉|ː|։|∶|uni=auto}} {{character info}} ==မအရေဝ်ပံၚ်ကောံ== ===သၚ်္ကေတ=== {{mul-symbol}} # ပွမစၞောန်ထ္ၜး။"
396656
wikitext
text/x-wiki
{{also|:|׃|꞉|ː|։|∶|uni=auto}}
{{character info}}
==မအရေဝ်ပံၚ်ကောံ==
===သၚ်္ကေတ===
{{mul-symbol}}
# ပွမစၞောန်ထ္ၜး။
awfn0k6d3ivfiasko824885zr367wo6