Wiktionary
gdwiktionary
https://gd.wiktionary.org/wiki/Pr%C3%AComh-Dhuilleag
MediaWiki 1.47.0-wmf.13
case-sensitive
Meadhan
Sònraichte
Deasbaireachd
Cleachdaiche
Deasbaireachd a' chleachdaiche
Wiktionary
An deasbaireachd aig Wiktionary
Faidhle
Deasbaireachd an fhaidhle
MediaWiki
Deasbaireachd MediaWiki
Teamplaid
Deasbaireachd na teamplaid
Cobhair
Deasbaireachd na cobharach
Roinn-seòrsa
Deasbaireachd na roinn-seòrsa
TimedText
TimedText talk
Mòideal
Deasbaireachd mòideil
Event
Event talk
Cleachdaiche:Revi C.
2
2970
88710
85565
2026-08-02T00:06:33Z
Pathoschild
38
global user pages ([[m:Synchbot|requested by Revi C.]])
88710
wikitext
text/x-wiki
__NOINDEX__<div class="mw-content-ltr" lang="en" dir="ltr">{{#babel:ko|en-3|gd-0}} [[File:Revi wikimedia image.jpg|thumb|center|middle|If you are here to talk about CommonsDelinker removing a deleted image, please [[:c:User talk:Revi C.|go here]].]]
Hello! I am [[:m:User:Revi C.|revi]]. I edit to [[m:SWMT|revert vandals]], do Wikidata stuff<!--(I am a Wikidata Admin! <small>([{{fullurl:wikidata:Special:ListUsers/Revi C.|limit=1}} Verify])</small>)-->, or do [[:c:COM:FR|Commons Filemoving stuff]] (I am Commons Admin too! <small>([{{fullurl:c:Special:ListUsers/Revi C.|limit=1}} Verify])</small>). Come to [[:m:User:Revi C.|my Meta userpage]] or [[:c:User:Revi C.|my Commons userpage]] for more information. Thank you.</div>
mmfvxa20z9blwi3kcgmrs0pi1w3ggdl
Deasbaireachd a' chleachdaiche:Revi C.
3
2971
88708
85566
2026-08-01T23:24:51Z
Pathoschild
38
global user pages ([[m:Synchbot|requested by Revi C.]])
88708
wikitext
text/x-wiki
__NOINDEX__<div class="mw-content-ltr" lang="en" dir="ltr">[[File:Revi logo (pink).png|thumb|center|<span style="color:red">PLEASE DO NOT LEAVE MESSAGE HERE!</span>]]
''' <span style="color:red"> BEFORE YOU BLOCK MY ACCOUNT: IF MY EDIT SUMMARY INCLUDE PREFIX </span>''(Script)''<span style="color:red">, DON'T BLOCK ME, JUST TELL ME TO SLOW DOWN AT COMMONS' TALK PAGE. IT IS AN AUTOMATED SCRIPT BEING USED ON COMMONS TO MOVE FILES.</span>
Instead, please leave your message following site:
<br />
[[File:Wikidata-logo-en.svg|45px|link=d:User talk:Revi C.]] [[d:User talk:Revi C.]] for Wikidata (Interwiki links) stuff <!--(I am {{int:Group-sysop}} there)-->
<br />
[[File:Commons-logo.svg|45px|link=commons:User talk:Revi C.]] [[commons:User talk:Revi C.]] for renaming stuff or [[User:CommonsDelinker|CommonsDelinker]] action (I am {{int:Group-sysop}} there)
<br />
[[File:Wikimedia Community Logo optimized.svg|45px|link=m:User talk:Revi C.]] [[meta:User talk:Revi C.]] for other stuff (User right notification, revert message, etc...)
Messages left on this page may be reverted or moved without any response.</div>
esxe13mcstpjlux1bt2hqwxr2v8t8mn
Mòideal:usex
828
16637
88709
88468
2026-08-01T23:36:34Z
Altronic
4137
change more text
88709
Scribunto
text/plain
local export = {}
local debug_track_module = "Module:debug/track"
local links_module = "Module:links"
local scripts_module = "Module:scripts"
local script_utilities_module = "Module:script utilities"
local string_utilities_module = "Module:string utilities"
local usex_data_module = "Module:usex/data"
local m_str_utils = require(string_utilities_module)
local rsubn = m_str_utils.gsub
local rsplit = m_str_utils.split
local rfind = m_str_utils.find
local uupper = m_str_utils.upper
local ulen = m_str_utils.len
local u = m_str_utils.char
local translit_data = mw.loadData("Module:transliteration/data")
local needs_translit = translit_data[1]
local BRACKET_SUB = u(0xFFF0)
local original_text = "<small>''teacsa tùsail:''</small> "
-- 100 more or less corresponds to the setting of 30 for the example text alone as formerly used in
-- {{hi-x}} and {{ur-x}}, taking into account transliteration, gloss and formatting characters.
-- FIXME: We should have different widths for desktop vs. mobile and generate the appropriate CSS so
-- both are handled correctly.
local MAX_INLINE_WIDTH = 100 -- In characters. HACK! FIXME! Do this a better way.
-- List of scripts whose characters are double-width/full-width.
local double_width_scripts = {"Hani", "Hrkt", "Hang"}
-- microformat2 classes, see https://phabricator.wikimedia.org/T138709
local css_classes = {
container_ux = 'h-usage-example',
container_quotation = 'h-quotation',
example = 'e-example',
quotation = 'e-quotation',
quotation_with_citation = 'e-quotation cited-passage',
translation = 'e-translation',
-- The following are added by [[Module:script utilities]], using [[Module:script utilities/data]]
-- transliteration = 'e-transliteration',
-- transcription = 'e-transcription',
normalization = 'e-normalization',
literally = 'e-literally',
qualifier = 'e-qualifier',
source = 'e-source',
footer = 'e-footer'
}
-- helper functions
local function track(page, code)
local tracking_page = "usex/" .. page
local debug_track = require(debug_track_module)
debug_track(tracking_page)
if code then
debug_track(tracking_page .. "/" .. code)
end
return true
end
-- 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
local function wrap(tag, class, text, lang)
if lang then
lang = ' lang="' .. lang .. '"'
else
lang = ""
end
if text and class then
return table.concat{'<', tag, ' class="', class, '"', lang, '>', text, '</', tag, '>'}
else
return nil
end
end
local function span(class, text) return wrap('span', class, text) end
local function div(class, text) return wrap('div', class, text) end
-- Remove any HTML from the formatted text and resolve links, since the extra characters don't contribute to the
-- displayed length.
local function convert_to_raw_text(text)
text = rsub(text, "<.->", "")
if text:find("%[%[") then
text = require(links_module).remove_links(text)
end
return text
end
local function get_character_width(text)
local charsets = {}
for _, script in ipairs(double_width_scripts) do
table.insert(charsets, require(scripts_module).getByCode(script):getCharacters())
end
local single_width_chars = ulen(rsub(text, "[" .. table.concat(charsets) .. "]", ""))
local total_chars = ulen(text)
local double_width_chars = total_chars - single_width_chars
return single_width_chars + 2 * double_width_chars
end
--[==[
Apply the substitutions in `subst` (from the {{para|subst}} parameter or similar) to the example or quotation in
`usex` after removing links, returning the resulting text. `track`, if supplied, is a function of one argument that is
used to insert tracking categories: one for any call to this function, another if a single / is used in the `subst`
argument.
]==]
function export.apply_subst(usex, subst, track)
local subbed_usex = require(links_module).remove_links(usex)
local function do_track(page)
if track then
track(page)
end
return true
end
if subst then
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/subst]]
do_track("subst")
subst = rsplit(subst, ",")
for _, subpair in ipairs(subst) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/subst-single-slash]]
local subsplit = rsplit(subpair, rfind(subpair, "//") and "//" or do_track("subst-single-slash") and "/")
subbed_usex = rsub(subbed_usex, subsplit[1], subsplit[2])
end
end
return subbed_usex
end
--[=[
Process parameters for usex text (either the primary text or the original text) and associated annotations. On input,
the following fields are recognized in `data` (all are optional except as marked):
* `lang`: Language object of text; may be an etymology language (REQUIRED).
* `termlang`: The language object of the term being illustrated, which may be different from the language of the main
quotation text and should always be based off of the main text, not the original text. Used for
categories. May be an etymology language (REQUIRED).
* `usex`: Text of usex/quotation.
* `sc`: Script object of text.
* `tr`: Manual transliteration.
* `ts`: Transcription.
* `norm`: Normalized version of text.
* `normsc`: Script object of normalized version of text, or "auto".
* `subst`: String of substitutions for transliteration purposes.
* `quote`: If non-nil, this is a quotation (using {{tl|quote}} or {{tl|quote-*}}) instead of a usage example (using
{{tl|usex}}). If it has the specific value "quote-meta", this is a quotation with citation (invoked from
{{tl|quote-*}}). This controls the CSS class used to display the quotation, as well as the face used to tag the usex
(which in turn results in the usex being upright text if a quotation, and italic text if a usage example).
* `title`: Title object of the current page (REQUIRED).
* `q`: List of left qualifiers.
* `qq`: List of right qualifiers.
* `ref`: String to display directly after any right qualifier, with no space. (FIXME: Should be converted into
an actual ref.)
* `nocat`: Overall `data.nocat` value.
* `categories`: List to insert categories into (REQUIRED).
* `example_type`: Either "quotation" (if `quote` specified) or "usage example" (otherwise) (REQUIRED).
On output, return an object with four fields:
* `usex`: Formatted usex, including qualifiers attached to both sides and `ref` attached to the right. Always specified.
* `tr`: Formatted transliteration; may be nil.
* `ts`: Formatted transcription; may be nil.
* `norm`: Formatted normalized version of usex; may be nil.
]=]
local function process_usex_text(data)
local lang = data.lang
local termlang = data.termlang
local usex = data.usex
local sc = data.sc
local sc_explicit = sc
local tr = data.tr
local ts = data.ts
local norm = data.norm
local normsc = data.normsc
local subst = data.subst
local quote = data.quote
local leftq = data.q
local rightq = data.qq
local ref = data.ref
local nocat = data.nocat
local categories = data.categories
local example_type = data.example_type
local title = data.title
if normsc == "auto" then
normsc = nil
elseif not normsc then
normsc = sc
end
if not sc then
sc = lang:findBestScript(usex)
end
if not normsc and norm then
normsc = lang:findBestScript(norm)
end
local langcode = lang:getFullCode()
-- tr=- means omit transliteration altogether
if tr == "-" then
tr = nil
else
-- Try to auto-transliterate.
if tr then
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/manual-tr]]
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/manual-tr/LANGCODE]]
track("manual-tr", langcode)
else
-- First, try transliterating the normalization, if supplied.
if norm and normsc then
local normsc_code = normsc:getCode()
if normsc_code ~= "None" and not normsc_code:find("Lat") then -- Latn, Latf, Latg, pjt-Latn
local subbed_norm = export.apply_subst(norm, subst, track)
tr = lang:transliterate(subbed_norm, normsc)
end
end
-- If no normalization, or the normalization is in a Latin script, or the transliteration of the
-- normalization failed, fall back to transliterating the usex.
if not tr and usex then
local subbed_usex = export.apply_subst(usex, subst, track)
tr = lang:transliterate(subbed_usex, sc)
end
-- If the language doesn't have capitalization and is specified in [[Module:usex/data]], then capitalize any sentences.
-- Exclamation marks and question marks need to be unescaped then re-escaped.
if tr and mw.loadData(usex_data_module).capitalize_sentences[langcode] then
tr = tr:gsub("!", "!")
:gsub("?", "?")
tr = rsub(tr, "%f[^%z%p%s](.)(.-[%.%?!‽])", function(m1, m2)
return uupper(m1) .. m2
end)
tr = tr:gsub("!", "!")
:gsub("%?", "?")
end
end
-- If there is still no transliteration, then add a cleanup category.
if not tr and needs_translit[langcode] then
local sccode = sc:getCode()
if sccode ~= "None" and not sccode:find("Lat") then
table.insert(categories, ("Requests for transliteration of %s %ss"):format(lang:getCanonicalName(),
example_type))
end
end
end
if tr and norm then
track("tr-and-norm")
end
if tr then
tr = require(script_utilities_module).tag_translit(tr, langcode, "usex")
end
if ts then
ts = require(script_utilities_module).tag_transcription(ts, langcode, "usex")
ts = "/" .. ts .. "/"
end
local function do_language_and_script_tagging(usex, lang, sc, css_class)
usex = require(links_module).embedded_language_links{term = usex, lang = lang, sc = sc}
local face
if quote then
face = nil
else
face = "term"
end
usex = require(script_utilities_module).tag_text(usex, lang, sc, face, css_class)
return usex
end
if usex then
usex = do_language_and_script_tagging(usex, lang, sc,
quote == "quote-meta" and css_classes.quotation_with_citation or
quote and css_classes.quotation or css_classes.example)
if not nocat then
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
-- Here we don't want to use the subpage text because we check [[Citations:foo]] against [[foo]] and
-- if there's a slash in what follows 'Citations:', we want to check against the full page with the
-- slash.
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
-- Categories beginning with the language name should use full languages as that's what the poscat
-- system requires, but 'Requests for' categories can use etymology-only languages.
table.insert(categories, ("%s terms with %ss"):format(termlang:getFullName(), example_type))
end
end
else
if tr then
table.insert(categories, ("Requests for %s in %s %ss"):format(
sc_explicit and sc_explicit:getDisplayForm() or "native script",
lang:getCanonicalName(), example_type))
end
-- TODO: Trigger some kind of error here
usex = "<small>(please add the primary text of this " .. example_type .. ")</small>"
end
if norm then
-- Use brackets in HTML entity format just to make sure we don't interfere with links; add brackets before
-- script tagging so that if the script tagging increases the font size, the brackets get increased too.
norm = "[" .. norm .. "]"
norm = do_language_and_script_tagging(norm, lang, normsc, css_classes.normalization)
end
local result = {}
if leftq and #leftq > 0 then
table.insert(result, span(css_classes.qualifier, require("Module:qualifier").format_qualifier(leftq)) .. " ")
end
table.insert(result, usex)
if rightq and #rightq > 0 then
table.insert(result, " " .. span(css_classes.qualifier, require("Module:qualifier").format_qualifier(rightq)))
end
if ref and ref ~= "" then
track("ref")
table.insert(result, ref)
end
return {
usex = table.concat(result),
tr = tr,
ts = ts,
norm = norm
}
end
local function format_audio(audio)
if audio then
return " [[File:" .. audio .. "|25px]]"
else
return ""
end
end
--[==[
Format a usex or quotation. Implementation of {{tl|ux}}, {{tl|quote}} and {{tl|quote-*}} templates (e.g.
{{tl|quote-book}}, {{tl|quote-journal}}, {{tl|quote-web}}, etc.). FIXME: Should also be used by {{tl|Q}} and
[[Module:Quotations]].
Takes a single object `data`, containining the following fields:
* `usex`: The text of the usex or quotation to format. Semi-mandatory (a maintenance line is displayed if missing).
* `lang`: The language object of the text. Mandatory. May be an etymology language.
* `termlang`: The language object of the term, which may be different from the language of the text. Defaults to `lang`.
Used for categories. May be an etymology language.
* `sc`: The script object of the text. Autodetected if not given.
* `quote`: If specified, this is a quotation rather than a usex (uses a different CSS class that affects formatting).
* `inline`: If specified, format the usex or quotation inline (on one line).
* `translation`: Translation of the usex or quotation, if in a foreign language.
* `lit`: Literal translation (if the translation in `translation` is idiomatic and differs significantly from the
literal translation).
* `normalization`: Normalized version of the usex or quotation (esp. for older languages where nonstandard spellings
were common).
* `normsc`: Script object of the normalized text. If unspecified, use the script object given in `sc` if any, otherwise
do script detection on the normalized text. If "auto", do script detection on the normalized text even if
a script was specified in `sc`.
* `transliteration`: Transliteration of the usex. If unspecified, transliterate the normalization if specified and not
in a Latin script and transliterable, otherwise fall back to transliterating the usex text.
* `transcription`: Transcription of the usex, for languages where the transliteration differs significantly from the
pronunciation.
* `subst`: String indicating substitutions to perform on the usex/quotation and normalization prior to transliterating
them. Multiple substs are comma-separated and individual substs are of the form FROM//TO where FROM is a
Lua pattern and TO is a Lua replacement spec. (FROM/TO is also recognized if no // is present in the
substitution.)
* `q`: If specified, a list of left qualifiers to display before the usex/quotation text.
* `qq`: If specified, a list of right qualifiers to display after the usex/quotation text.
* `qualifiers`: If specified, a list of right qualifiers to display after the usex/quotation text, for compatibility
purposes.
* `ref`: Reference text to display directly after the right qualifiers. (FIXME: Instead, this should be actual
references.)
* `audio`: Name of the audio file containing the usex in spoken form.
* `orig`: Original text, if the primary text of the usex or quotation is a translation.
* `origlang`: The language object of the original text. Mandatory if original text given. May be an etymology language.
* `origsc`: The script object of the original text. Autodetected if not given.
* `orignorm`: Normalized version of the original text (esp. for older languages where nonstandard spellings were
common).
* `orignormsc`: Script object of the normalized original text. If unspecified, use the script object given in `origsc`
if any, otherwise do script detection on the normalized original text. If "auto", do script detection
on the normalized text even if a script was specified in `origsc`.
* `origtr`: Transliteration of the original text. If unspecified, transliterate the normalized original text if
specified and not in a Latin script and transliterable, otherwise fall back to transliterating the original
text.
* `origts`: Transcription of the original text, for languages where the transliteration differs significantly from the
pronunciation.
* `origsubst`: String indicating substitutions to perform on the original text and normalization thereof prior to
transliterating them. Multiple substs are comma-separated and individual substs are of the form FROM//TO
where FROM is a Lua pattern and TO is a Lua replacement spec. (FROM/TO is also recognized if no // is
present in the substitution.)
* `origq`: If specified, a list of left qualifiers to display before the original text.
* `origqq`: If specified, a list of right qualifiers to display after the original text.
* `origref`: Reference text to display directly after the right qualifiers of the original text. (FIXME: Instead, this
should be actual references.)
* `source`: Source of the quotation, displayed in parens after the quotation text.
* `footer`: Footer displaying miscellaneous information, shown after the quotation. (Typically this should be in a
small font.)
* `nocat`: Suppress categorization.
* `noreq`: Suppress request for translation when no translation provided.
* `sortkey`: Sort key for categories.
* `brackets`: If specified, show a bracket at the end (used with brackets= in {{tl|quote-*}} templates, which show the
bracket at the beginning, to indicate a mention rather than a use).
* `class`: Additional CSS class surrounding the entire formatted text.
]==]
function export.format_usex(data)
local lang = data.lang
local termlang = data.termlang or lang
local translation = data.translation
local quote = data.quote
local lit = data.lit
local audio = data.audio
local source = data.source
local brackets = data.brackets
local footer = data.footer
local sortkey = data.sortkey
local noreq = data.noreq
local title
if data.pagename then -- for testing, doc pages, etc.
title = mw.title.new(data.pagename)
if not title then
error(("Bad value for `data.pagename`: '%s'"):format(data.pagename))
end
else
title = mw.title.getCurrentTitle()
end
--[[
if title.nsText == "Reconstruction" or lang:hasType("reconstructed") then
error("Reconstructed languages and reconstructed terms cannot have usage examples, as we have no record of their use.")
end
]]
if lit then
lit = "(facal air an fhacal, “" .. span(css_classes.literally, lit) .. "”)"
end
if source then
source = "(" .. span(css_classes.source, source) .. ")"
end
if footer then
footer = span(css_classes.footer, footer)
end
local example_type = quote and "quotation" or "usage example" -- used in error messages and categories
local categories = {}
local usex_obj = process_usex_text {
lang = lang,
termlang = termlang,
usex = data.usex,
sc = data.sc,
tr = data.transliteration,
ts = data.transcription,
norm = data.normalization,
normsc = data.normsc,
subst = data.subst,
quote = data.quote,
title = title,
q = data.q,
qq = data.qq,
ref = data.ref,
nocat = data.nocat,
categories = categories,
example_type = example_type,
}
local orig_obj = data.orig and process_usex_text {
lang = data.origlang,
-- Any categories derived from the original text should use the language of the main text or the term inside it,
-- not the language of the original text.
termlang = termlang,
usex = data.orig,
sc = data.origsc,
tr = data.origtr,
ts = data.origts,
norm = data.orignorm,
normsc = data.orignormsc,
subst = data.origsubst,
quote = data.quote,
title = title,
q = data.origq,
qq = data.origqq,
ref = data.origref,
nocat = data.nocat,
categories = categories,
example_type = example_type,
} or nil
if translation == "-" then
translation = nil
table.insert(categories, ("%ss ann an %s gun eadar-theangachadh"):format(lang:getFullName(),
example_type))
elseif translation then
translation = span(css_classes.translation, translation)
elseif not noreq then
local langcode = lang:getFullCode()
local origlangcode = data.origlang and data.origlang:getFullCode()
if langcode ~= "gd" and langcode ~= "mul" and langcode ~= "und" and origlangcode ~= "gd" then
-- add trreq category if translation is unspecified and language is not english, translingual or
-- undetermined
table.insert(categories, ("Iarraidhean na h-eadar-theangachaidh dhen %s ann an %ss"):format(lang:getCanonicalName(),
example_type))
if quote then
translation = "<small>([[WT:Quotations#Adding translations to quotations|cuir eadar-theangachadh]] dhen"
.. example_type .. " seo ris)</small>"
else
translation = "<small>(cuir eadar-theangachadh dhen " .. example_type .. " seo rise)</small>"
end
end
end
local function generate_inline_usex()
local result = {}
local function ins(text)
table.insert(result, text)
end
ins(usex_obj.usex)
ins(format_audio(audio))
local function insert_annotations(obj)
if obj.norm then
ins(" " .. obj.norm)
end
if obj.tr or obj.ts then
ins(" ―")
if obj.tr then
ins(" " .. obj.tr)
end
if obj.ts then
ins(" " .. obj.ts)
end
end
end
insert_annotations(usex_obj)
if orig_obj then
ins(" (")
ins("[" .. original_text .. orig_obj.usex .. "]")
insert_annotations(orig_obj)
ins(")")
end
if translation then
ins(" ― " .. translation)
end
if lit then
ins(" " .. lit)
end
if source then
ins(" " .. source)
end
if footer then
ins(" " .. footer)
end
if data.brackets then
ins("]")
end
return table.concat(result)
end
local function generate_multiline_usex()
local result = {}
local function ins(text)
table.insert(result, text)
end
ins(usex_obj.usex)
ins(format_audio(audio))
local any_usex_annotations = usex_obj.tr or usex_obj.ts or usex_obj.norm or translation or lit
local any_orig_annotations = orig_obj and (orig_obj.tr or orig_obj.ts or orig_obj.norm)
if any_usex_annotations or orig_obj or source or footer then
ins("<dl>")
local function insert_dd(text)
if text then
ins("<dd>")
ins(text)
if data.brackets then
ins(BRACKET_SUB)
end
ins("</dd>")
end
end
insert_dd(usex_obj.norm)
insert_dd(usex_obj.tr)
insert_dd(usex_obj.ts)
if orig_obj then
insert_dd("[" .. original_text .. orig_obj.usex .. "]")
if any_orig_annotations then
ins("<dd><dl>")
insert_dd(orig_obj.norm)
insert_dd(orig_obj.tr)
insert_dd(orig_obj.ts)
ins("</dl></dd>")
end
end
insert_dd(translation)
insert_dd(lit)
if source or footer then
if any_usex_annotations then
ins("<dd><dl>")
end
insert_dd(source)
insert_dd(footer)
if any_usex_annotations then
ins("</dl></dd>")
end
end
ins("</dl>")
elseif data.brackets then
ins(BRACKET_SUB)
end
result = table.concat(result)
if data.brackets then
result = result:gsub("^(.*)" .. BRACKET_SUB, "%1]"):gsub(BRACKET_SUB, "")
end
return result
end
local is_inline
if data.inline == "auto" then
result = generate_inline_usex()
if get_character_width(convert_to_raw_text(result)) > MAX_INLINE_WIDTH then
result = generate_multiline_usex()
is_inline = false
else
is_inline = true
end
elseif data.inline then
result = generate_inline_usex()
is_inline = true
else
result = generate_multiline_usex()
is_inline = false
end
local class = quote and css_classes.container_quotation or css_classes.container_ux
if data.class then
class = class .. " " .. data.class
end
result = (is_inline and span or div)(class, result)
return result .. require("Module:utilities").format_categories(categories, lang, sortkey)
end
return export
m5cazf67lc1iy0itw99kgfezi8vmtrk
Mòideal:ga-mutation
828
17105
88724
87062
2026-08-01T16:59:56Z
en>Fenakhay
0
Use [[Module:inflection-table]] directly
88724
Scribunto
text/plain
local m_links = require("Module:links")
local lang = require("Module:languages").getByCode("ga")
local export = {}
local m_inflection_table = require("Module:inflection-table")
local function repl(forms, param)
if param ~= "normal" and forms[param] == forms["normal"] then
return "''not applicable''"
end
local ret = m_links.full_link({lang = lang, term = forms[param]})
if param == "len" and forms.an ~= forms.normal then
ret = ret .. "<br/>''after " .. m_links.full_link({lang = lang, alt = "an"}) .. ",'' " .. m_links.full_link({lang = lang, term = forms.an})
end
return ret
end
local table_cons = [=[
! radical
! lenition
! eclipsis
|-
| {{{normal}}}
| {{{len}}}
| {{{ecl}}}
]=]
local table_vowel = [=[
! radical !! eclipsis !! with ''h''-prothesis !! with ''t''-prothesis
|-
| {{{normal}}}
| {{{ecl}}}
| {{{hpro}}}
| {{{tpro}}}
]=]
function export.mut(frame)
local params = {
[1] = {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local title = mw.loadData("Module:headword/data").pagename
local forms = require("Module:ga-common").mutations(title, args[1])
local wikicode = mw.ustring.find(mw.ustring.lower(title), "^[aeiouáéíóú]") and table_vowel or table_cons
local result = m_inflection_table.make_top{
title = '[[Appendix:Irish mutations|Mutated forms]] of ' .. require("Module:links").full_link({lang = lang, alt = title}, 'term'),
palette = 'green'
}
result = result .. '\n'
result = result .. mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", function(param) return repl(forms, param) end)
result = result .. m_inflection_table.make_bottom{
notes = '<p style="font-size:85%;"><i>Note:</i> Certain mutated forms of some words can never occur in standard Modern Irish.<br>All possible mutated forms are displayed for convenience.</p>'
}
return result
end
return export
l8fq8kfzr4y7jpggue4qmyj65i8t8x9
88725
88724
2026-08-02T07:29:52Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Module:ga-mutation]]
88724
Scribunto
text/plain
local m_links = require("Module:links")
local lang = require("Module:languages").getByCode("ga")
local export = {}
local m_inflection_table = require("Module:inflection-table")
local function repl(forms, param)
if param ~= "normal" and forms[param] == forms["normal"] then
return "''not applicable''"
end
local ret = m_links.full_link({lang = lang, term = forms[param]})
if param == "len" and forms.an ~= forms.normal then
ret = ret .. "<br/>''after " .. m_links.full_link({lang = lang, alt = "an"}) .. ",'' " .. m_links.full_link({lang = lang, term = forms.an})
end
return ret
end
local table_cons = [=[
! radical
! lenition
! eclipsis
|-
| {{{normal}}}
| {{{len}}}
| {{{ecl}}}
]=]
local table_vowel = [=[
! radical !! eclipsis !! with ''h''-prothesis !! with ''t''-prothesis
|-
| {{{normal}}}
| {{{ecl}}}
| {{{hpro}}}
| {{{tpro}}}
]=]
function export.mut(frame)
local params = {
[1] = {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local title = mw.loadData("Module:headword/data").pagename
local forms = require("Module:ga-common").mutations(title, args[1])
local wikicode = mw.ustring.find(mw.ustring.lower(title), "^[aeiouáéíóú]") and table_vowel or table_cons
local result = m_inflection_table.make_top{
title = '[[Appendix:Irish mutations|Mutated forms]] of ' .. require("Module:links").full_link({lang = lang, alt = title}, 'term'),
palette = 'green'
}
result = result .. '\n'
result = result .. mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", function(param) return repl(forms, param) end)
result = result .. m_inflection_table.make_bottom{
notes = '<p style="font-size:85%;"><i>Note:</i> Certain mutated forms of some words can never occur in standard Modern Irish.<br>All possible mutated forms are displayed for convenience.</p>'
}
return result
end
return export
l8fq8kfzr4y7jpggue4qmyj65i8t8x9
Mòideal:gv-common
828
17766
88706
88476
2026-08-01T21:15:18Z
Altronic
4137
minor fix
88706
Scribunto
text/plain
local export = {}
function export.mutate(term)
local ret = { normal = term, yn = term, lenition = term, alten = term, eclipsis = term, hpro = term }
local lower = mw.ustring.lower(term)
-- lenition
if lower:find("^[cp][^h]") then
ret.lenition = lower:gsub("^(.)", "%1h")
elseif lower:find("^[bm][^w]") then
ret.lenition = lower:gsub("^(.)", "v")
elseif lower:find("^[bm]w") then
ret.lenition = lower:gsub("^(.)", "")
elseif lower:find("^[cç]h") then
ret.lenition = lower:gsub("^(.)", "")
elseif lower:find("^dh") then
ret.lenition = lower:gsub("^(.)", "g")
elseif lower:find("^ph") then
ret.lenition = lower:gsub("^(..)", "")
elseif lower:find("^f[^w]") then
ret.lenition = lower:gsub("^(.)", "")
elseif lower:find("^t[^h]") then
ret.lenition = lower:gsub("^(.)", "h")
elseif lower:find("^th") then
ret.lenition = lower:gsub("^(.)", "")
elseif lower:find("^fw") or lower:find("^qu") then
ret.lenition = lower:gsub("^(..)", "wh")
elseif lower:find("^g[^iu]") then
ret.lenition = lower:gsub("^(.)", "%1h")
elseif lower:find("^gi") or lower:find("^j") then
ret.lenition = lower:gsub("^(.)", "y")
if term:find("^gu") then ret.altlen = lower:gsub("^(.)", "y")
elseif term:find("^Gu") then ret.altlen = lower:gsub("^(.)", "ya") end
elseif lower:find("^k") then
ret.lenition = lower:gsub("^(.)", "ch")
elseif lower:find("^s[aeiouy]") then
ret.lenition = lower:gsub("^(.)", "h")
ret.yn = lower:gsub("^(.)", "t")
elseif lower:find("^s[ln]") then
ret.lenition = lower:gsub("^(.)", "")
ret.yn = lower:gsub("^(.)", "t")
elseif lower:find("^sh[lnr]") then
ret.lenition = lower:gsub("^(..)", "")
ret.yn = lower:gsub("^(.)", "ç")
end
-- eclipsis
if lower:find("^b") then ret.eclipsis = lower:gsub("^(.)", "m")
elseif lower:find("^c[^h]") or lower:find("^k") then
ret.eclipsis = lower:gsub("^(.)", "ch")
elseif lower:find("^[cç]h") then
ret.eclipsis = lower:gsub("^(..)", "j")
elseif lower:find("^d[^h]") then ret.eclipsis = lower:gsub("^(.)", "n")
elseif lower:find("^dh") then
ret.eclipsis = lower:gsub("^(..)", "n")
elseif lower:find("^f[^w]") then
ret.eclipsis = lower:gsub("^(.)", "")
elseif lower:find("^ph") then
ret.eclipsis = lower:gsub("^(..)", "")
elseif lower:find("^fw") then
ret.eclipsis = lower:gsub("^(.)", "")
elseif lower:find("^g") then ret.eclipsis = lower:gsub("^(.)", "n")
elseif lower:find("^j") then ret.eclipsis = lower:gsub("^(.)", "n'y")
elseif lower:find("^p") then ret.eclipsis = lower:gsub("^(.)", "b")
elseif lower:find("^qu") then
ret.eclipsis = lower:gsub("^(.)", "g")
elseif lower:find("^t") then ret.eclipsis = lower:gsub("^(.)", "d")
end
if lower:find("^[aeiou]") or lower:find("^y[^aeiouh]") then
ret.hpro = "h" .. term
ret.eclipsis = "n" .. term
end
return ret
end
return export
lmr6lhsmd1vxydfubwfwvqp7gmr7jon
88707
88706
2026-08-01T21:44:02Z
Altronic
4137
use mw.ustring
88707
Scribunto
text/plain
local export = {}
function export.mutate(term)
local ret = { normal = term, yn = term, lenition = term, alten = term, eclipsis = term, hpro = term }
local lower = mw.ustring.lower(term)
-- lenition
if mw.ustring.find(lower, "^[cp][^h]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "%1h")
elseif mw.ustring.find(lower, "^[bm][^w]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "v")
elseif mw.ustring.find(lower, "^[bm]w") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^[cç]h") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^dh") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "g")
elseif mw.ustring.find(lower, "^ph") then
ret.lenition = mw.ustring.gsub(lower, "^(..)", "")
elseif mw.ustring.find(lower, "^f[^w]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^t[^h]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "h")
elseif mw.ustring.find(lower, "^th") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^fw") or mw.ustring.find(lower, "^qu") then
ret.lenition = mw.ustring.gsub(lower, "^(..)", "wh")
elseif mw.ustring.find(lower, "^g[^iu]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "%1h")
elseif mw.ustring.find(lower, "^gi") or mw.ustring.find(lower, "^j") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "y")
if term:find("^gu") then ret.altlen = mw.ustring.gsub(lower, "^(.)", "y")
elseif term:find("^Gu") then ret.altlen = mw.ustring.gsub(lower, "^(.)", "ya") end
elseif mw.ustring.find(lower, "^k") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "ch")
elseif mw.ustring.find(lower, "^s[aeiouy]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "h")
ret.yn = mw.ustring.gsub(lower, "^(.)", "t")
elseif mw.ustring.find(lower, "^s[ln]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
ret.yn = mw.ustring.gsub(lower, "^(.)", "t")
elseif mw.ustring.find(lower, "^sh[lnr]") then
ret.lenition = mw.ustring.gsub(lower, "^(..)", "")
ret.yn = mw.ustring.gsub(lower, "^(.)", "ç")
end
-- eclipsis
if mw.ustring.find(lower, "^b") then ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "m")
elseif mw.ustring.find(lower, "^c[^h]") or mw.ustring.find(lower, "^k") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "ch")
elseif mw.ustring.find(lower, "^[cç]h") then
ret.eclipsis = mw.ustring.gsub(lower, "^(..)", "j")
elseif mw.ustring.find(lower, "^d[^h]") then ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "n")
elseif mw.ustring.find(lower, "^dh") then
ret.eclipsis = mw.ustring.gsub(lower, "^(..)", "n")
elseif mw.ustring.find(lower, "^f[^w]") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^ph") then
ret.eclipsis = mw.ustring.gsub(lower, "^(..)", "")
elseif mw.ustring.find(lower, "^fw") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^g") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "n")
elseif mw.ustring.find(lower, "^j") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "n'y")
elseif mw.ustring.find(lower, "^p") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "b")
elseif mw.ustring.find(lower, "^qu") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "g")
elseif mw.ustring.find(lower, "^t") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "d")
end
if mw.ustring.find(lower, "^[aeiou]") or mw.ustring.find(lower, "^y[^aeiouh]") then
ret.hpro = "h" .. term
ret.eclipsis = "n" .. term
end
return ret
end
return export
9kwnot17xiga9el7mvqkdjjmilqmsqx
88719
88707
2026-08-02T03:43:43Z
Altronic
4137
fix issue
88719
Scribunto
text/plain
local export = {}
function export.mutate(term)
local ret = { normal = term, yn = term, lenition = term, alten = term, eclipsis = term, hpro = term }
local lower = mw.ustring.lower(term)
-- lenition
if mw.ustring.find(lower, "^[cp][^h]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "%1h")
elseif mw.ustring.find(lower, "^[bm][^w]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "v")
elseif mw.ustring.find(lower, "^[bm]w") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^[cç]h") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^dh") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "g")
elseif mw.ustring.find(lower, "^ph") then
ret.lenition = mw.ustring.gsub(lower, "^(..)", "")
elseif mw.ustring.find(lower, "^f[^w]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^t[^h]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "h")
elseif mw.ustring.find(lower, "^th") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^fw") or mw.ustring.find(lower, "^qu") then
ret.lenition = mw.ustring.gsub(lower, "^(..)", "wh")
elseif mw.ustring.find(lower, "^g[^iu]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "%1h")
elseif mw.ustring.find(lower, "^gi") or mw.ustring.find(lower, "^j") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "y")
if term:find("^gu") then ret.altlen = mw.ustring.gsub(lower, "^(.)", "y")
elseif term:find("^Gu") then ret.altlen = mw.ustring.gsub(lower, "^(.)", "ya") end
elseif mw.ustring.find(lower, "^k") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "ch")
elseif mw.ustring.find(lower, "^s[aeiouy]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "h")
ret.yn = mw.ustring.gsub(lower, "^(.)", "t")
elseif mw.ustring.find(lower, "^s[ln]") then
ret.lenition = mw.ustring.gsub(lower, "^(.)", "")
ret.yn = mw.ustring.gsub(lower, "^(.)", "t")
elseif mw.ustring.find(lower, "^sh[lnr]") then
ret.lenition = mw.ustring.gsub(lower, "^(..)", "")
ret.yn = mw.ustring.gsub(lower, "^(.)", "ç")
end
-- eclipsis
if mw.ustring.find(lower, "^b") then ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "m")
elseif mw.ustring.find(lower, "^c[^h]") or mw.ustring.find(lower, "^k") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "ch")
elseif mw.ustring.find(lower, "^[cç]h") then
ret.eclipsis = mw.ustring.gsub(lower, "^(..)", "j")
elseif mw.ustring.find(lower, "^d[^h]") then ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "n")
elseif mw.ustring.find(lower, "^dh") then
ret.eclipsis = mw.ustring.gsub(lower, "^(..)", "n")
elseif mw.ustring.find(lower, "^f[^w]") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "v")
elseif mw.ustring.find(lower, "^ph") then
ret.eclipsis = mw.ustring.gsub(lower, "^(..)", "v")
elseif mw.ustring.find(lower, "^fw") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "")
elseif mw.ustring.find(lower, "^g") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "n")
elseif mw.ustring.find(lower, "^j") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "n'y")
elseif mw.ustring.find(lower, "^p") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "b")
elseif mw.ustring.find(lower, "^qu") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "g")
elseif mw.ustring.find(lower, "^t") then
ret.eclipsis = mw.ustring.gsub(lower, "^(.)", "d")
end
if mw.ustring.find(lower, "^[aeiou]") or mw.ustring.find(lower, "^y[^aeiouh]") then
ret.hpro = "h" .. term
ret.eclipsis = "n" .. term
end
return ret
end
return export
q4z53cftc1fwfhq2szfs12rs6najffo
Roinn-seòrsa:Cleachdaiche ko
14
17862
88711
2026-08-02T00:06:34Z
Cruthachadh fèin-obrachail Babel
1611
A' cruthachadh duilleag roinne [[Project:Babel|Babel]] leis fhèin
88711
wikitext
text/x-wiki
Tha na cleachdaichean san roinn seo ag innse gu bheil iad eòlach air a' chànan a leanas: Coirèanais.
dgunl2ciaq0khwcd0u689f8yipj5wei
Roinn-seòrsa:Cleachdaiche ko-N
14
17863
88712
2026-08-02T00:06:34Z
Cruthachadh fèin-obrachail Babel
1611
A' cruthachadh duilleag roinne [[Project:Babel|Babel]] leis fhèin
88712
wikitext
text/x-wiki
Tha na cleachdaichean san roinn seo ag innse gu bheil comas ìre N aca ann an Coirèanais.
6sgburfmvjc52ztvk41d6piv28wiqq5
Cleachdaiche:Hym411
2
17864
88713
2026-08-02T00:41:08Z
Pathoschild
38
global user pages ([[m:Synchbot|requested by Hym411]])
88713
wikitext
text/x-wiki
#REDIRECT [[User:Revi C.]]
88g0cv17whfgb1wkeh281mptujwtlut
Deasbaireachd a' chleachdaiche:Hym411
3
17865
88714
2026-08-02T01:10:31Z
Pathoschild
38
global user pages ([[m:Synchbot|requested by Hym411]])
88714
wikitext
text/x-wiki
#REDIRECT [[User talk:Revi C.]]
o9z79lcc9a9pfmqmrod5w3eyk4q9i0o
Teamplaid:gv-noun
10
17866
88715
2025-12-31T08:31:54Z
en>WingerBot
0
replace {{PAGENAME}} with {{pagename}} in {{head}}; misc cleanup of uses of {{PAGENAME}}, sometimes reworking {{head}} calls to incorporate inflections into {{head}}; replace {{hwcat}} with {{tcat|hw}} (manually assisted)
88715
wikitext
text/x-wiki
{{head|gv|{{#if:{{{suff|}}}|suffix|noun}}|cat2={{#if:{{{suff|}}}|noun-forming suffixes}}|head={{{head|}}}|sort={{{sort|}}}<!--
-->|g={{#if:{{{1|}}}|{{{1}}}|?}}<!--
-->|g2={{{g2|}}}<!--
-->|g3={{{g3|}}}<!--
-->|{{#if:{{{3|}}}|genitive singular|}}<!--
-->|{{#ifeq:{{{3}}}|-|{{pagename}}|{{{3|}}}}}<!--
-->|f1accel-form=gen{{!}}s<!--
-->|{{#if:{{{gen2|}}}|or}}<!--
-->|{{{gen2|}}}<!--
-->|{{#if:{{{gen3|}}}|or}}<!--
-->|{{{gen3|}}}<!--
-->|{{#switch:{{{2|}}}|-=no plural}}<!--
-->|<!--
-->|{{#switch:{{{2}}}|?|-=|#default=plural}}<!--
-->|{{{2|}}}<!--
-->|f5request=1<!--
-->|f5accel-form=p<!--
-->|{{#if:{{{pl2|}}}|or}}<!--
-->|{{{pl2|}}}<!--
-->|{{#if:{{{pl3|}}}|or}}<!--
-->|{{{pl3|}}}<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
qd1y2ywxp19mixt1qdbpfchzvf70uye
88716
88715
2026-08-02T03:36:33Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:gv-noun]]
88715
wikitext
text/x-wiki
{{head|gv|{{#if:{{{suff|}}}|suffix|noun}}|cat2={{#if:{{{suff|}}}|noun-forming suffixes}}|head={{{head|}}}|sort={{{sort|}}}<!--
-->|g={{#if:{{{1|}}}|{{{1}}}|?}}<!--
-->|g2={{{g2|}}}<!--
-->|g3={{{g3|}}}<!--
-->|{{#if:{{{3|}}}|genitive singular|}}<!--
-->|{{#ifeq:{{{3}}}|-|{{pagename}}|{{{3|}}}}}<!--
-->|f1accel-form=gen{{!}}s<!--
-->|{{#if:{{{gen2|}}}|or}}<!--
-->|{{{gen2|}}}<!--
-->|{{#if:{{{gen3|}}}|or}}<!--
-->|{{{gen3|}}}<!--
-->|{{#switch:{{{2|}}}|-=no plural}}<!--
-->|<!--
-->|{{#switch:{{{2}}}|?|-=|#default=plural}}<!--
-->|{{{2|}}}<!--
-->|f5request=1<!--
-->|f5accel-form=p<!--
-->|{{#if:{{{pl2|}}}|or}}<!--
-->|{{{pl2|}}}<!--
-->|{{#if:{{{pl3|}}}|or}}<!--
-->|{{{pl3|}}}<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
qd1y2ywxp19mixt1qdbpfchzvf70uye
Teamplaid:gd-prep-infl
10
17867
88717
2025-12-28T23:31:23Z
en>WingerBot
0
use {{pagename}} in place of {{PAGENAME}}/{{SUBPAGENAME}}/{{BASEPAGENAME}} in inflection templates; use {{tcat}} for categorization; avoid [[Module:ugly hacks]] in favor of [[Module:string/templates]]; misc fixes (manually assisted)
88717
wikitext
text/x-wiki
{{inflection-table-top|palette=blue|title=Personal inflection of {{#if:{{{root|}}}|{{m|gd|{{{root}}}}}|{{m|gd||{{pagename}}}}}}|tall=yes}}
|-
! class="outer" |
! colspan="2" | ''Person:''
! simple
! emphatic
|-
! class="outer" rowspan="4" | singular
! colspan="2" | first
| {{#ifeq:{{{1sg|}}}|-|—|{{l-self|gd|{{{1sg}}}}}}}
| {{#ifeq:{{{1sg|}}}|-|—|{{l-self|gd|{{{1sgem|{{{1sg}}}sa}}}}}}}
|-
! colspan="2" | second
| {{#ifeq:{{{2sg|}}}|-|—|{{l-self|gd|{{{2sg}}}}}}}
| {{#ifeq:{{{2sg|}}}|-|—|{{l-self|gd|{{{2sgem|{{{2sg}}}sa}}}}}}}
|-
! rowspan="2" style="min-width:0" | third
! class="secondary" | {{g|m}}
| {{#ifeq:{{{3sgm|}}}|-|—|{{l-self|gd|{{{3sgm}}}}}}}
| {{#ifeq:{{{3sgm|}}}|-|—|{{l-self|gd|{{{3sgmem|{{{3sgm}}}san}}}}}}}
|-
! class="secondary" | {{g|f}}
| {{#ifeq:{{{3sgf|}}}|-|—|{{l-self|gd|{{{3sgf}}}}}}}
| {{#ifeq:{{{3sgf|}}}|-|—|{{l-self|gd|{{{3sgfem|{{{3sgf}}}se}}}}}}}
|-
! class="separator" colspan="999" |
|-
! class="outer" rowspan="3" | plural
! colspan="2" | first
| {{#ifeq:{{{1pl|}}}|-|—|{{l-self|gd|{{{1pl}}}}}}}
| {{#ifeq:{{{1pl|}}}|-|—|{{l-self|gd|{{{1plem|{{{1pl}}}e}}}}}}}
|-
! colspan="2" | second
| {{#ifeq:{{{2pl|}}}|-|—|{{l-self|gd|{{{2pl}}}}}}}
| {{#ifeq:{{{2pl|}}}|-|—|{{l-self|gd|{{{2plem|{{{2pl}}}se}}}}}}}
|-
! colspan="2" | third
| {{#ifeq:{{{3pl|}}}|-|—|{{l-self|gd|{{{3pl}}}}}}}
| {{#ifeq:{{{3pl|}}}|-|—|{{l-self|gd|{{{3plem|{{{3pl}}}san}}}}}}}
{{inflection-table-bottom}}<noinclude>{{documentation}}</noinclude>
4duwko0y21q3kym9tru7pdlj0mrjdyp
88718
88717
2026-08-02T03:36:51Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:gd-prep-infl]]
88717
wikitext
text/x-wiki
{{inflection-table-top|palette=blue|title=Personal inflection of {{#if:{{{root|}}}|{{m|gd|{{{root}}}}}|{{m|gd||{{pagename}}}}}}|tall=yes}}
|-
! class="outer" |
! colspan="2" | ''Person:''
! simple
! emphatic
|-
! class="outer" rowspan="4" | singular
! colspan="2" | first
| {{#ifeq:{{{1sg|}}}|-|—|{{l-self|gd|{{{1sg}}}}}}}
| {{#ifeq:{{{1sg|}}}|-|—|{{l-self|gd|{{{1sgem|{{{1sg}}}sa}}}}}}}
|-
! colspan="2" | second
| {{#ifeq:{{{2sg|}}}|-|—|{{l-self|gd|{{{2sg}}}}}}}
| {{#ifeq:{{{2sg|}}}|-|—|{{l-self|gd|{{{2sgem|{{{2sg}}}sa}}}}}}}
|-
! rowspan="2" style="min-width:0" | third
! class="secondary" | {{g|m}}
| {{#ifeq:{{{3sgm|}}}|-|—|{{l-self|gd|{{{3sgm}}}}}}}
| {{#ifeq:{{{3sgm|}}}|-|—|{{l-self|gd|{{{3sgmem|{{{3sgm}}}san}}}}}}}
|-
! class="secondary" | {{g|f}}
| {{#ifeq:{{{3sgf|}}}|-|—|{{l-self|gd|{{{3sgf}}}}}}}
| {{#ifeq:{{{3sgf|}}}|-|—|{{l-self|gd|{{{3sgfem|{{{3sgf}}}se}}}}}}}
|-
! class="separator" colspan="999" |
|-
! class="outer" rowspan="3" | plural
! colspan="2" | first
| {{#ifeq:{{{1pl|}}}|-|—|{{l-self|gd|{{{1pl}}}}}}}
| {{#ifeq:{{{1pl|}}}|-|—|{{l-self|gd|{{{1plem|{{{1pl}}}e}}}}}}}
|-
! colspan="2" | second
| {{#ifeq:{{{2pl|}}}|-|—|{{l-self|gd|{{{2pl}}}}}}}
| {{#ifeq:{{{2pl|}}}|-|—|{{l-self|gd|{{{2plem|{{{2pl}}}se}}}}}}}
|-
! colspan="2" | third
| {{#ifeq:{{{3pl|}}}|-|—|{{l-self|gd|{{{3pl}}}}}}}
| {{#ifeq:{{{3pl|}}}|-|—|{{l-self|gd|{{{3plem|{{{3pl}}}san}}}}}}}
{{inflection-table-bottom}}<noinclude>{{documentation}}</noinclude>
4duwko0y21q3kym9tru7pdlj0mrjdyp
failt
0
17868
88720
2026-08-02T06:29:39Z
Altronic
4137
Chaidh duilleag le "==Gàidhlig Mhanainneach== ===Freumhachadh=== On {{inh|gd|sga|fáilte}}, on {{inh|gd|cel-pro|*wāletiyā}}, on {{inh|gd|ine-pro|*welh₁-}}. Co-dhàimh le {{cog|ga|fáilte}} agus {{cog|gd|fàilte}}. ===Ainmear=== {{gv-noun|b|failtyn|failt}} # [[fàilte]] ===Clisgear=== {{head|gv|clisgear}} # [[fàilte]] #: {{ux|gv|Failt erriu!|Fàilte oirbh!|inline=1}} ===Mùthadh=== {{gv-mut}}" a chruthachadh
88720
wikitext
text/x-wiki
==Gàidhlig Mhanainneach==
===Freumhachadh===
On {{inh|gd|sga|fáilte}}, on {{inh|gd|cel-pro|*wāletiyā}}, on {{inh|gd|ine-pro|*welh₁-}}. Co-dhàimh le {{cog|ga|fáilte}} agus {{cog|gd|fàilte}}.
===Ainmear===
{{gv-noun|b|failtyn|failt}}
# [[fàilte]]
===Clisgear===
{{head|gv|clisgear}}
# [[fàilte]]
#: {{ux|gv|Failt erriu!|Fàilte oirbh!|inline=1}}
===Mùthadh===
{{gv-mut}}
snfn0npkhsdzpvr5yrs8206cxgt5wwr
Teamplaid:ainmear gnìomhaireach dhen
10
17869
88721
2026-08-02T06:49:58Z
Altronic
4137
Chaidh an duilleag ath-stiùireadh gu [[Teamplaid:verbal noun of]]
88721
wikitext
text/x-wiki
#REDIRECT[[Template:verbal noun of]]
ieezvsiuil6xx9agfxi98wxajx2xbqv
Teamplaid:ga-mut
10
17870
88722
2026-04-15T09:11:24Z
en>Surjection
0
Changed protection settings for "[[Template:ga-mut]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite))
88722
wikitext
text/x-wiki
{{#invoke:ga-mutation|mut}}<noinclude>{{documentation}}</noinclude>
28jn79c82jkxk0t7gpa48w0w73p1m9u
88723
88722
2026-08-02T07:29:40Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:ga-mut]]
88722
wikitext
text/x-wiki
{{#invoke:ga-mutation|mut}}<noinclude>{{documentation}}</noinclude>
28jn79c82jkxk0t7gpa48w0w73p1m9u
Teamplaid:ga-decl-f2
10
17871
88726
2025-12-11T00:52:50Z
en>AutoDooz
0
checkparam: use error instead of warning
88726
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{ga-decl-noun|declclass=second
|head={{{1}}}{{{2}}}
| {{l-self|ga|{{{1}}}{{{2}}}}}
| a {{l-self|ga|{{ga-lenition|{{{1}}}}}{{{2}}}}}
| {{l-self|ga|{{{1}}}{{{3}}}}}
| {{l-self|ga|{{#ifeq:{{{datoc|}}}|s|{{{1}}}{{{dat}}}|{{{1}}}{{{2}}}}}}}{{#switch:{{{datoc|}}}|a=<br/>{{l-self|ga|{{{1}}}{{{dat}}}}} {{qualifier|archaic, dialectal}}|p=<br/>{{l-self|ga|{{{1}}}{{{dat}}}}} {{qualifier|in certain phrases}}}}
| {{l-self|ga|{{{1}}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
| a {{l-self|ga|{{ga-lenition|{{{1}}}}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
| {{l-self|ga|{{{1}}}{{{genpl|{{{pl|{{{2}}}}}}}}}}}
| {{l-self|ga|{{{1}}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
| an {{l-self|ga|{{ga-lenition an|{{{1}}}}}{{{2}}}}}
| na {{l-self|ga|{{#switch:{{{1|}}}
| a | á | A | Á | e | é | E | É | i | í | I | Í | o | ó | O | Ó | u | ú | U | Ú = h{{{1}}}
| {{{1}}}
}}{{{3}}}}}
| leis an {{l-self|ga|{{#switch:{{{1|}}}
| b | B = m{{{1}}}
| c | C = g{{{1}}}
| f | F = bh{{{1}}}
| g | G = n{{{1}}}
| p | P = b{{{1}}}
| sa | sá | se | sé | si | sí | sl | sn | so | só | sr | su | sú | Sa | Sá | Se | Sé | Si | Sí | Sl | Sn | So | Só | Sr | Su | Sú = t{{{1}}}
| {{{1}}}
}}{{#ifeq:{{{datoc|}}}|s|{{{dat}}}|{{{2}}}}}}}{{#switch:{{{datoc|}}}|a=<br/>leis an {{l-self|ga|{{#switch:{{{1|}}}
| b | B = m{{{1}}}
| c | C = g{{{1}}}
| f | F = bh{{{1}}}
| g | G = n{{{1}}}
| p | P = b{{{1}}}
| sa | sá | se | sé | si | sí | sl | sn | so | só | sr | su | sú | Sa | Sá | Se | Sé | Si | Sí | Sl | Sn | So | Só | Sr | Su | Sú = t{{{1}}}
| {{{1}}}
}}{{{dat}}}}} {{qualifier|archaic, dialectal}}|p=}}<br/>don {{l-self|ga|{{ga-lenition an|{{{1}}}}}{{#ifeq:{{{datoc|}}}|s|{{{dat}}}|{{{2}}}}}}}{{#switch:{{{datoc|}}}|a=<br/>don {{l-self|ga|{{ga-lenition an|{{{1}}}}}{{{dat}}}}} {{qualifier|archaic, dialectal}}|p=}}
| na {{l-self|ga|{{#switch:{{{1|}}}
| a | á | A | Á | e | é | E | É | i | í | I | Í | o | ó | O | Ó | u | ú | U | Ú = h{{{1}}}
| {{{1}}}
}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
| na {{l-self|ga|{{ga-eclipsis|{{{1}}}}}{{{genpl|{{{pl|{{{2}}}}}}}}}}}
| leis na {{l-self|ga|{{#switch:{{{1|}}}
| a | á | A | Á | e | é | E | É | i | í | I | Í | o | ó | O | Ó | u | ú | U | Ú = h{{{1}}}
| {{{1}}}
}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
}}<includeonly>{{cln|ga|second-declension nouns}}</includeonly><noinclude>{{documentation}}</noinclude>
akydqe8xyf9aak1nak0s7ljzogaklsr
88727
88726
2026-08-02T07:31:43Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:ga-decl-f2]]
88726
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{ga-decl-noun|declclass=second
|head={{{1}}}{{{2}}}
| {{l-self|ga|{{{1}}}{{{2}}}}}
| a {{l-self|ga|{{ga-lenition|{{{1}}}}}{{{2}}}}}
| {{l-self|ga|{{{1}}}{{{3}}}}}
| {{l-self|ga|{{#ifeq:{{{datoc|}}}|s|{{{1}}}{{{dat}}}|{{{1}}}{{{2}}}}}}}{{#switch:{{{datoc|}}}|a=<br/>{{l-self|ga|{{{1}}}{{{dat}}}}} {{qualifier|archaic, dialectal}}|p=<br/>{{l-self|ga|{{{1}}}{{{dat}}}}} {{qualifier|in certain phrases}}}}
| {{l-self|ga|{{{1}}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
| a {{l-self|ga|{{ga-lenition|{{{1}}}}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
| {{l-self|ga|{{{1}}}{{{genpl|{{{pl|{{{2}}}}}}}}}}}
| {{l-self|ga|{{{1}}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
| an {{l-self|ga|{{ga-lenition an|{{{1}}}}}{{{2}}}}}
| na {{l-self|ga|{{#switch:{{{1|}}}
| a | á | A | Á | e | é | E | É | i | í | I | Í | o | ó | O | Ó | u | ú | U | Ú = h{{{1}}}
| {{{1}}}
}}{{{3}}}}}
| leis an {{l-self|ga|{{#switch:{{{1|}}}
| b | B = m{{{1}}}
| c | C = g{{{1}}}
| f | F = bh{{{1}}}
| g | G = n{{{1}}}
| p | P = b{{{1}}}
| sa | sá | se | sé | si | sí | sl | sn | so | só | sr | su | sú | Sa | Sá | Se | Sé | Si | Sí | Sl | Sn | So | Só | Sr | Su | Sú = t{{{1}}}
| {{{1}}}
}}{{#ifeq:{{{datoc|}}}|s|{{{dat}}}|{{{2}}}}}}}{{#switch:{{{datoc|}}}|a=<br/>leis an {{l-self|ga|{{#switch:{{{1|}}}
| b | B = m{{{1}}}
| c | C = g{{{1}}}
| f | F = bh{{{1}}}
| g | G = n{{{1}}}
| p | P = b{{{1}}}
| sa | sá | se | sé | si | sí | sl | sn | so | só | sr | su | sú | Sa | Sá | Se | Sé | Si | Sí | Sl | Sn | So | Só | Sr | Su | Sú = t{{{1}}}
| {{{1}}}
}}{{{dat}}}}} {{qualifier|archaic, dialectal}}|p=}}<br/>don {{l-self|ga|{{ga-lenition an|{{{1}}}}}{{#ifeq:{{{datoc|}}}|s|{{{dat}}}|{{{2}}}}}}}{{#switch:{{{datoc|}}}|a=<br/>don {{l-self|ga|{{ga-lenition an|{{{1}}}}}{{{dat}}}}} {{qualifier|archaic, dialectal}}|p=}}
| na {{l-self|ga|{{#switch:{{{1|}}}
| a | á | A | Á | e | é | E | É | i | í | I | Í | o | ó | O | Ó | u | ú | U | Ú = h{{{1}}}
| {{{1}}}
}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
| na {{l-self|ga|{{ga-eclipsis|{{{1}}}}}{{{genpl|{{{pl|{{{2}}}}}}}}}}}
| leis na {{l-self|ga|{{#switch:{{{1|}}}
| a | á | A | Á | e | é | E | É | i | í | I | Í | o | ó | O | Ó | u | ú | U | Ú = h{{{1}}}
| {{{1}}}
}}{{#if:{{{pl|}}}|{{{pl}}}|{{{2}}}a}}}}
}}<includeonly>{{cln|ga|second-declension nouns}}</includeonly><noinclude>{{documentation}}</noinclude>
akydqe8xyf9aak1nak0s7ljzogaklsr
Teamplaid:ga-decl-noun
10
17872
88728
2025-12-11T00:53:20Z
en>AutoDooz
0
checkparam: use error instead of warning
88728
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{inflection-box-top|title=Declension of {{m|ga||{{{head|{{{1}}}}}}}} ({{#switch:{{{declclass}}}|first|second|third|fourth|fifth=[[Appendix:Irish {{{declclass}}}-declension nouns|{{{declclass}}} declension]]|irr=[[Appendix:Irish nouns|irregular]]|#default={{{declclass}}} declension}})}}
{{inflection-table-top|title=-|palette=green}}
! colspan=3 class="outer" | bare forms
|-
!
!singular
!plural
|-
! [[nominative]]
| {{{1}}}
| {{{5}}}
|-
! [[vocative]]
| {{{2}}}
| {{{6}}}
|-
! [[genitive]]
| {{{3}}}
| {{{7}}}
|-
! [[dative]]
| {{{4}}}
| {{{8}}}
{{inflection-table-bottom}}
{{inflection-table-top|title=-|palette=green}}
! colspan=3 class="outer" | forms with the [[definite article]]
|-
!
!singular
!plural
|-
! [[nominative]]
| {{{9}}}
| {{{12}}}
|-
! [[genitive]]
| {{{10}}}
| {{{13}}}
|-
! [[dative]]
| {{{11}}}
| {{{14}}}
{{inflection-table-bottom}}
{{inflection-box-bottom}}<!--
-->{{cln|ga|{{#ifeq:{{{declclass|}}}|irr|irregular nouns|{{{declclass|}}}-declension nouns}}}}<noinclude>
{{documentation}}
</noinclude>
de7rqop8i0of6xhg8xu3luqfx3ugyll
88729
88728
2026-08-02T07:32:24Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:ga-decl-noun]]
88728
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{inflection-box-top|title=Declension of {{m|ga||{{{head|{{{1}}}}}}}} ({{#switch:{{{declclass}}}|first|second|third|fourth|fifth=[[Appendix:Irish {{{declclass}}}-declension nouns|{{{declclass}}} declension]]|irr=[[Appendix:Irish nouns|irregular]]|#default={{{declclass}}} declension}})}}
{{inflection-table-top|title=-|palette=green}}
! colspan=3 class="outer" | bare forms
|-
!
!singular
!plural
|-
! [[nominative]]
| {{{1}}}
| {{{5}}}
|-
! [[vocative]]
| {{{2}}}
| {{{6}}}
|-
! [[genitive]]
| {{{3}}}
| {{{7}}}
|-
! [[dative]]
| {{{4}}}
| {{{8}}}
{{inflection-table-bottom}}
{{inflection-table-top|title=-|palette=green}}
! colspan=3 class="outer" | forms with the [[definite article]]
|-
!
!singular
!plural
|-
! [[nominative]]
| {{{9}}}
| {{{12}}}
|-
! [[genitive]]
| {{{10}}}
| {{{13}}}
|-
! [[dative]]
| {{{11}}}
| {{{14}}}
{{inflection-table-bottom}}
{{inflection-box-bottom}}<!--
-->{{cln|ga|{{#ifeq:{{{declclass|}}}|irr|irregular nouns|{{{declclass|}}}-declension nouns}}}}<noinclude>
{{documentation}}
</noinclude>
de7rqop8i0of6xhg8xu3luqfx3ugyll
Mòideal:inflection-table
828
17873
88730
2026-08-01T16:50:18Z
en>Fenakhay
0
Protected "[[Module:inflection-table]]": Highly visible template/module ([Edit=Allow only template editors and administrators] (indefinite) [Move=Allow only template editors and administrators] (indefinite))
88730
Scribunto
text/plain
local export = {}
local M = require("Module:module loader").init({
require = {
parameters = "Module:parameters",
},
loadData = {
headword_data = "Module:headword/data",
},
})
local concat = table.concat
local insert = table.insert
local WRAPPER_CLASS = "inflection-table-wrapper"
local TABLE_CLASS = "inflection-table"
local TITLE_CLASS = "inflection-table-title"
local NO_TITLE_CLASS = "inflection-table-no-title"
local NOTES_CLASS = "inflection-table-notes"
local COLLAPSIBLE_CLASSES = "inflection-table-collapsible inflection-table-collapsed no-vc"
local VS_SWITCHER_CLASS = "vsSwitcher"
local VS_TOGGLE_CLASS = "vsToggleElement"
local BOX_CLASS = "inflection-box"
local BOX_CONTENT_CLASS = "inflection-box-content"
local BOX_NARROW_CLASS = "inflection-table-narrow"
local TR_ALONGSIDE_CLASS = "tr-alongside"
local FLOW_VERTICAL_CLASS = "flow-vertical"
local NO_TITLE_MARKER = "-"
local DEFAULT_PALETTE = "grey"
local DEFAULT_TOGGLE_CATEGORY = "inflection"
local DEFAULT_TITLE_FORMAT = "Inflection of ''%s''"
local VERTICAL_FLOW = "vertical"
local BASE_STYLE = "width: fit-content"
-- Palettes recognized by [[MediaWiki:Gadget-Palette.css]].
local PALETTES = {
red = true,
scarlet = true,
orange = true,
amber = true,
yellow = true,
lime = true,
green = true,
teal = true,
cyan = true,
blue = true,
indigo = true,
purple = true,
magenta = true,
rose = true,
grey = true,
brown = true,
}
local top_params = {
title = true,
tall = true,
class = true,
["min-width"] = true,
palette = true,
category = true,
lang = true,
["vs-category"] = true,
vsToggleElement = true,
}
local bottom_params = {
notes = true,
}
local box_top_params = {
title = true,
flow = true,
category = true,
}
local function nonempty(value)
return value ~= nil and value ~= "" and value or nil
end
-- Builds the opening <div> and the wikitable header. The markup is deliberately
-- unbalanced -- {{inflection-table-bottom}} closes both -- so this is assembled
-- as text rather than through mw.html, which cannot emit an unclosed node.
function export.make_top(args)
local palette = args.palette or DEFAULT_PALETTE
if not PALETTES[palette] then
error(("Unrecognized palette '%s'; see [[MediaWiki:Gadget-Palette.css]] for the recognized palettes.")
:format(palette))
end
local no_title = args.title == NO_TITLE_MARKER
local wrapper_classes = { WRAPPER_CLASS }
if no_title then
insert(wrapper_classes, NO_TITLE_CLASS)
end
if nonempty(args.tall) then
insert(wrapper_classes, COLLAPSIBLE_CLASSES)
end
if nonempty(args.class) then
insert(wrapper_classes, args.class)
end
local style = BASE_STYLE
local min_width = nonempty(args["min-width"])
if min_width then
style = ("%s; min-width: %s"):format(style, min_width)
end
local vs_category = nonempty(args["vs-category"])
local table_classes = { TABLE_CLASS }
if nonempty(args.lang) then
insert(table_classes, ("%s-%s"):format(TABLE_CLASS, args.lang))
end
if vs_category then
insert(table_classes, VS_SWITCHER_CLASS)
end
local lines = {
('<div class="%s" style="%s" data-wikt-palette-p="%s" data-toggle-category="%s">'):format(
concat(wrapper_classes, " "),
style,
palette,
args.category or DEFAULT_TOGGLE_CATEGORY
),
('{| class="%s"%s'):format(
concat(table_classes, " "),
vs_category and (' data-toggle-category="%s"'):format(vs_category) or ""
),
}
if not no_title then
insert(lines, ('|+ class="%s%s" | %s'):format(
TITLE_CLASS,
nonempty(args.vsToggleElement) and " " .. VS_TOGGLE_CLASS or "",
args.title or DEFAULT_TITLE_FORMAT:format(M.headword_data.pagename)
))
insert(lines, "|-")
end
return concat(lines, "\n") .. "\n"
end
-- Builds the opening markup for {{inflection-box-top}}, a wrapper holding
-- several complete inflection tables side by side. Boxes are always collapsible
-- and always place transliterations alongside, so those classes are fixed. No
-- palette is emitted: each table inside the box carries its own.
-- {{inflection-table-bottom}} closes this too.
function export.make_box_top(args)
local classes = {
WRAPPER_CLASS,
BOX_CLASS,
BOX_NARROW_CLASS,
COLLAPSIBLE_CLASSES,
TR_ALONGSIDE_CLASS,
}
if args.flow == VERTICAL_FLOW then
insert(classes, FLOW_VERTICAL_CLASS)
end
return concat({
('<div class="%s" style="%s" data-toggle-category="%s">'):format(
concat(classes, " "),
BASE_STYLE,
args.category or DEFAULT_TOGGLE_CATEGORY
),
('{| class="%s"'):format(BOX_CONTENT_CLASS),
('|+ class="%s" | %s'):format(
TITLE_CLASS,
args.title or DEFAULT_TITLE_FORMAT:format(M.headword_data.pagename)
),
"|-",
"|",
}, "\n") .. "\n"
end
-- Closes the wikitable and the wrapper opened by make_top, with the notes block
-- in between.
function export.make_bottom(args)
local notes = args and nonempty(args.notes)
if not notes then
-- The blank line is what the template emitted; kept so the parser sees
-- byte-identical wikitext.
return "|}\n\n</div>"
end
return ('|}\n<div class="%s">\n%s\n</div>\n</div>'):format(NOTES_CLASS, notes)
end
local function split_args(args)
local top_args, bottom_args = {}, {}
for k, v in pairs(args or {}) do
if bottom_params[k] then
bottom_args[k] = v
else
top_args[k] = v
end
end
return top_args, bottom_args
end
-- Builds a complete table around `contents`.
function export.make_table(args, contents)
local top_args, bottom_args = split_args(args)
return export.make_top(top_args) .. contents .. export.make_bottom(bottom_args)
end
-- As export.make_table, for boxes.
function export.make_box(args, contents)
local top_args, bottom_args = split_args(args)
return export.make_box_top(top_args) .. contents .. export.make_bottom(bottom_args)
end
-- Implementation of {{inflection-table-top}}. Other modules should call
-- make_top directly instead.
function export.top(frame)
local args = M.parameters.process(frame:getParent().args, top_params, nil, "inflection-table", "top")
return export.make_top(args)
end
-- Implementation of {{inflection-table-bottom}}. See the note on export.top.
function export.bottom(frame)
local args = M.parameters.process(frame:getParent().args, bottom_params, nil, "inflection-table", "bottom")
return export.make_bottom(args)
end
-- Implementation of {{inflection-box-top}}. See the note on export.top.
function export.box_top(frame)
local args = M.parameters.process(frame:getParent().args, box_top_params, nil, "inflection-table", "box_top")
return export.make_box_top(args)
end
-- Boxes close exactly like plain tables, so these are aliases rather than
-- separate implementations.
export.make_box_bottom = export.make_bottom
export.box_bottom = export.bottom
return export
6kiz9pqaah1j8t61f7zr7ltwi2gyzul
88731
88730
2026-08-02T07:32:45Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Module:inflection-table]]
88730
Scribunto
text/plain
local export = {}
local M = require("Module:module loader").init({
require = {
parameters = "Module:parameters",
},
loadData = {
headword_data = "Module:headword/data",
},
})
local concat = table.concat
local insert = table.insert
local WRAPPER_CLASS = "inflection-table-wrapper"
local TABLE_CLASS = "inflection-table"
local TITLE_CLASS = "inflection-table-title"
local NO_TITLE_CLASS = "inflection-table-no-title"
local NOTES_CLASS = "inflection-table-notes"
local COLLAPSIBLE_CLASSES = "inflection-table-collapsible inflection-table-collapsed no-vc"
local VS_SWITCHER_CLASS = "vsSwitcher"
local VS_TOGGLE_CLASS = "vsToggleElement"
local BOX_CLASS = "inflection-box"
local BOX_CONTENT_CLASS = "inflection-box-content"
local BOX_NARROW_CLASS = "inflection-table-narrow"
local TR_ALONGSIDE_CLASS = "tr-alongside"
local FLOW_VERTICAL_CLASS = "flow-vertical"
local NO_TITLE_MARKER = "-"
local DEFAULT_PALETTE = "grey"
local DEFAULT_TOGGLE_CATEGORY = "inflection"
local DEFAULT_TITLE_FORMAT = "Inflection of ''%s''"
local VERTICAL_FLOW = "vertical"
local BASE_STYLE = "width: fit-content"
-- Palettes recognized by [[MediaWiki:Gadget-Palette.css]].
local PALETTES = {
red = true,
scarlet = true,
orange = true,
amber = true,
yellow = true,
lime = true,
green = true,
teal = true,
cyan = true,
blue = true,
indigo = true,
purple = true,
magenta = true,
rose = true,
grey = true,
brown = true,
}
local top_params = {
title = true,
tall = true,
class = true,
["min-width"] = true,
palette = true,
category = true,
lang = true,
["vs-category"] = true,
vsToggleElement = true,
}
local bottom_params = {
notes = true,
}
local box_top_params = {
title = true,
flow = true,
category = true,
}
local function nonempty(value)
return value ~= nil and value ~= "" and value or nil
end
-- Builds the opening <div> and the wikitable header. The markup is deliberately
-- unbalanced -- {{inflection-table-bottom}} closes both -- so this is assembled
-- as text rather than through mw.html, which cannot emit an unclosed node.
function export.make_top(args)
local palette = args.palette or DEFAULT_PALETTE
if not PALETTES[palette] then
error(("Unrecognized palette '%s'; see [[MediaWiki:Gadget-Palette.css]] for the recognized palettes.")
:format(palette))
end
local no_title = args.title == NO_TITLE_MARKER
local wrapper_classes = { WRAPPER_CLASS }
if no_title then
insert(wrapper_classes, NO_TITLE_CLASS)
end
if nonempty(args.tall) then
insert(wrapper_classes, COLLAPSIBLE_CLASSES)
end
if nonempty(args.class) then
insert(wrapper_classes, args.class)
end
local style = BASE_STYLE
local min_width = nonempty(args["min-width"])
if min_width then
style = ("%s; min-width: %s"):format(style, min_width)
end
local vs_category = nonempty(args["vs-category"])
local table_classes = { TABLE_CLASS }
if nonempty(args.lang) then
insert(table_classes, ("%s-%s"):format(TABLE_CLASS, args.lang))
end
if vs_category then
insert(table_classes, VS_SWITCHER_CLASS)
end
local lines = {
('<div class="%s" style="%s" data-wikt-palette-p="%s" data-toggle-category="%s">'):format(
concat(wrapper_classes, " "),
style,
palette,
args.category or DEFAULT_TOGGLE_CATEGORY
),
('{| class="%s"%s'):format(
concat(table_classes, " "),
vs_category and (' data-toggle-category="%s"'):format(vs_category) or ""
),
}
if not no_title then
insert(lines, ('|+ class="%s%s" | %s'):format(
TITLE_CLASS,
nonempty(args.vsToggleElement) and " " .. VS_TOGGLE_CLASS or "",
args.title or DEFAULT_TITLE_FORMAT:format(M.headword_data.pagename)
))
insert(lines, "|-")
end
return concat(lines, "\n") .. "\n"
end
-- Builds the opening markup for {{inflection-box-top}}, a wrapper holding
-- several complete inflection tables side by side. Boxes are always collapsible
-- and always place transliterations alongside, so those classes are fixed. No
-- palette is emitted: each table inside the box carries its own.
-- {{inflection-table-bottom}} closes this too.
function export.make_box_top(args)
local classes = {
WRAPPER_CLASS,
BOX_CLASS,
BOX_NARROW_CLASS,
COLLAPSIBLE_CLASSES,
TR_ALONGSIDE_CLASS,
}
if args.flow == VERTICAL_FLOW then
insert(classes, FLOW_VERTICAL_CLASS)
end
return concat({
('<div class="%s" style="%s" data-toggle-category="%s">'):format(
concat(classes, " "),
BASE_STYLE,
args.category or DEFAULT_TOGGLE_CATEGORY
),
('{| class="%s"'):format(BOX_CONTENT_CLASS),
('|+ class="%s" | %s'):format(
TITLE_CLASS,
args.title or DEFAULT_TITLE_FORMAT:format(M.headword_data.pagename)
),
"|-",
"|",
}, "\n") .. "\n"
end
-- Closes the wikitable and the wrapper opened by make_top, with the notes block
-- in between.
function export.make_bottom(args)
local notes = args and nonempty(args.notes)
if not notes then
-- The blank line is what the template emitted; kept so the parser sees
-- byte-identical wikitext.
return "|}\n\n</div>"
end
return ('|}\n<div class="%s">\n%s\n</div>\n</div>'):format(NOTES_CLASS, notes)
end
local function split_args(args)
local top_args, bottom_args = {}, {}
for k, v in pairs(args or {}) do
if bottom_params[k] then
bottom_args[k] = v
else
top_args[k] = v
end
end
return top_args, bottom_args
end
-- Builds a complete table around `contents`.
function export.make_table(args, contents)
local top_args, bottom_args = split_args(args)
return export.make_top(top_args) .. contents .. export.make_bottom(bottom_args)
end
-- As export.make_table, for boxes.
function export.make_box(args, contents)
local top_args, bottom_args = split_args(args)
return export.make_box_top(top_args) .. contents .. export.make_bottom(bottom_args)
end
-- Implementation of {{inflection-table-top}}. Other modules should call
-- make_top directly instead.
function export.top(frame)
local args = M.parameters.process(frame:getParent().args, top_params, nil, "inflection-table", "top")
return export.make_top(args)
end
-- Implementation of {{inflection-table-bottom}}. See the note on export.top.
function export.bottom(frame)
local args = M.parameters.process(frame:getParent().args, bottom_params, nil, "inflection-table", "bottom")
return export.make_bottom(args)
end
-- Implementation of {{inflection-box-top}}. See the note on export.top.
function export.box_top(frame)
local args = M.parameters.process(frame:getParent().args, box_top_params, nil, "inflection-table", "box_top")
return export.make_box_top(args)
end
-- Boxes close exactly like plain tables, so these are aliases rather than
-- separate implementations.
export.make_box_bottom = export.make_bottom
export.box_bottom = export.bottom
return export
6kiz9pqaah1j8t61f7zr7ltwi2gyzul
Teamplaid:R:gd:Oftedal
10
17874
88732
2025-10-25T20:18:08Z
en>AutoDooz
0
converted to Module:quote to handle parameter checking and facilitate future enhancements
88732
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Oftedal
|first=M.
|authorlink=Magne Oftedal
|title=A linguistic survey of the Gaelic dialects of Scotland, Vol. III: The Gaelic of Leurbost, Isle of Lewis
|year=1956
|location=Oslo
|publisher=Norsk Tidsskrift for Sprogvidenskap
|pageparam=1
}}<noinclude>{{documentation}}</noinclude>
30u9vdkbjevh56qt8nxe7wh9xc3zx4e
88733
88732
2026-08-02T10:14:52Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:R:gd:Oftedal]]
88732
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Oftedal
|first=M.
|authorlink=Magne Oftedal
|title=A linguistic survey of the Gaelic dialects of Scotland, Vol. III: The Gaelic of Leurbost, Isle of Lewis
|year=1956
|location=Oslo
|publisher=Norsk Tidsskrift for Sprogvidenskap
|pageparam=1
}}<noinclude>{{documentation}}</noinclude>
30u9vdkbjevh56qt8nxe7wh9xc3zx4e
Teamplaid:R:gd:Borgstrom1937
10
17875
88734
2025-10-25T20:38:28Z
en>AutoDooz
0
converted to Module:quote to handle parameter checking and facilitate future enhancements
88734
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Borgstrøm |first=Carl Hj. |authorlink=Carl Borgstrøm
|title=The dialect of Barra in the Outer Hebrides
|year=1937 |location=Oslo |publisher=Norsk Tidsskrift for Sprogvidenskap
|pageparam = 2
}}<noinclude>{{documentation}}</noinclude>
9uexcpxgfq9apomtemdu1797czht1z8
88735
88734
2026-08-02T10:15:04Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:R:gd:Borgstrom1937]]
88734
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Borgstrøm |first=Carl Hj. |authorlink=Carl Borgstrøm
|title=The dialect of Barra in the Outer Hebrides
|year=1937 |location=Oslo |publisher=Norsk Tidsskrift for Sprogvidenskap
|pageparam = 2
}}<noinclude>{{documentation}}</noinclude>
9uexcpxgfq9apomtemdu1797czht1z8
Teamplaid:R:gd:TGSI:23
10
17876
88736
2025-12-10T15:32:15Z
en>AutoDooz
0
converted to Module:quote to handle parameter checking and facilitate future enhancements
88736
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|en|author=Rev. C. M. Robertson|chapter=Skye Gaelic|pages=54-88|title=Transactions of the Gaelic Society of Inverness, Volume XXIII: 1898-99|url=https://dn720006.ca.archive.org/0/items/transactions23gaeluoft/transactions23gaeluoft.pdf|year=1902|publisher=Gaelic Society of Inverness}}<!--
--><noinclude>{{documentation}}</noinclude>
58rttruz5kibzwvmpi0ensf1be9ui47
88737
88736
2026-08-02T10:15:15Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:R:gd:TGSI:23]]
88736
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|en|author=Rev. C. M. Robertson|chapter=Skye Gaelic|pages=54-88|title=Transactions of the Gaelic Society of Inverness, Volume XXIII: 1898-99|url=https://dn720006.ca.archive.org/0/items/transactions23gaeluoft/transactions23gaeluoft.pdf|year=1902|publisher=Gaelic Society of Inverness}}<!--
--><noinclude>{{documentation}}</noinclude>
58rttruz5kibzwvmpi0ensf1be9ui47
Teamplaid:R:gd:Wentworth:2003
10
17877
88738
2025-10-25T20:52:08Z
en>AutoDooz
0
converted to Module:quote to handle parameter checking and facilitate future enhancements
88738
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Wentworth
|first=Roy
|title=Gaelic Words and Phrases From Wester Ross / Faclan is Abairtean à Ros an Iar
|year=2003
|isbn=1900901218
|publisher=CLÀR
|location=Inverness
|pageparam=1
}}<noinclude>{{refcat}}</noinclude>
7rite97pkivq8drcuie0a9hptqmyf94
88739
88738
2026-08-02T10:15:25Z
Altronic
4137
Chaidh 1 mhùthadh ion-phortachadh o [[:en:Template:R:gd:Wentworth:2003]]
88738
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Wentworth
|first=Roy
|title=Gaelic Words and Phrases From Wester Ross / Faclan is Abairtean à Ros an Iar
|year=2003
|isbn=1900901218
|publisher=CLÀR
|location=Inverness
|pageparam=1
}}<noinclude>{{refcat}}</noinclude>
7rite97pkivq8drcuie0a9hptqmyf94