Wicidestun cywikisource https://cy.wikisource.org/wiki/Hafan MediaWiki 1.46.0-wmf.21 first-letter Media Arbennig Sgwrs Defnyddiwr Sgwrs Defnyddiwr Wicidestun Sgwrs Wicidestun Delwedd Sgwrs Delwedd MediaWici Sgwrs MediaWici Nodyn Sgwrs Nodyn Cymorth Sgwrs Cymorth Categori Sgwrs Categori Tudalen Sgwrs Tudalen Indecs Sgwrs Indecs TimedText TimedText talk Modiwl Sgwrs modiwl Event Event talk Nodyn:Para 10 42781 161561 87904 2026-03-27T01:20:09Z AlwynapHuw 1710 161561 wikitext text/x-wiki <code><nowiki>|</nowiki>{{#if:{{{1|}}}|<span style="white-space:nowrap;">{{{1}}}</span><nowiki>=</nowiki>|}}{{{2|}}}</code><noinclude> {{Documentation}} </noinclude> 69rq4aouqbrjassmelr1rjvzmlm3c3o Nodyn:Fmbox 10 46141 161557 95131 2026-03-27T01:10:20Z AlwynapHuw 1710 Yn ailgyfeirio at [[Nodyn:Dolengyfeirio]] 161557 wikitext text/x-wiki #ailgyfeirio [[Nodyn:Dolengyfeirio]] 6vfct4gq7aibgizvx5tm73z80un5bev 161558 161557 2026-03-27T01:11:08Z AlwynapHuw 1710 Wedi dileu ailgyfeiriad i [[Nodyn:Dolengyfeirio]] 161558 wikitext text/x-wiki {{#invoke:Message box|fmbox|plainlinks={{{plainlinks|yes}}}}}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> oieddw57hf0pjq1rxypu544i15g9gwn Nodyn:Music 10 82674 161549 2026-03-27T00:11:01Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "<includeonly><span class="music-symbol" style="font-family: Arial Unicode MS, Lucida Sans Unicode;">{{#switch: {{lc:{{{1}}}}} | ♭ | b | flat = &#x266d; | 𝄫 | bb | double flat | doubleflat = [[File:Doubleflat.svg|{{{size|x12px}}}|double flat]] | bbb | triple flat | tripleflat = [[File:Llpd-3.svg|{{{size|x12px}}}|triple flat]] | d | half flat | halfflat = [[File:Llpd-½.svg|{{{size|x12px}}}|half flat]] | flat stroke | flatstroke = File:Arabi..." 161549 wikitext text/x-wiki <includeonly><span class="music-symbol" style="font-family: Arial Unicode MS, Lucida Sans Unicode;">{{#switch: {{lc:{{{1}}}}} | ♭ | b | flat = &#x266d; | 𝄫 | bb | double flat | doubleflat = [[File:Doubleflat.svg|{{{size|x12px}}}|double flat]] | bbb | triple flat | tripleflat = [[File:Llpd-3.svg|{{{size|x12px}}}|triple flat]] | d | half flat | halfflat = [[File:Llpd-½.svg|{{{size|x12px}}}|half flat]] | flat stroke | flatstroke = [[File:Arabic music notation half flat.svg|{{{size|x12px}}}|flat stroke]] | db | three quarter flat | threequarterflat = [[File:Three quarter flat.svg|{{{size|x12px}}}|three quarter flat]] | doubleflat stroke | double flat stroke | double flatstroke | doubleflatstroke = [[File:Llpd-1½ var.svg|{{{size|x12px}}}|double flat stroke]] | ♮ | natural = &#x266e; | ♯ | # | sharp = &#x266f; | 𝄪 | x | ## | double sharp | doublesharp = [[File:DoubleSharp.svg|{{{size|x8px}}}|double sharp]] | ### | #x | x# | triple sharp | triplesharp = &#x266f;[[File:DoubleSharp.svg|{{{size|x8px}}}|triple sharp]] | t | half sharp | halfsharp = [[File:Arabic music notation half sharp.svg|{{{size|x12px}}}|half sharp]] | #t | three quarter sharp | threequartersharp = [[File:Llpd+1½.svg|{{{size|x12px}}}|three quarter sharp]] | 7 | septimal | septimal quarter tone - | septimal quarter tone -49 | septimal quarter tone (-49)<!-- distance the harmonic seventh (7:4) differs from the large just minor seventh (9:5)--> | septimalquartertone- = [[File:7 rightside up.png|{{{size|x16px}}}|7]] | l<!-- for L, only lowercases in this list --> | septimal+ | septimal quarter tone (+49) | septimal quarter tone +49 | septimal quarter tone + | septimalquartertone+ = [[File:7 upside down.png|{{{size|x16px}}}|7 upside-down]] | eleventh partial (+)<!--[difference between 11:8 & 4:3]--> | eleventh partial + | eleventhpartial+ | 11+ | 11 up | 11up | up = ↑ | eleventh partial (-) | eleventh partial - | eleventhpartial- | 11- | 11 down | 11down | down = ↓ | thirteenth partial (+)<!--[difference between 13:8 & 8:5]--> | thirteenth partial + | thirteenthpartial+ | 13 = [[File:13 rightside up.png|x12px|13]] | 13upsidedown | 13 upsidedown | 13 upside down | thirteenth partial (-) | thirteenth partial - | thirteenthpartial- | 13U | E1 | 13upsidedown = [[File:13 upside down.png|{{{size|x12px}}}|13 upside down]] | 17 = [[File:17 rightside up.png|x12px|17]] | 17U | L1 | 17 upsidedown | 17 upside down | 17upsidedown= [[File:17 upside down.png|{{{size|x12px}}}|17 upside down]] | 19 = [[File:19 rightside up.png|{{{size|x12px}}}|19]] | 19U | 19 upsidedown | 19 upside down | 19upsidedown= [[File:19 upside down.png|{{{size|x12px}}}|19U]] | 23= <sup>23</sup> | 29= <sup>29</sup> | 31= <sup>31</sup> | 31U | 1E | 31 upside down = <sup>1E</sup> | wholenote | whole note | whole | semibreve = [[File:Figure rythmique ronde.svg|{{{size|10px}}}|whole note]]<!--File:WholeNote.svg doesn't match the others here--> | halfnote | half note | half | minim = [[File:Figure rythmique blanche hampe haut.svg|{{{size|6px}}}|half note]]<!--File:Half note with upwards stem.svg doesn't match the others here--> | quarternote | quarter note | quarter | crotchet = [[File:Figure rythmique noire hampe haut.svg|{{{size|6px}}}|quarter note]]<!--File:Quarter note with upwards stem.svg doesn't match the others here--> | eighthnote | eighth note | eighth | quaver = [[File:Figure rythmique croche hampe haut.svg|{{{size|10px}}}|eighth note]] | eighthnotebeam | eighth note beam | eighthbeam | eighth beam | quaverbeam | quaver beam = [[File:Figure rythmique deux croches lien haut.svg|{{{size|20px}}}|beamed eighth notes]] | sixteenthnote | sixteenth note | sixteenth | semiquaver = [[File:Figure rythmique double croche hampe haut.svg|{{{size|10px}}}|sixteenth note]] | sixteenthnotebeam | sixteenth note beam | sixteenthbeam | sixteenth beam | semiquaverbeam | semiquaver beam = [[File:Figure rythmique deux double croches lien haut.svg|{{{size|20px}}}|beamed sixteenth notes]] | thirtysecondnote | thirtysecond note | thirty-secondnote | thirty-second note | thirtysecond | thirty-second | demisemiquaver = [[File:Figure rythmique triple croche hampe haut.svg|{{{size|10px}}}|thirty-second note]] | sixtyfourthnote | sixtyfourth note | sixty-fourthnote | sixty-fourth note | sixtyfourth | sixty-fourth | hemidemisemiquaver = [[File:64th note.svg|{{{size|10px}}}|sixty-fourth note]] | dot | dot = . | dottedquarter | dotted quarter | dottedcrotchet | dotted crotchet = <span class="nowrap">[[File:Figure rythmique noire hampe haut.svg|{{{size|6px}}}|dotted quarter note]].</span><!--File:Dotted quarter note.png doesn't match the others here due to its ledger line--> | dottedhalf | dotted half | dottedminim | dotted minim = <span class="nowrap">[[File:Figure rythmique blanche hampe haut.svg|{{{size|6px}}}|dotted half note]].</span> | wholerest | semibreverest | semibreve rest | whole rest = [[File:Whole rest.svg|{{{size|18px}}}|whole rest]] | halfrest | minimrest | minim rest | half rest = [[File:Half rest.svg|{{{size|18px}}}|half rest]] | quarterrest | quarter rest | crotchet rest | crotchetrest = [[File:QuarterRest.svg|{{{size|10px}}}|quarter rest]] | eighthrest | eighth rest | quaver rest | quaverrest = [[File:8thRest.svg|{{{size|10px}}}|eighth rest]] | sixteenthrest | semiquaver rest | sixteenth rest | semiquaverrest = [[File:16th rest.svg|{{{size|7px}}}|sixteenth rest]] | thirtysecondrest | thirtysecond rest | thirty-secondrest | thirty-second rest | demisemiquaver rest | demisemiquaverrest = [[File:32nd rest.svg|{{{size|9px}}}|thirty-second rest]] | treble | treble clef | trebleclef = [[File:GClef.svg|{{{size|16px}}}|treble clef]] | g clef | gclef = [[File:GClef.svg|{{{size|16px}}}|G clef]] | alto | alto clef | altoclef = [[File:CClef.svg|{{{size|16px}}}|alto clef]] | tenor | tenor clef | tenorclef = [[File:CClef.svg|{{{size|16px}}}|tenor clef]] | c clef | cclef = [[File:CClef.svg|{{{size|16px}}}|C clef]] | bass | bass clef | bassclef = [[File:FClef.svg|{{{size|16px}}}|bass clef]] | f clef | fclef = [[File:FClef.svg|{{{size|16px}}}|F clef]] | neutral | neutralclef | neutral clef = &#124;&#124; | common-time = [[File:Commontime.svg|{{{size|11px}}}|common time]] | alla-breve | cut-time = [[File:Allabreve.svg|{{{size|11px}}}|cut time]] | scale = [[File:Scale deg {{{2}}}.svg|8px|scale degree {{{2}}}]] | time | timesig | time sig | timesignature | time signature = {{Time signature|{{{2}}}|{{{3}}}}} | ° | diminished | dim = <sup>o</sup> | dimdeg = &deg; | ø | halfdim | half dim | halfdiminished | half diminished | dimslash = <sup>&oslash;</sup> | + | aug | augmented = <sup>+</sup> | δ <!-- lowercase, for Δ --> | maj | major | delta = Δ | 64 = {{sup sub | 6 | 4}} | 64 chord = {{sup sub | 6 | 4}} | 63 = {{sup sub | 6 | 3}} | 63 chord = {{sup sub | 6 | 3}} | 53 = {{sup sub | 5 | 3}} | 53 chord = {{sup sub | 5 | 3}} | c major = [[File:C-major a-minor.svg|{{{size|54px}}}|C major]] | a minor = [[File:C-major a-minor.svg|{{{size|54px}}}|A minor]] | f major = [[File:F-major d-minor.svg|{{{size|54px}}}|F major]] | d minor = [[File:F-major d-minor.svg|{{{size|54px}}}|D minor]] | b-flat major = [[File:B-flat-major g-minor.svg|{{{size|54px}}}|B-flat major]] | g minor = [[File:B-flat-major g-minor.svg|{{{size|54px}}}|G minor]] | e-flat major = [[File:E-flat-major c-minor.svg|{{{size|54px}}}|E-flat minor]] | c minor = [[File:E-flat-major c-minor.svg|{{{size|54px}}}|C minor]] | a-flat major = [[File:A-flat-major f-minor.svg|{{{size|54px}}}|A-flat major]] | f minor = [[File:A-flat-major f-minor.svg|{{{size|54px}}}|F minor]] | d-flat major = [[File:D-flat-major b-flat-minor.svg|{{{size|54px}}}|D-flat major]] | b-flat minor = [[File:D-flat-major b-flat-minor.svg|{{{size|54px}}}|B-flat minor]] | g-flat major = [[File:G-flat-major e-flat-minor.svg|{{{size|54px}}}|G-flat major]] | e-flat minor = [[File:G-flat-major e-flat-minor.svg|{{{size|54px}}}|E-flat minor]] | c-flat major = [[File:C-flat-major a-flat-minor.svg|{{{size|54px}}}|C-flat major]] | a-flat minor = [[File:C-flat-major a-flat-minor.svg|{{{size|54px}}}|A-flat minor]] | g major = [[File:G-major e-minor.svg|{{{size|54px}}}|G major]] | e minor = [[File:G-major e-minor.svg|{{{size|54px}}}|E minor]] | d major = [[File:D-major b-minor.svg|{{{size|54px}}}|D major]] | b minor = [[File:D-major b-minor.svg|{{{size|54px}}}|B minor]] | a major = [[File:A-major f-sharp-minor.svg|{{{size|54px}}}|A major]] | f-sharp minor = [[File:A-major f-sharp-minor.svg|{{{size|54px}}}|F-sharp minor]] | e major = [[File:E-major c-sharp-minor.svg|{{{size|54px}}}|E major]] | c-sharp minor = [[File:E-major c-sharp-minor.svg|{{{size|54px}}}|C-sharp minor]] | b major = [[File:B-major g-sharp-minor.svg|{{{size|54px}}}|B major]] | g-sharp minor = [[File:B-major g-sharp-minor.svg|{{{size|54px}}}|G-sharp minor]] | f-sharp major = [[File:F-sharp-major d-sharp-minor.svg|{{{size|54px}}}|F-sharp major]] | d-sharp minor = [[File:F-sharp-major d-sharp-minor.svg|{{{size|54px}}}|D-sharp minor]] | c-sharp major = [[File:C-sharp-major a-sharp-minor.svg|{{{size|54px}}}|C-sharp major]] | a-sharp minor = [[File:C-sharp-major a-sharp-minor.svg|{{{size|54px}}}|A-sharp minor]] | left repeat | leftrepeat = [[File:Ritornello 1.JPG|{{{size|x20px}}}|left repeat]] | right repeat | rightrepeat = [[File:Ritornello 2.JPG|{{{size|x20px}}}|right repeat]] | #default = {{error|Error using {{tlx|music}}: unable to parse music symbol "{{{1|}}}"|tag=span}} }}</span></includeonly><noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> t7vieche2lubcto11qq3ub5lslh15ti Nodyn:(( 10 82675 161550 2026-03-27T00:12:18Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "{{<noinclude> {{documentation}} </noinclude>" 161550 wikitext text/x-wiki {{<noinclude> {{documentation}} </noinclude> 7ddca00qmssfls0dctzbj32xy1q28ir Nodyn:)) 10 82676 161551 2026-03-27T00:17:23Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "}}<noinclude> {{documentation}} </noinclude>" 161551 wikitext text/x-wiki }}<noinclude> {{documentation}} </noinclude> fmm8htexq13hwrjrvzcsiy59gv65l36 Nodyn:Distinguish 10 82677 161552 2026-03-27T00:22:07Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "{{Hatnote|Peidiwch â drysu'r pwnc hwn â [[:{{{1}}}]]{{ #if: {{{3|}}}{{{4|}}} | , [[:{{{2}}}]], {{ #if: {{{4|}}} | [[:{{{3}}}]], neu [[:{{{4}}}]] | neu [[:{{{3}}}]] }} | {{ #if: {{{2|}}} | &nbsp;neu [[:{{{2}}}]] }} }}.}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. --> {{Documentation}} <!-- Add categories to the /doc..." 161552 wikitext text/x-wiki {{Hatnote|Peidiwch â drysu'r pwnc hwn â [[:{{{1}}}]]{{ #if: {{{3|}}}{{{4|}}} | , [[:{{{2}}}]], {{ #if: {{{4|}}} | [[:{{{3}}}]], neu [[:{{{4}}}]] | neu [[:{{{3}}}]] }} | {{ #if: {{{2|}}} | &nbsp;neu [[:{{{2}}}]] }} }}.}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. --> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> 00ic6z7p98vtw40jw73rxt4i6pkwpza Modiwl:Yesno 828 82678 161553 2026-03-27T00:34:52Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "-- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y'..." 161553 Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end swdskn7svew8i9wuydn9uj5l3r2ghcs Nodyn:Documentation/docspace 10 82679 161554 2026-03-27T00:36:43Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "{{#switch: {{SUBJECTSPACE}} | {{ns:0}} | {{ns:File}} | {{ns:MediaWiki}} | {{ns:Category}} = {{TALKSPACE}} | #default = {{SUBJECTSPACE}} }}<noinclude> {{documentation|content= This subtemplate of {{tl|documentation}} is used to determine the namespace of the documentation page. }}</noinclude>" 161554 wikitext text/x-wiki {{#switch: {{SUBJECTSPACE}} | {{ns:0}} | {{ns:File}} | {{ns:MediaWiki}} | {{ns:Category}} = {{TALKSPACE}} | #default = {{SUBJECTSPACE}} }}<noinclude> {{documentation|content= This subtemplate of {{tl|documentation}} is used to determine the namespace of the documentation page. }}</noinclude> 7f8iymss9sr4v7f4t5pza1arwjogrv3 Nodyn:Documentation/template page 10 82680 161555 2026-03-27T00:39:37Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "{{#switch: {{SUBPAGENAME}} | sandbox | testcases = {{BASEPAGENAME}} | #default = {{PAGENAME}} }}<noinclude>{{documentation|content= This subtemplate of {{tl|documentation}} is used to determine the template page name. }}</noinclude>" 161555 wikitext text/x-wiki {{#switch: {{SUBPAGENAME}} | sandbox | testcases = {{BASEPAGENAME}} | #default = {{PAGENAME}} }}<noinclude>{{documentation|content= This subtemplate of {{tl|documentation}} is used to determine the template page name. }}</noinclude> fenc3r6oe2sito28b1d8xgyo9gpq5uf Nodyn:Dolengyfeirio 10 82681 161556 2026-03-27T00:53:33Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "<includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude>" 161556 wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 8nnude79i1y2v6yy2z7j285k1k4v8p3 Nodyn:Hatnote 10 82682 161559 2026-03-27T01:11:58Z AlwynapHuw 1710 Yn ailgyfeirio at [[Nodyn:Dolengyfeirio]] 161559 wikitext text/x-wiki #ailgyfeirio [[Nodyn:Dolengyfeirio]] 6vfct4gq7aibgizvx5tm73z80un5bev Nodyn:Music/doc 10 82683 161560 2026-03-27T01:14:25Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "{{documentation subpage}} {{Distinguish|Template:Music topics}} {{Commons|Template:Music}} <!--Hopefully the inline style attribute will be replace by a class reference to "accidental" in [[MediaWiki:Common.css]]--> {{tl|Music}} renders Western music notation of various types into Wikipedia and improves cross-browser support for music symbols. Per [[Wikipedia:Manual of Style (music)#Accidentals]] this template (or the terms "flat", etc.) should be used in pref..." 161560 wikitext text/x-wiki {{documentation subpage}} {{Distinguish|Template:Music topics}} {{Commons|Template:Music}} <!--Hopefully the inline style attribute will be replace by a class reference to "accidental" in [[MediaWiki:Common.css]]--> {{tl|Music}} renders Western music notation of various types into Wikipedia and improves cross-browser support for music symbols. Per [[Wikipedia:Manual of Style (music)#Accidentals]] this template (or the terms "flat", etc.) should be used in preference to the lowercase letter "b" and the number sign (#). The images used here are categorized at [[:commons:Category:Template:Music]], so if you change an image used please try and remember to update the categorization. ==Accidentals== The template correctly renders Unicode sharps ({{music|sharp}}), flats ({{music|flat}}), and natural signs ({{music|natural}}) in [[Internet Explorer]] which would otherwise display [[Mojibake|empty squares]] unless a full Unicode font is chosen in its Preferences. The choice of fonts also improves the rendering in other browsers on [[Microsoft Windows]] such as [[Mozilla Firefox]]. See the tables below to compare the results in your current browser. The template makes use of [[Scalable Vector Graphics|SVG]] to display double flat ({{music|doubleflat}}), double sharp ({{music|doublesharp}}), and microtonal signs since the corresponding Unicode characters are not widely supported. {| class="wikitable" style="text-align: center;" ! style="width:6em;" | Symbol ! style="width:6em;" | Unicode<br/>entity ! style="width:6em;" | Unicode<br/>result ! style="width:18em;" | Template<br/>text ! style="width:6em;" | Template<br/>result |- ! [[Flat (music)|Flat]] | <code>&amp;#x266d;</code> || &#x266d; | {{tlc|music|flat}}<br/>''or'' {{tlc|music|b}}<br/>''or'' {{tlc|music|♭}}<br/> ''or'' {{tlc|flat}} || {{music|flat}} |- ! [[Natural (music)|Natural]] | <code>&amp;#x266e;</code> || &#x266e; | {{tlc|music|natural}}<br/>''or'' {{tlc|music|♮}} || {{music|natural}} |- ! [[Sharp (music)|Sharp]] | <code>&amp;#x266f;</code> || &#x266f; | {{tlc|music|sharp}}<br/>''or'' {{tlc|music|#}}<br/>''or'' {{tlc|music|♯}}<br/> ''or'' {{tlc|sharp}} || {{music|sharp}} |- ! Double<br/>flat | <code>&amp;#x1D12B;</code> || &#x1D12B; | {{tlc|music|doubleflat}}<br/>''or'' {{tlc|music|bb}}<br/>''or'' {{tlc|music|𝄫}} || {{music|doubleflat}} |- ! Double sharp | <code>&amp;#x1D12A;</code> || &#x1D12A; | {{tlc|music|doublesharp}}<br/>''or'' {{tlc|music|##}}<br/>''or'' {{tlc|music|x}}<br/>''or'' {{tlc|music|𝄪}} || {{music|doublesharp}} |- ! Triple flat|Triple<br />flat | <code> </code> || | {{tlc|music|tripleflat}}<br/>''or'' {{tlc|music|bbb}} || {{music|tripleflat}} |- ! Triple sharp | <code> </code> || | {{tlc|music|triplesharp}}<br/>''or'' {{tlc|music|###}}<br/> ''or'' {{tlc|music|#x}} || {{music|triplesharp}} |- ! Half flat|Half<br/>flat | <code>&amp;#x1D133;</code> || &#x1D133; | {{tlc|music|halfflat}}<br/>''or'' {{tlc|music|d}} || {{music|halfflat}} |- ! Half sharp|Half<br/>sharp | <code>&amp;#x1D132;</code> || &#x1D132; | {{tlc|music|halfsharp}}<br/>''or'' {{tlc|music|t}} || {{music|halfsharp}} |- ! Flat<br/>stroke | <code>&amp;#x1D133;</code> || &#x1D133; | {{tlc|music|flatstroke}} || {{music|flatstroke}} |- ! Double<br/>flat<br/>stroke | <code> </code> || | {{tlc|music|doubleflatstroke}} || {{music|doubleflatstroke}} |- ! [[Three quarter flat]] | <code> </code> || | {{tlc|music|threequarterflat}}<br/>''or'' {{tlc|music|db}} || {{music|threequarterflat}} |- ! [[Three quarter sharp]] | <code> </code> || | {{tlc|music|threequartersharp}}<br/>''or'' {{tlc|music|#t}} || {{music|threequartersharp}} |- ! [[Septimal quarter tone]] (-) | <code> </code> || | {{tlc|music|7}} ''or''<br/>{{tlc|music|septimal}} || {{music|7}} |- ! Septimal quarter tone (+) | <code> </code> || | {{tlc|music|L}} ''or''<br/>{{tlc|music|septimal+}} || {{music|L}} |- ! [[11th partial]] [53 cents] (-) | <code> </code> || | {{tlc|music|down}}<br/>''or'' {{tlc|music|11U}} || {{music|down}} |- ! 11th partial [difference between 11:8 & 4:3] (+) | <code> </code> || | {{tlc|music|up}}<br/>''or'' {{tlc|music|11}} || {{music|up}} |- ! [[13th partial]] [26.8 cents] (-) | <code> </code> || | {{tlc|music|E1}} ''or''<br/> {{tlc|music|13 upside down}}<br/>''or'' {{tlc|music|13U}} || {{music|13upsidedown}} |- ! 13th partial [difference between 13:8 & 8:5] (+) | <code> </code> || | {{tlc|music|13}} ''or''<br/>{{tlc|music|thirteen}} || {{music|13}} |- ! [[17th partial]] [34.28 cents] (-) | <code> </code> || | {{tlc|music|17 upside down}}<br/>''or'' {{tlc|music|L1}}<br/>''or'' {{tlc|music|17U}} || {{music|17upsidedown}} |- ! 17th partial [difference between 17:16 & 25:24] (+) | <code> </code> || | {{tlc|music|17}} || {{music|17}} |- ! [[19th partial]] [18.13 cents] (-) | <code> </code> || | {{tlc|music|19}} || {{music|19}} |- ! 19th partial [difference between 19:16 & 6:5] (+) | <code> </code> || | {{tlc|music|19 upside down}}<br/> ''or'' {{tlc|music|19U}} || {{music|19upsidedown}} |- ! [[:en:Twenty-third partial|23rd partial]] [38.05 cents] (+) | <code> </code> || | {{tlc|music|23}} || {{music|23}} |- ! [[:en:Twenty-ninth partial|29th partial]] [11.98 cents] (+) | <code> </code> || | {{tlc|music|29}} || {{music|29}} |- ! [[:en:Thirty-first partial|31st partial]] [-56.77 cents] (-) | <code> </code> || | {{tlc|music|1E}} ''or''<br/>{{tlc|music|31U}} ''or''<br/>{{tlc|31upsidedown}} || {{music|31 upside down}} |- ! 31st partial [56.77 cents] (+) | <code> </code> || | {{tlc|music|31}} || {{music|31}} |} ;Sample text The C{{music|#}} crops up very early in Beethoven's Symphony No. 3 in E{{music|b}}. ==Notes and rests== {| class="wikitable" style="text-align: center;" ! style="width:6em;" | Symbol ! style="width:6em;" | Unicode<br/>entity ! style="width:6em;" | Unicode<br/>result ! style="width:18em;" | Template<br/>text ! style="width:6em;" | Template<br/>result |- ! Whole<br/>note | <code>&amp;#x1d15d;</code> || &#x1d15d; | {{tlc|music|wholenote}}<br/>''or'' {{tlc|music|whole}}<br/>''or'' {{tlc|music|semibreve}} || {{music|whole}} |- ! Half<br/>note | <code>&amp;#x1d15e;</code> || &#x1d15e; | {{tlc|music|halfnote}}<br/>''or'' {{tlc|music|half}}<br/>''or'' {{tlc|music|minim}} || {{music|half}} |- ! Quarter<br/>note | <code>&amp;#x1d15f;</code> || &#x1d15f; | {{tlc|music|quarternote}}<br/>''or'' {{tlc|music|quarter}}<br/>''or'' {{tlc|music|crotchet}} || {{music|quarter}} |- ! Eighth<br/>note | <code>&amp;#x1d160;</code> || &#x1d160; | {{tlc|music|eighthnote}}<br/>''or'' {{tlc|music|eighth}}<br/>''or'' {{tlc|music|quaver}} || {{music|eighth}} |- ! Beamed<br/>eighth<br/>notes | || | {{tlc|music|eighthnotebeam}}<br/>''or'' {{tlc|music|eighthbeam}}<br/>''or'' {{tlc|music|quaverbeam}} || {{music|eighthbeam}} |- ! Sixteenth<br/>note | <code>&amp;#x1d161;</code> || &#x1d161; | {{tlc|music|sixteenthnote}}<br/>''or'' {{tlc|music|sixteenth}}<br/>''or'' {{tlc|music|semiquaver}} || {{music|sixteenth}} |- ! Beamed<br/>sixteenth<br/>notes | || | {{tlc|music|sixteenthnotebeam}}<br/>''or'' {{tlc|music|sixteenthbeam}}<br/>''or'' {{tlc|music|semiquaverbeam}} || {{music|sixteenthbeam}} |- ! Thirty-<br/>second<br/>note | || | {{tlc|music|thirty-secondnote}}<br/>''or'' {{tlc|music|thirty-second}}<br/>''or'' {{tlc|music|demisemiquaver}} || {{music|thirty-second}} |- ! Dot | . || . | {{tlc|music|dot}} || {{music|dot}} |- ! Dotted quarter<br/>note | <code>&amp;#x1d161;</code>. || &#x1d161;. | {{tlc|music|dottedquarter}}<br/>''or'' {{tlc|music|dottedcrotchet}} || {{music|dottedquarter}} |- ! Dotted half<br/>note | <code>&amp;#x1d15e;</code>. || &#x1d15e;. | {{tlc|music|dottedhalf}}<br/>''or'' {{tlc|music|dottedminim}} || {{music|dottedhalf}} |- ! Whole<br/>rest | <code>&amp;#x1d13b;</code> || &#x1d13b; | {{tlc|music|wholerest}}<br/>''or'' {{tlc|music|semibreverest}} || {{music|wholerest}} |- ! Half<br/>rest | <code>&amp;#x1d13c;</code> || &#x1d13c; | {{tlc|music|halfrest}}<br/>''or'' {{tlc|music|minimrest}} || {{music|halfrest}} |- ! Quarter<br/>rest | <code>&amp;#x1d13d;</code> || &#x1d13d; | {{tlc|music|quarterrest}}<br/>''or'' {{tlc|music|crotchetrest}} || {{music|quarterrest}} |- ! Eighth<br/>rest | <code>&amp;#x1d13e;</code> || &#x1d13e; | {{tlc|music|eighthrest}}<br/>''or'' {{tlc|music|quaverrest}} || {{music|eighthrest}} |- ! Sixteenth<br/>rest | <code>&amp;#x1d13f;</code> || &#x1d13f; | {{tlc|music|sixteenthrest}}<br/>''or'' {{tlc|music|semiquaverrest}} || {{music|sixteenthrest}} |- ! Thirty-<br/>second<br/>rest | || | {{tlc|music|thirtysecondrest}}<br/>''or'' {{tlc|music|demisemiquaverrest}} || {{music|thirtysecondrest}} |} Some browsers and typefaces support <code>&amp;#x2669;</code> (&#x2669;) and <code>&amp;#x266a;</code> (&#x266a;) for quarter and eighth notes, as well as <code>&amp;#x266b;</code> (&#x266b;) and <code>&amp;#x266c;</code> (&#x266c;) for beamed eighth-note and sixteenth-note pairs respectively, but since the display of these characters does not match any of the other (non-supported) notes and rests, this template does not use these characters. ;Sample text In place of the single whole note ({{music|semibreve}}), Chopin writes {{music|eighthrest}} {{music|halfnote}} {{music|quarter}} {{music|eighth}}, completely changing the profile of the music. ==Clefs== {| class="wikitable" style="text-align: center;" ! style="width:6em;" | Symbol ! style="width:16em;" | Template<br/>text ! style="width:6em;" | Template<br/>result |- ! Treble clef</br>''or'' G-clef | {{tlc|music|treble}}<br/>''or'' {{tlc|music|trebleclef}}<br/>''or'' {{tlc|music|gclef}} || {{music|trebleclef}} |- ! Alto<br/>clef | {{tlc|music|alto}}<br/>''or'' {{tlc|music|altoclef}} || {{music|altoclef}} |- ! Tenor<br/>clef | {{tlc|music|tenor}}<br/>''or'' {{tlc|music|tenorclef}} || {{music|tenorclef}} |- ! C-clef | {{tlc|music|cclef}} || {{music|cclef}} |- ! Bass clef</br>''or'' F-clef | {{tlc|music|bass}}<br/>''or'' {{tlc|music|bassclef}}</br>''or'' {{tlc|music|fclef}} || {{music|bassclef}} |- ! Neutral clef | {{tlc|music|neutral}}<br/>''or'' {{tlc|music|neutralclef}}</br> || {{music|neutralclef}} |} Note that there is no graphical distinction between treble clef and G-clef; alto clef, tenor clef and C-clef; bass clef and F-clef. The names preserve a difference in meaning and make the caption text (for screen readers) different. == Time signatures == {| class="wikitable" style="text-align: center;" ! style="width:6em;" | Symbol ! style="width:16em;" | Template<br/>text ! style="width:6em;" | Template<br/>result |- ! common-time | {{tlc|music|common-time}} || {{music|common-time}} |- ! cut-time | {{tlc|music|cut-time}}<br/>''or'' {{tlc|music|alla-breve}} || {{music|cut-time}} |- ! 2/4 | {{tlc|music|time|2|4}} || {{music|time|2|4}} |- ! 3/4 | {{tlc|music|time|3|4}} || {{music|time|3|4}} |- ! 6/8 | {{tlc|music|time|6|8}} || {{music|time|6|8}} |- ! 9/8 | {{tlc|music|time|9|8}} || {{music|time|9|8}} |- ! 12/8 | {{tlc|music|time|12|8}} || {{music|time|12|8}} |} For a ''general'' time signature, use {{tlc|music|time|top number|bottom number}}. This makes use of [[Template:Time signature]], which should not be used on its own. ==Scale degrees== Scale degrees are often represented as Arabic numerals with a hat on them and thus the root of a scale is <sub>{{music|scale|1}}</sub>. {| class="wikitable" style="text-align: center;" ! style="width:6em;" | Scale degree ! style="width:16em;" | Template<br/>text ! style="width:6em;" | Template<br/>result |- ! 1 | {{tlc|music|scale|1}} || {{music|scale|1}} |- ! 2 | {{tlc|music|scale|2}} || {{music|scale|2}} |- ! 3 | {{tlc|music|scale|3}} || {{music|scale|3}} |- ! 4 | {{tlc|music|scale|4}} || {{music|scale|4}} |- ! 5 | {{tlc|music|scale|5}} || {{music|scale|5}} |- ! 6 | {{tlc|music|scale|6}} || {{music|scale|6}} |- ! 7 | {{tlc|music|scale|7}} || {{music|scale|7}} |- ! 8 | {{tlc|music|scale|8}} || {{music|scale|8}} |- ! 9 | {{tlc|music|scale|9}} || {{music|scale|9}} |} ;Sample text A descending tetrachord could be written as <sub>{{music|scale|4}}</sub>-<sub>{{music|scale|3}}</sub>-<sub>{{music|scale|2}}</sub>-<sub>{{music|scale|1}}</sub>. ==Chord symbols== {| class="wikitable" style="text-align: center;" ! style="width:9em;" | Chord ! style="width:16em;" | Template<br/>text ! style="width:6em;" | Template<br/>result |- ! Diminished | {{tlc|music|dim}}<br/>''or'' {{tlc|music|dimdeg}} || {{music|dim}}<br/>''or'' {{music|dimdeg}} |- ! Half-diminished | {{tlc|music|halfdim}}<br/>''or'' {{tlc|music|dimslash}} || {{music|halfdim}} |- ! Augmented | {{tlc|music|+}}<br/>''or'' {{tlc|music|aug}} || {{music|aug}} |- ! Major | {{tlc|music|Δ}}<br/>''or'' {{tlc|music|delta}}<br/>''or'' {{tlc|music|major}}<br/>''or'' {{tlc|music|maj}} || {{music|major}} |- ! Root position | {{tlc|music|53}}<br/>''or'' {{tlc|music|53 chord}} || {{music|53}} |- ! First inversion | {{tlc|music|63}}<br/>''or'' {{tlc|music|63 chord}} || {{music|63}} |- ! Second inversion | {{tlc|music|64}}<br/>''or'' {{tlc|music|64 chord}} || {{music|64}} |} ;Sample text vii{{music|dim}} becomes vii{{music|dimslash}} in B{{music|flat}} minor by raising the G{{music|b}} to G{{music|natural}}. III becomes III{{music|aug}} in G{{music|#}} minor by raising the F{{music|#}} to F{{music|x}}. The F{{music|#}}{{music|major}}<sup>7</sup> is used to great effect in the last measure of the piece. ==Key signatures== Key signatures must be typed in using the names of the articles themselves on keys. Note that there is no visual difference between the major and minor key signatures, but the alt text is different. {| class="wikitable" style="text-align: center;" ! Sharps/Flats ! style="width:9em;" | Key signature (major) ! style="width:16em;" | Template<br/>text ! style="width:6em;" | Template<br/>result ! style="width:9em;" | Key signature (minor) ! style="width:16em; | Template<br/>text ! style="width:6em;" | Template<br/>result |- ! 7{{music|#}} ! [[C-sharp major|C{{music|#}} major]] | {{tlc|music|c-sharp major}} || {{music|c-sharp major}} ! [[A-sharp minor|A{{music|#}} minor]] | {{tlc|music|a-sharp minor}} || {{music|a-sharp minor}} |- ! 6{{music|#}} ! [[F-sharp major|F{{music|#}} major]] | {{tlc|music|f-sharp major}} || {{music|f-sharp major}} ! [[D-sharp minor|D{{music|#}} minor]] | {{tlc|music|d-sharp minor}} || {{music|d-sharp minor}} |- ! 5{{music|#}} ! [[B major]] | {{tlc|music|b major}} || {{music|b major}} ! [[G-sharp minor|G{{music|#}} minor]] | {{tlc|music|g-sharp minor}} || {{music|g-sharp minor}} |- ! 4{{music|#}} ! [[E major]] | {{tlc|music|e major}} || {{music|e major}} ! [[C-sharp minor|C{{music|#}} minor]] | {{tlc|music|c-sharp minor}} || {{music|c-sharp minor}} |- ! 3{{music|#}} ! [[A major]] | {{tlc|music|a major}} || {{music|a major}} ! [[F-sharp minor|F{{music|#}} minor]] | {{tlc|music|f-sharp minor}} || {{music|f-sharp minor}} |- ! 2{{music|#}} ! [[D major]] | {{tlc|music|d major}} || {{music|d major}} ! [[B minor]] | {{tlc|music|b minor}} || {{music|b minor}} |- ! 1{{music|#}} ! [[G major]] | {{tlc|music|g major}} || {{music|g major}} ! [[E minor]] | {{tlc|music|e minor}} || {{music|e minor}} |- ! 0 ! [[C major]] | {{tlc|music|c major}} || {{music|c major}} ! [[A minor]] | {{tlc|music|a minor}} || {{music|a minor}} |- ! 1{{music|b}} ! [[F major]] | {{tlc|music|f major}} || {{music|f major}} ! [[D minor]] | {{tlc|music|d minor}} || {{music|d minor}} |- ! 2{{music|b}} ! [[B-flat major|B{{music|b}} major]] | {{tlc|music|b-flat major}} || {{music|b-flat major}} ! [[G minor]] | {{tlc|music|g minor}} || {{music|g minor}} |- ! 3{{music|b}} ! [[E-flat major|E{{music|b}} major]] | {{tlc|music|e-flat major}} || {{music|e-flat major}} ! [[C minor]] | {{tlc|music|c minor}} || {{music|c minor}} |- ! 4{{music|b}} ! [[A-flat major|A{{music|b}} major]] | {{tlc|music|a-flat major}} || {{music|a-flat major}} ! [[F minor]] | {{tlc|music|f minor}} || {{music|f minor}} |- ! 5{{music|b}} ! [[D-flat major|D{{music|b}} major]] | {{tlc|music|d-flat major}} || {{music|d-flat major}} ! [[B-flat minor|B{{music|b}} minor]] | {{tlc|music|b-flat minor}} || {{music|b-flat minor}} |- ! 6{{music|b}} ! [[G-flat major|G{{music|b}} major]] | {{tlc|music|g-flat major}} || {{music|g-flat major}} ! [[E-flat minor|E{{music|b}} minor]] | {{tlc|music|e-flat minor}} || {{music|e-flat minor}} |- ! 7{{music|b}} ! [[C-flat major|C{{music|b}} major]] | {{tlc|music|c-flat major}} || {{music|c-flat major}} ! [[A-flat minor|A{{music|b}} minor]] | {{tlc|music|a-flat minor}} || {{music|a-flat minor}} |} ==Bars== {| class="wikitable" style="text-align: center;" |- ! style="width:6em;" | Symbol ! style="width:6em;" | Unicode<br/>entity ! style="width:6em;" | Unicode<br/>result ! style="width:18em;" | Template<br/>text ! style="width:6em;" | Template<br/>result |- | '''Left repeat''' | &amp;#x1D106; | &#x1D106; | {{Tlc|Music|left repeat}} | {{Music|left repeat}} |- | '''Right repeat''' | &amp;#x1D107; | &#x1D107; | {{Tlc|Music|right repeat}} | {{Music|right repeat}} |} ==Changing the size== Most symbols generated by this template, including double flats and sharps, notes, rests and key signatures, use images, as corresponding Unicode characters either don't exist or are not supported by all browsers. Unlike characters, images don't scale along with the surrounding text. To change the size of an image, to match the font size of the text in which it is placed, use the {{para|size}} parameter. Example: *<code>&lt;span style="font-size:80%"&gt;G{{((}}music|bb|size=x8px{{))}}&lt;/span&gt;</code> &rarr; <span style="font-size:80%">G{{music|bb|size=x8px}}</span> ==See also== *[[:Template:MusicScore]] *[[:commons:Template:Music]] *[[Help:Score]] and [[mw:Extension:Score]] <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please: --> [[Category:Music templates|{{BASEPAGENAME}}]] [[Category:MSIE font fix templates|{{BASEPAGENAME}}]] }}</includeonly> hu3xnu0qnaetf7ulbun5ps8vn5b5r06 Nodyn:Puro 10 82684 161562 2026-03-27T01:21:38Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "{{#invoke:Purge|main}}<noinclude> {{documentation}} </noinclude>" 161562 wikitext text/x-wiki {{#invoke:Purge|main}}<noinclude> {{documentation}} </noinclude> jp4ln3hv505tbr6kcpy61x7wo9joahj Nodyn:Su 10 82685 161563 2026-03-27T01:28:52Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS Normally, the code for the template is included, but this template is too complex to do that. --></noinclude><includeonly>{{#if:{{{p|}}}|{{#if:{{{b|}}}|<span style="display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:bottom;min-height:1em;{{#ifeq:{{{w|}}}|f|font-family:monospace;}}font-size:80%;line-height:1;margin-bottom:-0.1em;ove..." 161563 wikitext text/x-wiki <noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS Normally, the code for the template is included, but this template is too complex to do that. --></noinclude><includeonly>{{#if:{{{p|}}}|{{#if:{{{b|}}}|<span style="display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:bottom;min-height:1em;{{#ifeq:{{{w|}}}|f|font-family:monospace;}}font-size:80%;line-height:1;margin-bottom:-0.1em;overflow:visible;text-align:{{#switch:{{{a|}}}|r=right|c=center|left}}"><span style="display:block;min-height:1em;margin-top:-1.1em;line-height:1;background:transparent;overflow:visible">{{{p|super}}}</span><span style="display:block;min-height:1em;background:transparent;line-height:1;overflow:visible">{{{b|sub}}}</span></span>|{{sup|{{{p|}}}}}}}|{{sub|{{{b|}}}}}}}</includeonly> 9fetsyfvgzccxz0h2p5ksro2v2hvpkq Nodyn:Sup sub 10 82686 161564 2026-03-27T01:29:45Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "{{su|p={{{1}}}|b={{{2}}}|fontsize=1.5ex}}<noinclude> {{Documentation}} </noinclude>" 161564 wikitext text/x-wiki {{su|p={{{1}}}|b={{{2}}}|fontsize=1.5ex}}<noinclude> {{Documentation}} </noinclude> funcio8qkgof67xvjemjx90ta928inr Nodyn:Template link 10 82687 161565 2026-03-27T01:30:58Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "<span class="nowrap">&#123;&#123;</span>[[Template:{{{1}}}|{{{1}}}]]<span class="nowrap">&#125;&#125;</span><noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude>" 161565 wikitext text/x-wiki <span class="nowrap">&#123;&#123;</span>[[Template:{{{1}}}|{{{1}}}]]<span class="nowrap">&#125;&#125;</span><noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> kkhg4xclyf9r0bcl7ypdd0yuh41mfu9 Nodyn:Time signature 10 82688 161566 2026-03-27T01:32:52Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "{{su|a=c|p={{{1}}}|b={{{2}}}}}<noinclude> {{Documentation}} </noinclude>" 161566 wikitext text/x-wiki {{su|a=c|p={{{1}}}|b={{{2}}}}}<noinclude> {{Documentation}} </noinclude> tmas82lao4qqsa0pbw78o7br48hhshq Modiwl:Hatnote 828 82689 161567 2026-03-27T01:41:14Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "-------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the {{hatnote}} and {{format link}} meta-templates and includes -- -- helper functions for other Lua hatnote modules...." 161567 Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the {{hatnote}} and {{format link}} meta-templates and includes -- -- helper functions for other Lua hatnote modules. -- -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local yesno -- lazily initialise [[Module:Yesno]] local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to false. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink{link = page} end return ret end function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink{link = link, display = display} end return links end function p.makeWikitextError(msg, helpLink, addTrackingCategory, title) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- [[Module:Yesno]], and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') title = title or mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' ([[' .. helpLink .. '|help]])' else helpText = '' end -- Make the category text. local category if not title.isTalkPage -- Don't categorise talk pages and title.namespace ~= 2 -- Don't categorise userspace and yesno(addTrackingCategory) ~= false -- Allow opting out then category = 'Hatnote templates with errors' category = string.format( '[[%s:%s]]', mw.site.namespaces[14].name, category ) else category = '' end return string.format( '<strong class="error">Error: %s%s.</strong>%s', msg, helpText, category ) end function p.disambiguate(page, disambiguator) -- Formats a page title with a disambiguation parenthetical, -- i.e. "Example" → "Example (disambiguation)". checkType('disambiguate', 1, page, 'string') checkType('disambiguate', 2, disambiguator, 'string', true) disambiguator = disambiguator or 'disambiguation' return string.format('%s (%s)', page, disambiguator) end -------------------------------------------------------------------------------- -- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the {{format link}} template. -------------------------------------------------------------------------------- function p.formatLink(frame) -- The formatLink export function, for use in templates. yesno = require('Module:Yesno') local args = getArgs(frame) local link = args[1] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format link#Errors', args.category ) end return p._formatLink{ link = link, display = args[2], italicizePage = yesno(args.italicizepage), italicizeSection = yesno(args.italicizesection), } end local function italicize(s) -- Italicize a string. return '<i>' .. s .. '</i>' end local function maybeItalicize(s, shouldItalicize) -- italicize s if s is a string and the shouldItalicize parameter is true. if s and shouldItalicize then return italicize(s) else return s end end local function parseLink(link) -- Parse a link and return a table with the link's components. -- These components are: -- - link: the link, stripped of any initial colon (always present) -- - page: the page name (always present) -- - section: the page name (may be nil) -- - display: the display text, if manually entered after a pipe (may be nil) link = removeInitialColon(link) -- Find whether a faux display value has been added with the {{!}} magic -- word. local prePipe, display = link:match('^(.-)|(.*)$') link = prePipe or link -- Find the page, if it exists. -- For links like [[#Bar]], the page will be nil. local preHash, postHash = link:match('^(.-)#(.*)$') local page if not preHash then -- We have a link like [[Foo]]. page = link elseif preHash ~= '' then -- We have a link like [[Foo#Bar]]. page = preHash end -- Find the section, if it exists. local section if postHash and postHash ~= '' then section = postHash end return { link = link, page = page, section = section, display = display, } end function p._formatLink(options) -- The formatLink export function, for use in modules. checkType('_formatLink', 1, options, 'table') checkTypeForNamedArg('_formatLink', 'link', options.link, 'string', false) checkTypeForNamedArg( '_formatLink', 'display', options.display, 'string', true ) checkTypeForNamedArg( '_formatLink', 'italicizePage', options.italicizePage, 'boolean', true ) checkTypeForNamedArg( '_formatLink', 'italicizeSection', options.italicizeSection, 'boolean', true ) local parsed = parseLink(options.link) local display = options.display or parsed.display -- Deal with the case where we don't have to pipe the link if not display and not parsed.section and not options.italicizePage then return string.format('[[:%s]]', parsed.link) end -- Find the display text for piped links if not display then local page = maybeItalicize(parsed.page, options.italicizePage) local section = maybeItalicize(parsed.section, options.italicizeSection) if not page then display = string.format('§&nbsp;%s', section) elseif section then display = string.format('%s §&nbsp;%s', page, section) else display = page end end return string.format('[[:%s|%s]]', parsed.link, display) end -------------------------------------------------------------------------------- -- Hatnote -- -- Produces standard hatnote text. Implements the {{hatnote}} template. -------------------------------------------------------------------------------- function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) options = options or {} local classes = {'hatnote', 'navigation-not-searchable'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '%s<div role="note" class="%s">%s</div>', mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' } }, table.concat(classes, ' '), s ) end return p 8jl4tbplx9vbofd81vddfc42fqmupj3 Modiwl:Hatnote/styles.css 828 82690 161568 2026-03-27T01:45:21Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "/* {{pp|small=y}} */ .hatnote { font-style: italic; } /* Limit structure CSS to divs because of [[Module:Hatnote inline]] */ div.hatnote { /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; } .hatnote i { font-style: normal; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .hatnote + link + .hatnote { margin-top: -0.5em; } @media print { body.ns-0 .hatnote { display:..." 161568 sanitized-css text/css /* {{pp|small=y}} */ .hatnote { font-style: italic; } /* Limit structure CSS to divs because of [[Module:Hatnote inline]] */ div.hatnote { /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; } .hatnote i { font-style: normal; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .hatnote + link + .hatnote { margin-top: -0.5em; } @media print { body.ns-0 .hatnote { display: none !important; } } jwhkjblpyf93ejffkuu68hxj9zpt08y Modiwl:Message box/configuration 828 82691 161569 2026-03-27T01:49:02Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "require('strict') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -----------------------------------------------------------------..." 161569 Scribunto text/plain require('strict') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image self.typeImageNeedsLink = typeData.imageNeedsLink -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" ) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) m4s7cflge0qvr0ardrqg93lmo6zfhji Modiwl:Message box/fmbox.css 828 82692 161570 2026-03-27T01:50:48Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "/* {{pp|small=y}} */ .fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: var(--background-color-interactive-subtle, #f8f9fa); box-sizing: border-box; color: var(--color-base, #202122); } .fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } .fmbox-editnotice { background-color: transparent; } .fmbox .mbox-text { border: none; /* @noflip */ paddi..." 161570 sanitized-css text/css /* {{pp|small=y}} */ .fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: var(--background-color-interactive-subtle, #f8f9fa); box-sizing: border-box; color: var(--color-base, #202122); } .fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } .fmbox-editnotice { background-color: transparent; } .fmbox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .fmbox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .fmbox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } .fmbox .mbox-invalid-type { text-align: center; } @media screen { html.skin-theme-clientpref-night .fmbox-warning { background-color: #683131; /* Reddish, same hue/saturation as light */ } } @media screen and ( prefers-color-scheme: dark) { html.skin-theme-clientpref-os .fmbox-warning { background-color: #683131; /* Reddish, same hue/saturation as light */ } } 13ao9jm7723i16efwyjzjw0zpma8wx8 Modiwl:Purge 828 82693 161571 2026-03-27T01:51:56Z AlwynapHuw 1710 Dechrau tudalen newydd gyda "-- This module implements [[Template:Purge]]. local p = {} local function makeUrlLink(url, display) return string.format('[%s %s]', url, display) end function p._main(args) -- Make the URL local url do local title if args.page then title = mw.title.new(args.page) if not title then error(string.format( "'%s' is not a valid page name", args.page ), 2) end else title = mw.title.getCurrentTitle() end if args.anchor the..." 161571 Scribunto text/plain -- This module implements [[Template:Purge]]. local p = {} local function makeUrlLink(url, display) return string.format('[%s %s]', url, display) end function p._main(args) -- Make the URL local url do local title if args.page then title = mw.title.new(args.page) if not title then error(string.format( "'%s' is not a valid page name", args.page ), 2) end else title = mw.title.getCurrentTitle() end if args.anchor then title.fragment = args.anchor end url = title:fullUrl{action = 'purge'} end -- Make the display local display if args.page then display = args[1] or 'Purge' else display = mw.html.create('span') display :attr('title', 'Purge this page') :wikitext(args[1] or 'Purge') display = tostring(display) end -- Output the HTML local root = mw.html.create('span') root :addClass('noprint') :addClass('plainlinks') :addClass('purgelink') :wikitext(makeUrlLink(url, display)) return tostring(root) end function p.main(frame) local args = frame:getParent().args return p._main(args) end return p 7zn4wpraqp0o2q6ovvb2j9zno19p3zp