Wikipedia gvwiki https://gv.wikipedia.org/wiki/Ard-ghuillag MediaWiki 1.48.0-wmf.3 first-letter Meanyn Er lheh Resooney Ymmydeyr Resooney ymmydeyr Wikipedia Resooney Wikipedia Coadan Resooney coadan MediaWiki Resooney MediaWiki Clowan Resooney clowan Cooney Resooney cooney Ronney Resooney ronney TimedText TimedText talk Module Module talk Event Event talk Dia Mirza 0 4724 396353 346900 2026-11-06T12:12:39Z CommonsDelinker 117 Goaill magh Dia_Mirza_in_grace_the_IIFA_2020_press_conference_(5).jpg, scryss Moheen eh veih'n Chadjinaght by chyndagh rish y chooish shoh: Unused and implausible [[:c:COM:REDIRECT|redirect]] ([[:c:COM:CSD#G2|G2]]): File:Dia Mirza in grace the IIFA 2020 p 396353 wikitext text/x-wiki {{WD Kishtey Fys Dooinney | ennym = Dia Mirza<br />दिया मिर्ज़ा | jalloo = | fo-heidyl = Dia Mirza ayns 2020 | ennym_ruggyr = Dia Handrick | date_ruggyr = {{date ruggyr|1981|12|9|df=y}} | boayl_ruggyr = [[Hyderabad]], [[Andhra Pradesh]] (jiu [[Telangana]]), yn Injey | ashoonaght = [[Injinee|Injinagh]] }} Ta '''Dia Mirza''' ny '''Diya Mirza Handrich''' ([[Hindish]]: दिया मिर्ज़ा) ny ben-chloieder fillym Injinagh. V'ee ruggit ayns [[Hyderabad]], [[Andhra Pradesh]] er 9 Mee ny Nollick 1981. == Kianglaghyn magh == * {{IMDb name|id=1069850|name=Dia Mirza}} {{Gurneil eaghtyrys}} {{DEFAULTSORT:Mirza, Dia}} {{bun}} [[Ronney:Ruggyryn 'sy vlein 1981]] [[Ronney:Feallee vio]] [[Ronney:Aghteyryn fillym bwoirrin Injinagh]] [[Ronney:Injinee jeh sluight Germaanagh]] [[Ronney:Feallee ass Hyderabad]] [[Ronney:Feallee ass Andhra Pradesh]] [[Ronney:Gienteyderyn fillym Injinagh]] [[Ronney:Craishteyderyn bwoirrin Injinagh]] [[Ronney:Co-streeuderyn tostyl aalid Injinagh]] [[Ronney:Cosneyderyn Femina Miss India]] [[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Hindish]] [[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Vengaalish]] [[Ronney:Injinee jeh sluight Germaanagh]] [[Ronney:Bengaalee]] [[Ronney:Craishteyderyn ass Hyderabad]] [[Ronney:Aghteyryn ass Hyderabad]] [[Ronney:Gienteyderyn fillym bwoirrin Injinagh]] [[Ronney:Gienteyderyn fillym ass Hyderabad]] [[Ronney:Delleyderyn bwoirrin Injinagh]] [[Ronney:Delleyderyn ass Andhra Pradesh]] [[Ronney:Cosneyderyn Miss Asia Pacific International]] [[Ronney:Ambasseydeyryn jeih-aigney ny h-Ashoonyn Unnaneysit]] ryjfquhnztb58fpupuhld761z3ahzw2 396357 396353 2026-11-06T13:00:24Z MacTire02 219 -- 396357 wikitext text/x-wiki {{WD Kishtey Fys Dooinney | ennym = Dia Mirza<br />दिया मिर्ज़ा | jalloo = | fo-heidyl = | ennym_ruggyr = Dia Handrick | date_ruggyr = {{date ruggyr|1981|12|9|df=y}} | boayl_ruggyr = [[Hyderabad]], [[Andhra Pradesh]] (jiu [[Telangana]]), yn Injey | ashoonaght = [[Injinee|Injinagh]] }} Ta '''Dia Mirza''' ny '''Diya Mirza Handrich''' ([[Hindish]]: दिया मिर्ज़ा) ny ben-chloieder fillym Injinagh. V'ee ruggit ayns [[Hyderabad]], [[Andhra Pradesh]] er 9 Mee ny Nollick 1981. == Kianglaghyn magh == * {{IMDb name|id=1069850|name=Dia Mirza}} {{Gurneil eaghtyrys}} {{DEFAULTSORT:Mirza, Dia}} {{bun}} [[Ronney:Ruggyryn 'sy vlein 1981]] [[Ronney:Feallee vio]] [[Ronney:Aghteyryn fillym bwoirrin Injinagh]] [[Ronney:Injinee jeh sluight Germaanagh]] [[Ronney:Feallee ass Hyderabad]] [[Ronney:Feallee ass Andhra Pradesh]] [[Ronney:Gienteyderyn fillym Injinagh]] [[Ronney:Craishteyderyn bwoirrin Injinagh]] [[Ronney:Co-streeuderyn tostyl aalid Injinagh]] [[Ronney:Cosneyderyn Femina Miss India]] [[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Hindish]] [[Ronney:Aghteyryn bwoirrin ayns scannaneaght y Vengaalish]] [[Ronney:Injinee jeh sluight Germaanagh]] [[Ronney:Bengaalee]] [[Ronney:Craishteyderyn ass Hyderabad]] [[Ronney:Aghteyryn ass Hyderabad]] [[Ronney:Gienteyderyn fillym bwoirrin Injinagh]] [[Ronney:Gienteyderyn fillym ass Hyderabad]] [[Ronney:Delleyderyn bwoirrin Injinagh]] [[Ronney:Delleyderyn ass Andhra Pradesh]] [[Ronney:Cosneyderyn Miss Asia Pacific International]] [[Ronney:Ambasseydeyryn jeih-aigney ny h-Ashoonyn Unnaneysit]] inpacsmedu4pqg2k1x7dgnbrmjnii1h Mwaagh slieau 0 12781 396434 322497 2026-11-06T17:19:00Z MacTire02 219 ronnaghyn elley 396434 wikitext text/x-wiki {{Kishtey fys baagh | daah = #D3D3A4 | ennym = Mwaagh slieau | jalloo = Mountain Hare Scotland.jpg | lheead_jalloo = 210px | fo-heidyl_jalloo= Mwaagh slieau lesh y chlooie houree er | reeriaght = [[Animalia]] | phylum = [[Chordata]] | rang = [[Sheeintagh|Mammalia]] | oardagh = [[Lagomorpha]] | kynney = [[Leporidae]] | genus = ''[[Mwaagh|Lepus]]'' | dooie = '''''L. timidus''''' | daaennymagh = ''Lepus timidus'' | imraa_daaennymagh = [[Carolus Linnaeus|L.]], 1758 }} Ta'n '''mwaagh slieau''' ny yn '''mwaagh Yernagh''' (''Lepus timidus'') ny [[mwaagh|waagh]] ta cormit rish oayldyn sleitagh as poullagh. T'eh ry-akin veih [[Fennoscandia]] gys [[Yn Çhibbeyr|y Çhibbeyr]] hiar; ayns bishaghey rish shen, ta possanyn anerit ry-akin ayns [[ny Beinnyn Alpagh]], ayns [[Nerin]], 'sy [[Yn Pholynn|Pholynn]], 'sy [[Reeriaght Unnaneysit]] as ayns [[Hokkaidō]]. T'eh er ny ve currit stiagh ayns [[Shetlynn]] as [[Ellanyn ny Geyrragh]]. Foddee mwaagh slieau aase gys 45-65 kentimedaryn (18-26 oar) er lhiurid as gys 2-3 kilogramyn (4.4-6.6 lb) er trimmid, as dy cadjin, ta ny mwaaee woirrinagh ny s'trimmey na ny mwaaee 'irrynagh.<ref name="ARKive">{{cite web |url=http://www.arkive.org/mountain-hare/lepus-timidus/ |title=Mountain Hare |publisher=[[ARKive]] |accessdate=28 Jerrey Geuree, 2010 |language=Baarle |archivedate=2010-03-28 |archiveurl=https://web.archive.org/web/20100328144826/http://www.arkive.org/mountain-hare/lepus-timidus/ }}</ref>. == Imraaghyn == {{rolleyimraaghyn}} {{gurneil eaghtyrys}} {{bun}} [[Ronney:Mwaaee|Slieau]] [[Ronney:Sheeintee yn Aishey]] [[Ronney:Sheeintee yn Oarpey]] [[Ronney:Sheeintee yn Çheen]] [[Ronney:Sheeintee yn Çhapaan]] [[Ronney:Sheeintee yn Aishey Veanagh]] [[Ronney:Sheeintee yn Roosh]] [[Ronney:Bieyn thallooin Arctagh]] [[Ronney:Sheeintee soilshit 'sy vlein 1758]] [[Ronney:Tacsyn beiyn enmyssit lesh Carl Linnaeus]] [[Ronney:Cowraghyn ashoonagh Phobblaght Nerin]] [[Ronney:Sheeintee yn Vongoil]] [[Ronney:Dooieyn Oardagh ny h-Oayldyn]] afp0nuppg50wia5i244ptzvts3zdkq5 Ronney:Mwaaee 14 12784 396435 281353 2026-11-06T17:20:04Z MacTire02 219 ronney elley 396435 wikitext text/x-wiki {{catmore|mwaagh}} {{Commonscat|Lepus}} [[Ronney:Leporidae]] l9zkyq27er5a9e737s50zwckfcly7m0 The Fox and the Hound 0 15285 396437 396242 2026-11-06T18:02:43Z ~2026-58972-40 24080 /* Kianglaghyn magh */ 396437 wikitext text/x-wiki {{ennym iddaalagh}} {{WD Kishtey Fys Fillym | aghteyryn = {{ubl|[[Mickey Rooney]]|[[Kurt Russell]]|[[Pearl Bailey]]|[[Jack Albertson]]|[[Sandy Duncan]]|[[Jeanette Nolan]]|[[Pat Buttram]]|[[John Fiedler]]|[[John McIntire]]|[[Richard Bakalyan|Dick Bakalyan]]|[[Paul Winchell]]|[[Keith Coogan|Keith Mitchell]]|[[Corey Feldman]]}} | skeaylley = 10 Jerrey Souree 1981 | traa_roie = 83 minnidyn | bushaid = $12 villioon | çheet_stiagh = $63.5 millioonyn }} She [[fillym drama]] [[fillym bioghit|bioghit]] Americaanagh veih'n vlein 1981 eh '''''The Fox and the Hound'''''. Hie yn fillym er ny ghientyn ec [[Walt Disney Animation Studios|Walt Disney Productions]] as bunnit dy anhickyr er y noaskeeal liorish [[Daniel P. Mannix]] fo'n [[The Fox and the Hound (noaskeeal)|ennym cheddin]]. Y 24oo [[Rolley filmyn lesh Walt Disney Animation Studios|ard-fillym bioghit Disney]], ta'n fillym goll er gra skeeal er daa charrey neulicklee, [[shynnagh ruy]] ta enmyssit Tod as [[coo]] ta enmyssit Copper. Ta'n daa jeu streeu yn chaarjys eddyr oc y 'reill gyn y wooise da nyn nooghys ta girree as ny broojyn sheshoil mygeayrt-y-moosyn. Va'n fillym stiurit ec [[Ted Berman]], [[Richard Rich (stiureyder)|Richard Rich]], as [[Art Stevens]] as chur ny h-aghteyryn [[Kurt Russell]], [[Mickey Rooney]], [[Pearl Bailey]], [[Pat Buttram]], [[Sandy Duncan]], [[Richard Bakalyan]], [[Paul Winchell]], [[Jack Albertson]], [[Jeanette Nolan]], [[John Fiedler]], [[John McIntire]], [[Keith Coogan]], as [[Corey Feldman]] nyn ghoo lesh y fillym. Hie yn fillym er ny skeaylley magh er 10 Jerrey Souree 1981. Tra haink eh magh v'eh ny fillym bioghit smoo costallagh mastey ny filmyn rieau, as $12 millioonyn y costys echey. == Skimmee ghoo == * [[Mickey Rooney]] myr Tod ** [[Keith Coogan|Keith Mitchell]] myr Tod Aeg * [[Kurt Russell]] myr Copper ** [[Corey Feldman]] myr Copper Aeg * [[Pearl Bailey]] myr Big Mama * [[Jack Albertson]] myr Amos Slade * [[Sandy Duncan]] myr Vixey * [[Jeanette Nolan]] myr Widow Tweed * [[Pat Buttram]] myr Chief * [[John Fiedler]] myr The Porcupine * [[John McIntire]] myr The Badger * [[Richard Bakalyan|Dick Bakalyan]] myr Dinky * [[Paul Winchell]] myr Boomer == Kianglaghyn magh == {{Commons}} {{Wikiquote}} * {{Official website}} * {{DisneyAtoZ}} * {{IMDb title}} * {{AllMovie title}} * {{Mojo title}} * {{Rotten Tomatoes}} * {{TCMDb title}} {{Ard-filmyn bioghit theateragh Disney}} {{Gurneil eaghtyrys}} {{DEFAULTSORT:Fox and the Hound, The}} [[Ronney:Filmyn veih'n vlein 1981]] [[Ronney:Filmyn bioghit veih'n vlein 1981]] [[Ronney:Filmyn bioghit Americaanagh veih ny 1980yn]] [[Ronney:Filmyn bioghit bentyn rish moddee]] [[Ronney:Filmyn drama caarjys veih ny 1980yn]] [[Ronney:Filmyn bioghit da paitçhyn veih ny 1980yn]] [[Ronney:Filmyn drama appee veih ny 1980yn]] [[Ronney:Filmyn 'sy Vaarle]] [[Ronney:Filmyn drama veih'n vlein 1981]] [[Ronney:Filmyn drama caarjys Americaanagh]] [[Ronney:Filmyn drama bioghit Americaanagh da paitçhyn]] [[Ronney:Filmyn drama appee Americaanagh]] [[Ronney:Filmyn caarjys bioghit]] [[Ronney:Filmyn appee bioghit]] [[Ronney:Filmyn drama bioghit]] [[Ronney:Filmyn Walt Disney Animation Studios]] [[Ronney:Filmyn bioghit Walt Disney Pictures]] sa53yj25aa8onafjkzbeh5djhfcibsq 396440 396437 2026-11-06T18:07:31Z ~2026-58972-40 24080 /* Kianglaghyn magh */ 396440 wikitext text/x-wiki {{ennym iddaalagh}} {{WD Kishtey Fys Fillym | aghteyryn = {{ubl|[[Mickey Rooney]]|[[Kurt Russell]]|[[Pearl Bailey]]|[[Jack Albertson]]|[[Sandy Duncan]]|[[Jeanette Nolan]]|[[Pat Buttram]]|[[John Fiedler]]|[[John McIntire]]|[[Richard Bakalyan|Dick Bakalyan]]|[[Paul Winchell]]|[[Keith Coogan|Keith Mitchell]]|[[Corey Feldman]]}} | skeaylley = 10 Jerrey Souree 1981 | traa_roie = 83 minnidyn | bushaid = $12 villioon | çheet_stiagh = $63.5 millioonyn }} She [[fillym drama]] [[fillym bioghit|bioghit]] Americaanagh veih'n vlein 1981 eh '''''The Fox and the Hound'''''. Hie yn fillym er ny ghientyn ec [[Walt Disney Animation Studios|Walt Disney Productions]] as bunnit dy anhickyr er y noaskeeal liorish [[Daniel P. Mannix]] fo'n [[The Fox and the Hound (noaskeeal)|ennym cheddin]]. Y 24oo [[Rolley filmyn lesh Walt Disney Animation Studios|ard-fillym bioghit Disney]], ta'n fillym goll er gra skeeal er daa charrey neulicklee, [[shynnagh ruy]] ta enmyssit Tod as [[coo]] ta enmyssit Copper. Ta'n daa jeu streeu yn chaarjys eddyr oc y 'reill gyn y wooise da nyn nooghys ta girree as ny broojyn sheshoil mygeayrt-y-moosyn. Va'n fillym stiurit ec [[Ted Berman]], [[Richard Rich (stiureyder)|Richard Rich]], as [[Art Stevens]] as chur ny h-aghteyryn [[Kurt Russell]], [[Mickey Rooney]], [[Pearl Bailey]], [[Pat Buttram]], [[Sandy Duncan]], [[Richard Bakalyan]], [[Paul Winchell]], [[Jack Albertson]], [[Jeanette Nolan]], [[John Fiedler]], [[John McIntire]], [[Keith Coogan]], as [[Corey Feldman]] nyn ghoo lesh y fillym. Hie yn fillym er ny skeaylley magh er 10 Jerrey Souree 1981. Tra haink eh magh v'eh ny fillym bioghit smoo costallagh mastey ny filmyn rieau, as $12 millioonyn y costys echey. == Skimmee ghoo == * [[Mickey Rooney]] myr Tod ** [[Keith Coogan|Keith Mitchell]] myr Tod Aeg * [[Kurt Russell]] myr Copper ** [[Corey Feldman]] myr Copper Aeg * [[Pearl Bailey]] myr Big Mama * [[Jack Albertson]] myr Amos Slade * [[Sandy Duncan]] myr Vixey * [[Jeanette Nolan]] myr Widow Tweed * [[Pat Buttram]] myr Chief * [[John Fiedler]] myr The Porcupine * [[John McIntire]] myr The Badger * [[Richard Bakalyan|Dick Bakalyan]] myr Dinky * [[Paul Winchell]] myr Boomer == Kianglaghyn magh == {{Commons}} {{Wikiquote}} * {{Official website}} * {{DisneyAtoZ}} * {{IMDb title}} * {{AllMovie title}} * {{Mojo title}} * {{Rotten Tomatoes}} * {{TCMDb title}} {{Ard-filmyn bioghit theateragh Disney}} {{Gurneil eaghtyrys}} {{DEFAULTSORT:Fox and the Hound, The}} [[Ronney:Filmyn veih'n vlein 1981]] [[Ronney:Filmyn bioghit veih'n vlein 1981]] [[Ronney:Filmyn bioghit Americaanagh veih ny 1980yn]] [[Ronney:Filmyn drama caarjys veih ny 1980yn]] [[Ronney:Filmyn bioghit da paitçhyn veih ny 1980yn]] [[Ronney:Filmyn drama appee veih ny 1980yn]] [[Ronney:Filmyn drama veih'n vlein 1981]] [[Ronney:Filmyn 'sy Vaarle]] [[Ronney:Filmyn Americaanagh]] [[Ronney:Filmyn drama caarjys Americaanagh]] [[Ronney:Filmyn drama bioghit Americaanagh da paitçhyn]] [[Ronney:Filmyn drama appee Americaanagh]] [[Ronney:Filmyn bioghit bentyn rish moddee]] [[Ronney:Filmyn caarjys bioghit]] [[Ronney:Filmyn appee bioghit]] [[Ronney:Filmyn drama bioghit]] [[Ronney:Filmyn Walt Disney Animation Studios]] [[Ronney:Filmyn bioghit Walt Disney Pictures]] r2bar5zzfg34a5fwc3uduy6davprzue Clowan:Son 10 15414 396403 171766 2026-11-06T14:37:02Z MacTire02 219 MacTire02 moved page [[Clowan:Er son]] to [[Clowan:Son]] 171766 wikitext text/x-wiki {{dablink|Er son {{#if:{{{1|}}}|{{{1}}}|ymmydyn elley}}, jeeagh er [[:{{{2|{{PAGENAME}} (reddaghey)}}}]]{{#if:{{{3|}}}|{{#if:{{{4|}}}|, [[:{{{3}}}]], as [[:{{{4}}}]]|&#32;as [[:{{{3}}}]]}}}}.}}<noinclude> {{docamadys}}</noinclude> nlpduwyoqo5jxjijem4yshja10hqjb6 396407 396403 2026-11-06T14:37:17Z MacTire02 219 ny share 396407 wikitext text/x-wiki {{dablink|Son {{#if:{{{1|}}}|{{{1}}}|ymmydyn elley}}, jeeagh er [[:{{{2|{{PAGENAME}} (reddaghey)}}}]]{{#if:{{{3|}}}|{{#if:{{{4|}}}|, [[:{{{3}}}]], as [[:{{{4}}}]]|&#32;as [[:{{{3}}}]]}}}}.}}<noinclude> {{docamadys}}</noinclude> 1g6rxd81fqln0cwksqwq5vq0mrvurgl Clowan:Son/doc 10 15415 396405 360361 2026-11-06T14:37:02Z MacTire02 219 MacTire02 moved page [[Clowan:Er son/doc]] to [[Clowan:Son/doc]] 360361 wikitext text/x-wiki <includeonly> <!-- RONNAGHYN --> [[Ronney:Clowanyn reddaghey|Er son]] [[Ronney:Clowanyn heose]] </includeonly> 6kxk0lystw24t1ecqsh46syj5e1e0p0 Ronney:Filmyn veih'n 21d eash 14 23412 396381 380820 2026-11-06T13:42:40Z MacTire02 219 ronney elley 396381 wikitext text/x-wiki {{category series navigation}} [[Ronney:Obbraghyn veih'n 21d eash]] [[Ronney:Filmyn rere eash|21]] [[Ronney:Scannaneaght 'sy 21d eash]] ss1mkvkjrf943433d7yoavz7t7cpf45 Lady and the Tramp II: Scamp's Adventure 0 23854 396439 396161 2026-11-06T18:06:00Z ~2026-58972-40 24080 /* Kianglaghyn magh */ 396439 wikitext text/x-wiki {{ennym iddaalagh}} {{WD Kishtey Fys Scannane | ennym = ''Lady and the Tramp II: Scamp's Adventure'' | skeaylley = 27 Toshiaght Arree 2001 | aghteyryn = {{ubl|[[Scott Wolf]]|[[Alyssa Milano]]|[[Chazz Palminteri]]|[[Jeff Bennett]]|[[Jodi Benson]]}} | traa_roie = 69 minnidyn }} She [[fillym contoyrtys]] [[fillym bioghit|bioghit]] Americaanagh veih'n vlein 2001 eh '''''Lady and the Tramp II: Scamp's Adventure'''''. Hie yn fillym er ny ghientyn liorish [[Walt Disney Television Animation]] as er ny skeaylley jeeragh er feeshan. T'eh eiyrtyssagh er y fillym bioghit Disney veih'n vlein 1955, ''[[Lady and the Tramp]]''. Hie eh magh er ny skeaylley er 27 Toshiaght Arree 2001, 46 bleeaney lurg e roie-immeeaghtagh ayns 1955. == Kianglaghyn magh == {{Wikiquote}} * {{Official website}} * {{DisneyAtoZ}} * {{IMDb title}} * {{AllMovie title}} * {{Mojo title}} * {{Rotten Tomatoes}} * {{TCMDb title}} {{Disney Television Animation}} {{Gurneil eaghtyrys}} [[Ronney:Filmyn bioghit veih'n vlein 2001]] [[Ronney:Filmyn aittys veih'n vlein 2001]] [[Ronney:Filmyn veih'n vlein 2001]] [[Ronney:Filmyn Americaanagh]] [[Ronney:Filmyn 'sy Vaarle]] [[Ronney:Filmyn bioghit Americaanagh veih ny 2000yn]] [[Ronney:Filmyn bioghit da paitçhyn veih ny 2000yn]] [[Ronney:Filmyn drama aittys veih ny 2000yn]] [[Ronney:Filmyn aittys kiaullee veih ny 2000yn]] [[Ronney:Filmyn aittys romansagh veih ny 2000yn]] [[Ronney:Filmyn contoyrtys bioghit Americaanagh da paitçhyn]] [[Ronney:Filmyn kiaullee bioghit Americaanagh da paitçhyn]] [[Ronney:Filmyn drama aittys Americaanagh]] [[Ronney:Filmyn appee Americaanagh]] [[Ronney:Filmyn aittys kiaullee Americaanagh]] [[Ronney:Filmyn aittys romansagh Americaanagh]] [[Ronney:Filmyn kiaullee romansagh Americaanagh]] [[Ronney:Filmyn eiyrtyssagh Americaanagh]] [[Ronney:Filmyn appee bioghit]] [[Ronney:Filmyn drama aittys da paitçhyn]] [[Ronney:Filmyn Disney Television Animation]] [[Ronney:Filmyn bioghit Walt Disney Pictures]] [[Ronney:Filmyn bioghit bentyn rish moddee]] [[Ronney:Filmyn bentyn rish Laa yn Neuchrogheydys (ny Steatyn Unnaneysit)]] rdpqo1itme09fqn331m2s6a3iup46ar Paws of Fury: The Legend of Hank 0 31472 396441 379557 2026-11-06T18:10:41Z ~2026-58972-40 24080 396441 wikitext text/x-wiki {{ennym iddaalagh}} {{WD Kishtey Fys Scannane |jalloo= |aghteyryn={{Ubl |[[Michael Cera]] |[[Ricky Gervais]] |[[Mel Brooks]] |[[George Takei]] |[[Aasif Mandvi]] |[[Gabriel Iglesias]] |[[Djimon Hounsou]] |[[Michelle Yeoh]] |[[Samuel L. Jackson]] }} |skeaylley=10 Jerrey Souree 2022 ([[Los Angeles]])<br>15 Jerrey Souree 2022 (Steatyn Unnaneysit America)<br>22 Jerrey Souree 2022 (Reeriaght Unnaneysit) |traa_roie=98 minnidyn |bushaid=$45 millioonyn<ref name="SD">{{cite news|url=https://www.screendaily.com/news/gfm-animations-long-gestating-blazing-samurai-is-back-in-the-saddle-exclusive/5144435.article|title=GFM Animation's long-gestating ''Blazing Samurai'' is back in the saddle (exclusive)|date=November 6, 2019|website=[[Screen Daily]]|last=Macnab|first=Geoffrey|access-date=November 13, 2019|archive-date=17 Jerrey Geuree 2022|archive-url=https://web.archive.org/web/20220117015026/https://www.screendaily.com/news/gfm-animations-long-gestating-blazing-samurai-is-back-in-the-saddle-exclusive/5144435.article|url-status=live}}</ref>|çheet_stiagh=$42.5 millioonyn<ref name="BOM">{{Cite web |url=https://www.boxofficemojo.com/title/tt4428398/|title=Paws of Fury: The Legend of Hank (2022) |access-date=2024-03-21|work=[[Box Office Mojo]]}}</ref> }} She [[fillym aittys]] veih'n vlein 2022 ta [[bioghit lesh co-earrooder]] eh '''''Paws of Fury: The Legend of Hanky'''''. Va'n fillym stiurit ec Rob Minkoff, Mark Koetsier, as Chris Bailey. Ta'n fillym goaill stiagh gooyn [[Michael Cera]], [[Ricky Gervais]], [[Mel Brooks]], [[George Takei]], [[Aasif Mandvi]], [[Gabriel Iglesias]], [[Djimon Hounsou]], [[Michelle Yeoh]], as [[Samuel L. Jackson]]. == Imraaghyn == {{Reflist}} == Kianglaghyn magh == * {{IMDb title|4428398}} {{gurneil eaghtyrys}} {{bun}} [[Ronney:Filmyn veih'n vlein 2022]] [[Ronney:Filmyn 'sy Vaarle]] [[Ronney:Filmyn Americaanagh bioghit lesh co-earrooder]] [[Ronney:Filmyn Americaanagh]] [[Ronney:Filmyn Goaldagh]] [[Ronney:Filmyn aittys jantys Americaanagh]] [[Ronney:Filmyn aittys contoyrtys Americaanagh]] [[Ronney:Filmyn Goaldagh bioghit lesh co-earrooder]] [[Ronney:Filmyn Paramount Pictures]] [[Ronney:Filmyn Huayi Brothers]] [[Ronney:Filmyn Nickelodeon Movies]] [[Ronney:Filmyn bioghit Americaanagh veih ny 2020yn]] [[Ronney:Filmyn bioghit Goaldagh veih ny 2020yn]] [[Ronney:Filmyn bioghit paitçhyn veih ny 2020yn]] [[Ronney:Filmyn aittys contoyrtys 2022]] [[Ronney:Filmyn contoyrtys 2022]] [[Ronney:Filmyn bioghit lesh co-earrooder veih'n vlein 2022]] [[Ronney:Filmyn ellynyn caggoil veih'n vlein 2022]] [[Ronney:Filmyn ellynyn caggoil veih ny 2020yn]] [[Ronney:Filmyn bioghit bentyn rish kiyt]] [[Ronney:Filmyn bioghit bentyn rish moddee]] [[Ronney:Filmyn aittys jantys Goaldagh]] [[Ronney:Filmyn aittys contoyrtys Goaldagh]] [[Ronney:Filmyn aittys jantys Sheenagh]] [[Ronney:Filmyn bioghit Sheenagh]] [[Ronney:Filmyn Sheenagh]] [[Ronney:Filmyn aittys contoyrtys Sheenagh]] [[Ronney:Filmyn Sheenagh bioghit lesh co-earrooder]] [[Ronney:Filmyn stiurit lesh Rob Minkoff]] [[Ronney:Filmyn scoarit lesh Bear McCreary]] [[Ronney:Filmyn bioghit Nickelodeon]] [[Ronney:Filmyn bioghit Paramount Pictures]] [[Ronney:Filmyn Paramount Pictures]] [[Ronney:Filmyn bentyn rish samurai]] 8g9p0yyck3mpl56v447p7ca16d4xka0 Module:Category series navigation 828 36546 396388 388276 2026-11-06T13:57:19Z MacTire02 219 ++ 396388 Scribunto text/plain require('strict') local p = {} -- Manx: the linking words change between a year category and its decade category local DECADE_LINKERS = { ["veih'n vlein"] = "veih ny", -- Filmyn X veih'n vlein 1995 -> Filmyn X veih ny 1990yn ["'sy vlein"] = "ayns ny", -- Scannaneaght 'sy vlein 1995 -> Scannaneaght ayns ny 1990yn } local horizontal = require('Module:List').horizontal local rtarget = require('Module:Resolve category redirect').rtarget --[[==========================================================================]] --[[ Globals ]] --[[==========================================================================]] local currtitle = mw.title.getCurrentTitle() local nexistingcats = 0 local errors = '' local testcasecolon = '' local testcases = string.match(currtitle.subpageText, '^testcases') if testcases then testcasecolon = ':' end local navborder = true local followRs = true local skipgaps = false local skipgaps_limit = 50 local term_limit = 10 local hgap_limit = 6 local ygap_limit = 5 local listall = false local tlistall = {} local tlistallbwd = {} local tlistallfwd = {} local ttrackingcats = { --when reindexing, Ctrl+H 'trackcat(13,' & 'ttrackingcats[16]' '', -- [1] placeholder for [[Category:Category series navigation using cat parameter]] '', -- [2] placeholder for [[Category:Category series navigation using testcase parameter]] '', -- [3] placeholder for [[Category:Category series navigation using unknown parameter]] '', -- [4] placeholder for [[Category:Category series navigation range not using en dash]] '', -- [5] placeholder for [[Category:Category series navigation range abbreviated (MOS)]] '', -- [6] placeholder for [[Category:Category series navigation range redirected (base change)]] '', -- [7] placeholder for [[Category:Category series navigation range redirected (var change)]] '', -- [8] placeholder for [[Category:Category series navigation range redirected (end)]] '', -- [9] placeholder for [[Category:Category series navigation range redirected (MOS)]] '', --[10] placeholder for [[Category:Category series navigation range redirected (other)]] '', --[11] placeholder for [[Category:Category series navigation range gaps]] '', --[12] placeholder for [[Category:Category series navigation range irregular]] '', --[13] placeholder for [[Category:Category series navigation range irregular, 0-length]] '', --[14] placeholder for [[Category:Category series navigation range ends (present)]] '', --[15] placeholder for [[Category:Category series navigation range ends (blank, MOS)]] '', --[16] placeholder for [[Category:Category series navigation isolated]] '', --[17] placeholder for [[Category:Category series navigation default season gap size]] '', --[18] placeholder for [[Category:Category series navigation decade redirected]] '', --[19] placeholder for [[Category:Category series navigation year redirected (base change)]] '', --[20] placeholder for [[Category:Category series navigation year redirected (var change)]] '', --[21] placeholder for [[Category:Category series navigation year redirected (other)]] '', --[22] placeholder for [[Category:Category series navigation roman numeral redirected]] '', --[23] placeholder for [[Category:Category series navigation nordinal redirected]] '', --[24] placeholder for [[Category:Category series navigation wordinal redirected]] '', --[25] placeholder for [[Category:Category series navigation TV season redirected]] '', --[26] placeholder for [[Category:Category series navigation using skip-gaps parameter]] '', --[27] placeholder for [[Category:Category series navigation blein as reayn]] '', --[28] placeholder for [[Category:Category series navigation blein as jeihaght]] '', --[29] placeholder for [[Category:Category series navigation jeihaght as eash]] '', --[30] placeholder for [[Category:Category series navigation in mainspace]] '', --[31] placeholder for [[Category:Category series navigation redirection error]] } local avoidself = (not string.match(currtitle.text, 'Category series navigation with') and not string.match(currtitle.text, 'Category series navigation.*/doc') and not string.match(currtitle.text, 'Category series navigation.*/sandbox') and currtitle.text ~= 'Category series navigation' and currtitle.nsText:gsub('_', ' ') ~= 'User talk' and -- [[phab:T369784]] currtitle.nsText:gsub('_', ' ') ~= 'Template talk' and (currtitle.nsText ~= 'Template' or testcases)) --avoid nested transclusion errors (i.e. {{Infilmdecade}}) --[[==========================================================================]] --[[ Utility & category functions ]] --[[==========================================================================]] --Determine if a category exists (in a function for easier localization). local function catexists( title ) return mw.title.new( title, 'Category' ).exists end --Error message handling. function p.errorclass( msg ) return mw.text.tag( 'span', {class='error mw-ext-cite-error'}, '<b>Error!</b> '..string.gsub(msg, '&#', '&amp;#') ) end --Failure handling. function p.failedcat( errors, sortkey ) if avoidself then return (errors or '')..'&#42;&#42;&#42;Category series navigation failed to generate navbox***'.. '[['..testcasecolon..'Category:Category series navigation failed to generate navbox|'..(sortkey or 'O')..']]\n' end return '' end --Tracking cat handling. -- key: 15 (when reindexing ttrackingcats{}, Ctrl+H 'trackcat(13,' & 'ttrackingcats[16]') -- cat: 'Category series navigation isolated'; '' to remove --Used by main, all nav_*(), & several utility functions. local function trackcat( key, cat ) if avoidself and key and cat then if cat ~= '' then ttrackingcats[key] = '[['..testcasecolon..'Category:'..cat..']]' else ttrackingcats[key] = '' end end return end --Check for unknown parameters. --Used by main only. local function checkforunknownparams( tbl ) local knownparams = { --parameter whitelist ['min'] = 'min', ['max'] = 'max', ['cat'] = 'cat', ['show'] = 'show', ['testcase'] = 'testcase', ['testcasegap'] = 'testcasegap', ['skip-gaps'] = 'skip-gaps', ['list-all-links'] = 'list-all-links', ['follow-redirects'] = 'follow-redirects', } for k, _ in pairs (tbl) do if knownparams[k] == nil then trackcat(3, 'Category series navigation using unknown parameter') break end end end --Check for nav_*() navigational isolation (not necessarily an error). --Used by all nav_*(). local function isolatedcat() if nexistingcats == 0 then trackcat(16, 'Category series navigation isolated') end end --Similar to {{LinkCatIfExists2}}: make a piped link to a category, if it exists; --if it doesn't exist, just display the greyed link title without linking. --Follows {{Category redirect}}s. --Returns { -- ['cat'] = cat, -- ['catexists'] = true, -- ['rtarget'] = <#R target>, -- ['navelement'] = <#R target navelement>, -- ['displaytext'] = displaytext, -- } -- if #R followed; --returns { -- ['cat'] = cat, -- ['catexists'] = <true|false>, -- ['rtarget'] = nil, -- ['navelement'] = <cat navelement>, -- ['displaytext'] = displaytext, -- } -- otherwise. --Used by all nav_*(). local function catlinkfollowr( frame, cat, displaytext, displayend, listoverride ) cat = mw.text.trim(cat or '') displaytext = mw.text.trim(displaytext or '') displayend = displayend or false --bool flag to override displaytext IIF the cat/target is terminal (e.g. "2021–present" or "2021–") local disp = cat if displaytext ~= '' then --use 'displaytext' parameter if present disp = mw.ustring.gsub(displaytext, '%s+%(.+$', ''); --strip any trailing disambiguator end local link, nilorR local exists = catexists(cat) if exists then nexistingcats = nexistingcats + 1 if followRs then local R = rtarget(cat, frame) --find & follow #R if R ~= cat then --#R followed nilorR = R end if displayend then local y, hyph, ending = mw.ustring.match(R, '^.-(%d+)([–-])(.*)$') if ending == 'present' then disp = y..hyph..ending elseif ending == '' then disp = y..hyph..'<span style="visibility:hidden">'..y..'</span>' --hidden y to match spacing end end link = '[[:Category:'..R..'|'..disp..']]' else link = '[[:Category:'..cat..'|'..disp..']]' end else link = '<span class="categorySeriesNavigation-item-inactive">'..disp..'</span>' end if listall and listoverride == nil then if nilorR then --#R followed table.insert( tlistall, '[[:Category:'..cat..']] → '..'[[:Category:'..nilorR..']] ('..link..')' ) else --no #R table.insert( tlistall, '[[:Category:'..cat..']] ('..link..')' ) end end return { ['cat'] = cat, ['catexists'] = exists, ['rtarget'] = nilorR, ['navelement'] = link, ['displaytext'] = disp, } end --Returns a numbered list of all {{Category redirect}}s followed by catlinkfollowr() -> rtarget(). --For a nav_hyphen() cat, also returns a formatted list of all cats searched for & found, & all loop indices. --Used by all nav_*(). local function listalllinks() local nl = '\n# ' local out = '' if currtitle.nsText == 'Category' then errors = p.errorclass('The <b><code>|list-all-links=yes</code></b> parameter/utility '.. 'should not be saved in category space, only previewed.') out = p.failedcat(errors, 'Z') end local bwd, fwd = '', '' if tlistallbwd[1] then bwd = '\n\nbackward search:'..nl..table.concat(tlistallbwd, nl) end if tlistallfwd[1] then fwd = '\n\nforward search:'..nl..table.concat(tlistallfwd, nl) end if tlistall[1] then return out..nl..table.concat(tlistall, nl)..bwd..fwd else return out..nl..'No links found!?'..bwd..fwd end end --Returns the difference b/w 2 ints separated by endash|hyphen, nil if error. --Used by nav_hyphen() only. local function find_duration( cat ) local from, to = mw.ustring.match(cat, '(%d+)[–-](%d+)') if from and to then if to == '00' then return nil end --doesn't follow MOS:DATERANGE if (#from == 4) and (#to == 2) then --1900-01 to = string.match(from, '(%d%d)%d%d')..to --1900-1901 elseif (#from == 2) and (#to == 4) then -- 01-1902 from = string.match(to, '(%d%d)%d%d')..from --1901-1902 end return (tonumber(to) - tonumber(from)) end return 0 end --Returns the ending of a terminal cat, and sets the appropriate tracking cat, else nil. --Used by nav_hyphen() only. local function find_terminaltxt( cat ) local terminaltxt = nil if mw.ustring.match(cat, '%d+[–-]present$') then terminaltxt = 'present' trackcat(14, 'Category series navigation range ends (present)') elseif mw.ustring.match(cat, '%d+[–-]$') then terminaltxt = '' trackcat(15, 'Category series navigation range ends (blank, MOS)') end return terminaltxt end --Returns an unsigned string of the 1-4 digit decade ending in "0", else nil. --Used by nav_decade() only. local function sterilizedec( decade ) if decade == nil or decade == '' then return nil end local dec = string.match(decade, '^[-%+]?(%d?%d?%d?0)$') or string.match(decade, '^[-%+]?(%d?%d?%d?0)%D') if dec then return dec else --fix 2-4 digit decade local decade_fixed234 = string.match(decade, '^[-%+]?(%d%d?%d?)%d$') or string.match(decade, '^[-%+]?(%d%d?%d?)%d%D') if decade_fixed234 then return decade_fixed234..'0' end --fix 1-digit decade local decade_fixed1 = string.match(decade, '^[-%+]?(%d)$') or string.match(decade, '^[-%+]?(%d)%D') if decade_fixed1 then return '0' end --unfixable return nil end end --Check for nav_hyphen default gap size + isolatedcat() (not necessarily an error). --Used by nav_hyphen() only. local function defaultgapcat( bool ) if bool and nexistingcats == 0 then --using "nexistingcats > 0" isn't as useful, since the default gap size obviously worked trackcat(17, 'Category series navigation default season gap size') end end --12 -> 12h, etc. --Used by nav_nordinal() & nav_wordinal(). function p.addord( i ) if tonumber(i) then local s = tostring(i) local n = tonumber(i) local ones = n % 10 if ones == 1 then return s .. 'd' elseif ones == 2 then return s .. 'h' else return s .. 'oo' end end return i end --Returns the properly formatted central nav element. --Expects an integer i, and a catlinkfollowr() table. --Used by nav_decade() & nav_ordinal() only. local function navcenter( i, catlink ) if i == 0 then --center nav element if navborder == true then return '<b>'..catlink.displaytext..'</b>' else return '<b>'..catlink.navelement..'</b>' end else return catlink.navelement end end --Wrap one or two navs in a <div> with ARIA attributes; add TemplateStyles --before it. This also aligns the navs in case some floating element (like a --portal box) breaks their alignment. --Used by main only. local function wrap( nav1, nav2 ) local templatestyles = require("Module:TemplateStyles")( "Module:Category series navigation/styles.css" ) local prepare = function (nav) if nav then nav = '\n'..nav else nav = '' end return nav end return templatestyles.. '<div class="categorySeriesNavigation" role="navigation" aria-label="Range">'.. prepare(nav1)..prepare(nav2).. '\n</div>' end --[[==========================================================================]] --[[ Formerly separated templates/modules ]] --[[==========================================================================]] --[[==========================={{ nav_hyphen }}=============================]] local function nav_hyphen( frame, start, hyph, finish, firstpart, lastpart, minseas, maxseas, testgap ) --Expects a PAGENAME of the form "Some sequential 2015–16 example cat", where -- start = 2015 -- hyph = – -- finish = 16 (sequential years can be abbreviated, but others should be full year, e.g. "2001–2005") -- firstpart = Some sequential -- lastpart = example cat -- minseas = 1800 ('min' starting season shown; optional; defaults to -9999) -- maxseas = 2000 ('max' starting season shown; optional; defaults to 9999; 2000 will show 2000-01) -- testgap = 0 (testcasegap parameter for easier testing; optional) --sterilize start if string.match(start or '', '^%d%d?%d?%d?$') == nil then --1-4 digits, AD only local start_fixed = mw.ustring.match(start or '', '^%s*(%d%d?%d?%d?)%D') if start_fixed then start = start_fixed else errors = p.errorclass('Function nav_hyphen can\'t recognize the number "'..(start or '')..'" '.. 'in the first part of the "season" that was passed to it. '.. 'For e.g. "2015–16", "2015" is expected via "|2015|–|16|".') return p.failedcat(errors, 'H') end end local nstart = tonumber(start) --en dash check if hyph ~= '–' then trackcat(4, 'Category series navigation range not using en dash') --nav still processable, but track end --sterilize finish & check for weird parents local tgaps = {} --table of gap sizes found b/w terms { [<gap size found>] = 1 } for -3 <= j <= 3 local tgapsj4 = {} --table of gap sizes found b/w terms { [<gap size found>] = 1 } for j = { -4, 4 } local ttlens = {} --table of term lengths found w/i terms { [<term length found>] = 1 } local tirregs = {} --table of ir/regular-term-length cats' "from"s & "to"s found local regularparent = true if (finish == -1) or --"Members of the Scottish Parliament 2021–present" (finish == 0) --"Members of the Scottish Parliament 2021–" then regularparent = false if maxseas == nil or maxseas == '' then maxseas = start --hide subsequent ranges end if finish == -1 then trackcat(14, 'Category series navigation range ends (present)') else trackcat(15, 'Category series navigation range ends (blank, MOS)') end elseif (start == finish) and (ttrackingcats[16] ~= '') --nav_year found isolated; check for surrounding hyphenated terms (e.g. UK MPs 1974) then trackcat(16, '') --reset for another check later trackcat(13, 'Category series navigation range irregular, 0-length') ttlens[0] = 1 --calc ttlens for std cases below regularparent = 'isolated' end if (string.match(finish or '', '^%d+$') == nil) and (string.match(finish or '', '^%-%d+$') == nil) then local finish_fixed = mw.ustring.match(finish or '', '^%s*(%d%d?%d?%d?)%D') if finish_fixed then finish = finish_fixed else errors = p.errorclass('Function nav_hyphen can\'t recognize "'..(finish or '')..'" '.. 'in the second part of the "season" that was passed to it. '.. 'For e.g. "2015–16", "16" is expected via "|2015|–|16|".') return p.failedcat(errors, 'I') end else if string.len(finish) >= 5 then errors = p.errorclass('The second part of the season passed to function nav_hyphen should only be four or fewer digits, not "'..(finish or '')..'". '.. 'See [[MOS:DATERANGE]] for details.') return p.failedcat(errors, 'J') end end local nfinish = tonumber(finish) --save sterilized parent range for easier lookup later tirregs['from0'] = nstart tirregs['to0'] = nfinish --sterilize min/max local nminseas_default = -9999 local nmaxseas_default = 9999 local nminseas = tonumber(minseas) or nminseas_default --same behavior as nav_year local nmaxseas = tonumber(maxseas) or nmaxseas_default --same behavior as nav_year if nminseas > nstart then nminseas = nstart end if nmaxseas < nstart then nmaxseas = nstart end local lspace = ' ' --assume a leading space (most common) local tspace = ' ' --assume a trailing space (most common) if string.match(firstpart, '%($') then lspace = '' end --DNE for "Madrid city councillors (2007–2011)"-type cats if string.match(lastpart, '^%)') then tspace = '' end --DNE for "Madrid city councillors (2007–2011)"-type cats --calculate term length/intRAseason size & finishing year local t = 1 while t <= term_limit and regularparent == true do local nish = nstart + t --use switchADBC to flip this sign to work for years BC, if/when the time comes if (nish == nfinish) or (string.match(nish, '%d?%d$') == finish) then ttlens[t] = 1 break end if t == term_limit then errors = p.errorclass('Function nav_hyphen can\'t determine a reasonable term length for "'..start..hyph..finish..'".') return p.failedcat(errors, 'K') end t = t + 1 end --apply MOS:DATERANGE to parent local lenstart = string.len(start) local lenfinish = string.len(finish) if lenstart == 4 and regularparent == true then --"2001–..." if t == 1 then --"2001–02" & "2001–2002" both allowed if lenfinish ~= 2 and lenfinish ~= 4 then errors = p.errorclass('The second part of the season passed to function nav_hyphen should be two or four digits, not "'..finish..'".') return p.failedcat(errors, 'L') end else --"2001–2005" is required for t > 1; track "2001–05"; anything else = error if lenfinish == 2 then trackcat(5, 'Category series navigation range abbreviated (MOS)') elseif lenfinish ~= 4 then errors = p.errorclass('The second part of the season passed to function nav_hyphen should be four digits, not "'..finish..'".') return p.failedcat(errors, 'M') end end if finish == '00' then --full year required regardless of term length trackcat(5, 'Category series navigation range abbreviated (MOS)') end end --calculate intERseason gap size local hgap_default = 0 --assume & start at the most common case: 2001–02 -> 2002–03, etc. local hgap_limit_reg = hgap_limit --less expensive per-increment (inc x 4) local hgap_limit_irreg = hgap_limit --more expensive per-increment (inc x 23 = inc x (k_bwd + k_fwd) = inc x (12 + 11)) local hgap_success = false local hgap = hgap_default while hgap <= hgap_limit_reg and regularparent == true do --verify local prevseason2 = firstpart..lspace..(nstart-t-hgap)..hyph..string.match(nstart-hgap, '%d?%d$') ..tspace..lastpart local nextseason2 = firstpart..lspace..(nstart+t+hgap)..hyph..string.match(nstart+2*t+hgap, '%d?%d$')..tspace..lastpart local prevseason4 = firstpart..lspace..(nstart-t-hgap)..hyph..(nstart-hgap) ..tspace..lastpart local nextseason4 = firstpart..lspace..(nstart+t+hgap)..hyph..(nstart+2*t+hgap)..tspace..lastpart if t == 1 then --test abbreviated range first, then full range, to be frugal with expensive functions if catexists(prevseason2) or --use 'or', in case we're at the edge of the cat structure, catexists(nextseason2) or --or we hit a "–00"/"–2000" situation on one side catexists(prevseason4) or catexists(nextseason4) then hgap_success = true break end elseif t > 1 then --test full range first, then abbreviated range, to be frugal with expensive functions if catexists(prevseason4) or --use 'or', in case we're at the edge of the cat structure, catexists(nextseason4) or --or we hit a "–00"/"–2000" situation on one side catexists(prevseason2) or catexists(nextseason2) then hgap_success = true break end end hgap = hgap + 1 end if hgap_success == false then hgap = tonumber(testgap) or hgap_default --tracked via defaultgapcat() end --preliminary scan to determine ir/regular spacing of nearby cats; --to limit expensive function calls, MOS:DATERANGE-violating cats are ignored; --an irregular-term-length series should follow "YYYY..hyph..YYYY" throughout local jlimit = 4 --4-a-side if all YYYY-YY, 3-a-side if all YYYY-YYYY, with some threshold in between if hgap <= hgap_limit_reg then --also to isolate temp vars --find # of nav-visible ir/regular-term-length cats local bwanchor = nstart --backward anchor/common year local fwanchor = bwanchor + t --forward anchor/common year if regularparent == 'isolated' then fwanchor = bwanchor end local spangreen = '[<span style="color:green">j, g, k = ' --used for/when debugging via list-all-links=yes local spanblue = '<span style="color:blue">' local spanred = ' (<span style="color:red">' local span = '</span>' local lastg = nil --to check for run-on searches local lastk = nil --to check for run-on searches local endfound = false --switch used to stop searching forward local iirregs = 0 --index of tirregs[] for j < 0, since search starts from parent local j = -jlimit --index of tirregs[] for j > 0 & pseudo navh position while j <= jlimit do if j < 0 then --search backward from parent local gbreak = false --switch used to break out of g-loop local g = 0 --gap size while g <= hgap_limit_irreg do local k = 0 --term length: 0 = "0-length", 1+ = normal while k <= term_limit do local from = bwanchor - k - g local to = bwanchor - g local full = mw.text.trim( firstpart..lspace..from..hyph..to..tspace..lastpart ) if k == 0 then if regularparent ~= 'isolated' then --+restrict to g == 0 if repeating year problems arise to = '0-length' full = mw.text.trim( firstpart..lspace..from..tspace..lastpart ) if catlinkfollowr( frame, full ).rtarget ~= nil then --#R followed table.insert( tlistallbwd, spangreen..j..', '..g..', '..k..span..'] '..full..spanred..'#R ignored'..span..')' ) full, to = '', '' --don't use/follow 0-length cat #Rs from nav_hyphen(); otherwise gets messy end end end if (k >= 1) or --the normal case; only continue k = 0 if 0-length found (to == '0-length') --ghetto "continue" (thx Lua) to avoid expensive searches for "UK MPs 1974-1974", etc. then table.insert( tlistallbwd, spangreen..j..', '..g..', '..k..span..'] '..full ) if (k == 1) and -- (g == 0 or g == 1) and --commented to match j>0 case ("1995–96 in Federal Republic of Yugoslavia basketball") (catexists(full) == false) then --allow bare-bones MOS:DATERANGE alternation, in case we're on a 0|1-gap, 1-year term series local to2 = string.match(to, '%d%d$') if to2 and to2 ~= '00' then --and not at a century transition (i.e. 1999–2000) to = to2 full = mw.text.trim( firstpart..lspace..from..hyph..to..tspace..lastpart ) table.insert( tlistallbwd, spangreen..j..', '..g..', '..k..span..'] '..full ) end end if catexists(full) then if to == '0-length' then trackcat(13, 'Category series navigation range irregular, 0-length') end tlistallbwd[#tlistallbwd] = spanblue..tlistallbwd[#tlistallbwd]..span..' (found)' ttlens[ find_duration(full) ] = 1 if j == -1 then tgapsj4[g] = 1 -- -1 since bwd search starts from parent @ -4 and ends at -1 else tgaps[g] = 1 end iirregs = iirregs + 1 tirregs['from-'..iirregs] = from tirregs['to-'..iirregs] = to bwanchor = from --ratchet down if to ~= '0-length' then gbreak = true break else g = 0 --soft-reset g, to keep stepping thru k j = j + 1 --save, but keep searching thru k if j > 0 then --(restore "> 3" if acts up) lest we keep searching bwd & finding 0-length cats ("MEPs for the Republic of Ireland 1973" & down) j = -1 --allow a normal, full search fwd after break gbreak = true break end end elseif (j >= 0) and (lastg and lastk) and ((lastg >= hgap_limit_irreg) or (lastk >= term_limit)) then --bwd search exhausted and/or done (runaway bwd search on "2018–19 FIA World Endurance Championship season") j = -1 --allow a normal, full search fwd after break gbreak = true break end end --ghetto "continue" k = k + 1 lastk = k end --while k <= term_limit do if gbreak == true then break end g = g + 1 lastg = g end --while g <= hgap_limit_irreg do end --if j < 0 if j > 0 and endfound == false then --search forward from parent local gbreak = false --switch used to break out of g-loop local g = 0 --gap size while g <= hgap_limit_irreg do local k = -2 --term length: -2 = "0-length", -1 = "2020–present", 0 = "2020–", 1+ = normal while k <= term_limit do local from = fwanchor + g local to4 = fwanchor + k + g --override carefully local to2 = nil --last 2 digits of to4, IIF exists if k == -1 then to4 = 'present' --see if end-cat exists (present) elseif k == 0 then to4 = '' end --see if end-cat exists (blank) local full = mw.text.trim( firstpart..lspace..from..hyph..to4..tspace..lastpart ) if k == -2 then if regularparent ~= 'isolated' then --+restrict to g == 0 if repeating year problems arise to4 = '0-length' --see if 0-length cat exists full = mw.text.trim( firstpart..lspace..from..tspace..lastpart ) if catlinkfollowr( frame, full ).rtarget ~= nil then --#R followed table.insert( tlistallfwd, spangreen..j..', '..g..', '..k..span..'] '..full..spanred..'#R ignored'..span..')' ) full, to4 = '', '' --don't use/follow 0-length cat #Rs from nav_hyphen(); otherwise gets messy end end end if (k >= -1) or --only continue k = -2 if 0-length found (to4 == '0-length') --ghetto "continue" (thx Lua) to avoid expensive searches for "UK MPs 1974-1974", etc. then table.insert( tlistallfwd, spangreen..j..', '..g..', '..k..span..'] '..full ) if (k == 1) and -- (g == 0 or g == 1) and --commented to let "2002–03 in Scottish women's football" find "2008–09 in Scottish women's football" (catexists(full) == false) then --allow bare-bones MOS:DATERANGE alternation, in case we're on a 0|1-gap, 1-year term series to2 = string.match(to4, '%d%d$') if to2 and to2 ~= '00' then --and not at a century transition (i.e. 1999–2000) full = mw.text.trim( firstpart..lspace..from..hyph..to2..tspace..lastpart ) table.insert( tlistallfwd, spangreen..j..', '..g..', '..k..span..'] '..full ) end end if catexists(full) then if to4 == '0-length' then if rtarget(full, frame) == full then --only use 0-length cats that don't #R trackcat(13, 'Category series navigation range irregular, 0-length') end end tirregs['from'..j] = from tirregs['to'..j] = (to2 or to4) if (k == -1) or (k == 0) then endfound = true --tentative else --k == { -2, > 0 } tlistallfwd[#tlistallfwd] = spanblue..tlistallfwd[#tlistallfwd]..span..' (found)' ttlens[ find_duration(full) ] = 1 if j == 4 then tgapsj4[g] = 1 else tgaps[g] = 1 end endfound = false if to4 ~= '0-length' then --k > 0 fwanchor = to4 --ratchet up gbreak = true break --only break on k > 0 b/c old end-cat #Rs still exist like "Members of the Scottish Parliament 2011–" else --k == -2 j = j + 1 --save, but keep searching k's, in case "1974" → "1974-1979" if j > jlimit then --lest we keep searching & finding 0-length cats ("2018 CONCACAF Champions League" & up) gbreak = true break elseif g == hgap_limit_irreg then --keep searching, since not a runaway, just far away ("American soccer clubs 1958–59 season") hgap_limit_irreg = hgap_limit_irreg + 1 end end end end end --ghetto "continue" k = k + 1 lastk = k end --while k <= term_limit do if gbreak == true then break end g = g + 1 lastg = g end --while g <= hgap_limit_irreg do end --if j > 0 and endfound == false then if (lastg and lastk) and (lastg > hgap_limit_irreg) and (lastk > term_limit) then --search exhausted if j < 0 then j = 0 --bwd search exhausted; continue fwd elseif j > 0 then break end --fwd search exhausted end j = j + 1 end --while j <= jlimit end --if hgap <= hgap_limit_reg --determine # of displayed navh elements based on "YYYY-YY" vs. "YYYY-YYYY" counts local Ythreshold = 3.3 --((YYYY-YY x 7) + (YYYY-YYYY x 2))/18 = 3.222; ((YYYY-YY x 6) + (YYYY-YYYY x 3))/18 = 3.333 local Ycount = 0 --"Y" count local ycount = 0 --tirregs counter; # of contiguous #s for k, v in pairs (tirregs) do local dummy, dunce = mw.ustring.gsub(tostring(v), '%d', '') --why can't gsub just return a table?? Ycount = Ycount + dunce ycount = ycount + 1 end local ycount_limit = ((jlimit * 2) + 1) * 2 --i.e. ((4 * 2) + 1) * 2 = 18 if ycount < ycount_limit then --fill in the blanks with Ycount_parent, since hidden/dne cats aren't in tirregs local dummy_finish = finish if not regularparent then dummy_finish = start end local dummy, dunce_from = mw.ustring.gsub(start, '%d', '') local dummy, dunce_to = mw.ustring.gsub(dummy_finish, '%d', '') local Ycount_parent_avg = (dunce_from + dunce_to)/2 --"YYYY-YYYY" = 4; "YYYY-YY" = 3 Ycount = Ycount + (Ycount_parent_avg * (ycount_limit - ycount)) ycount = ycount_limit end local iwidth = 3 --default to 3-a-side, 7 total local Y_per_y = Ycount / ycount --normalized range: [3-4] if Y_per_y < Ythreshold then iwidth = 4 --extend to 4-a-side, 9 total end --begin navhyphen local navh = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local terminalcat = false --switch used to hide future cats local terminaltxt = nil local i = -iwidth --nav position while i <= iwidth do local from = nstart + i*(t+hgap) --the logical, but not necessarily correct, 'from' if tirregs['from'..i] then --prefer the irregular term table from = tonumber(tirregs['from'..i]) else --fallback to lazy/naive 'from' if i > 0 and tirregs['from'..(i-1)] and tirregs['from'..(i-1)] >= from then --end of the line: avoid dups/past, and create reasonable grey'd ranges local greyto = tonumber(tirregs['to' .. (i-1)]) or -9999 local greyfrom = tonumber(tirregs['from'..(i-1)]) or -9999 local grey = greyto --prefer 'to' if greyfrom > greyto then grey = greyfrom end --'from' fallback, in case "1995–96", "1995-present", etc. if grey > -9999 then if grey ~= greyto then from = grey + t + hgap --account for missing/incomplete 'to' else from = grey + hgap end tirregs['from'..i] = from --remember tirregs['to' .. i] = from + t end elseif i < 0 then local greyfrom local ii = 0 while ii < 3 do ii = ii + 1 greyfrom = tonumber(tirregs['from'..(i+ii)]) if greyfrom then break end end from = (greyfrom or nstart) - ii*(t+hgap) tirregs['from'..i] = from --remember tirregs['to' .. i] = from + t end end local from2 = string.match(from, '%d?%d$') local to = tostring(from+t) --the logical, naive range, but if tirregs['to'..i] then --prefer irregular term table to = tirregs['to'..i] elseif regularparent == false and tirregs and i > 0 then to = tirregs['to-1'] --special treatment for parent terminal cats, since they have no natural 'to' end local to2 = string.match(to, '%d?%d$') local tofinal = (to2 or '') --assume t=1 and abbreviated 'to' (the most common case) if t > 1 or --per MOS:DATERANGE (e.g. 1999-2004) (from2 - (to2 or from2)) > 0 --century transition exception (e.g. 1999–2000) then tofinal = (to or '') --default to the MOS-correct format, in case no fallbacks found end if to == '0-length' then tofinal = to end --check existance of 4-digit, MOS-correct range, with abbreviation fallback if tofinal ~= '0-length' then if t > 1 and string.len(from) == 4 then --e.g. 1999-2004 --determine which link exists (full or abbr) local full = firstpart..lspace..from..hyph..tofinal..tspace..lastpart if not catexists(full) then local abbr = firstpart..lspace..from..hyph..to2..tspace..lastpart if catexists(abbr) then tofinal = (to2 or '') --rv to MOS-incorrect format; if full AND abbr DNE, then tofinal is still in its MOS-correct format end end elseif t == 1 then --full-year consecutive ranges are also allowed local abbr = firstpart..lspace..from..hyph..tofinal..tspace..lastpart --assume tofinal is in abbr format if not catexists(abbr) and tofinal ~= to then local full = firstpart..lspace..from..hyph..to..tspace..lastpart if catexists(full) then tofinal = (to or '') --if abbr AND full DNE, then tofinal is still in its abbr format (unless it's a century transition) end end end end --populate navh if i ~= 0 then --left/right navh local orig = firstpart..lspace..from..hyph..tofinal..tspace..lastpart local disp = from..hyph..tofinal if tofinal == '0-length' then orig = firstpart..lspace..from..tspace..lastpart disp = from end local catlink = catlinkfollowr(frame, orig, disp, true) --force terminal cat display if terminalcat == false then terminaltxt = find_terminaltxt( disp ) --also sets tracking cats terminalcat = (terminaltxt ~= nil) end if catlink.rtarget and avoidself then --a {{Category redirect}} was followed, figure out why --determine new term length & gap size ttlens[ find_duration( catlink.rtarget ) ] = 1 if i > -iwidth then local lastto = tirregs['to'..(i-1)] if lastto == nil then local lastfrom = nstart + (i-1)*(t+hgap) lastto = lastfrom+t --use last logical 'from' to calc lastto end if lastto then local gapcat = lastto..'-'..from --dummy cat to calc with local gap = find_duration(gapcat) or -1 --in case of nil, if iwidth == 4 then tgapsj4[ gap ] = 1 --tgapsj4[-1] are ignored later else tgaps[ gap ] = 1 --tgaps[-1] are ignored later end end end --display/tracking handling local base_regex = '%d+[–-]%d+' local origbase = mw.ustring.gsub(orig, base_regex, '') local rtarbase, rtarbase_success = mw.ustring.gsub(catlink.rtarget, base_regex, '') if rtarbase_success == 0 then local base_regex_lax = '%d%d%d%d' --in case rtarget is a year cat rtarbase, rtarbase_success = mw.ustring.gsub(catlink.rtarget, base_regex_lax, '') end local terminal_regex = '%d+[–-]'..(terminaltxt or '')..'$' --more manual ORs bc Lua regex sux if mw.ustring.match(orig, terminal_regex) then origbase = mw.ustring.gsub(orig, terminal_regex, '') end if mw.ustring.match(catlink.rtarget, terminal_regex) then --finagle/overload terminalcat type to set nmaxseas on 1st occurence only if terminalcat == false then terminalcat = 1 end local dummy = find_terminaltxt( catlink.rtarget ) --also sets tracking cats rtarbase = mw.ustring.gsub(catlink.rtarget, terminal_regex, '') end origbase = mw.text.trim(origbase) rtarbase = mw.text.trim(rtarbase) if origbase ~= rtarbase then trackcat(6, 'Category series navigation range redirected (base change)') elseif terminalcat == 1 then trackcat(8, 'Category series navigation range redirected (end)') else --origbase == rtarbase local all4s_regex = '%d%d%d%d[–-]%d%d%d%d' local orig_all4s = mw.ustring.match(orig, all4s_regex) local rtar_all4s = mw.ustring.match(catlink.rtarget, all4s_regex) if orig_all4s and rtar_all4s then trackcat(10, 'Category series navigation range redirected (other)') else local year_regex1 = '%d%d%d%d$' local year_regex2 = '%d%d%d%d[%s%)]' local year_rtar = mw.ustring.match(catlink.rtarget, year_regex1) or mw.ustring.match(catlink.rtarget, year_regex2) if orig_all4s and year_rtar then trackcat(7, 'Category series navigation range redirected (var change)') else trackcat(9, 'Category series navigation range redirected (MOS)') end end end end if terminalcat then --true or 1 if type(terminalcat) ~= 'boolean' then nmaxseas = from end --only want to do this once terminalcat = true --done finagling/overloading end if (from >= 0) and (nminseas <= from) and (from <= nmaxseas) then table.insert(navlist, catlink.navelement) if terminalcat then nmaxseas = nminseas_default end --prevent display of future ranges else local hidden = '<span style="visibility:hidden">'..disp..'</span>' table.insert(navlist, hidden) if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end else --center navh if finish == -1 then finish = 'present' elseif finish == 0 then finish = '<span style="visibility:hidden">'..start..'</span>' end local disp = start..hyph..finish if regularparent == 'isolated' then disp = start end table.insert(navlist, '<b>'..disp..'</b>') end i = i + 1 end -- add the list navh = navh..horizontal(navlist)..'\n' --tracking cats & finalize if avoidself then local igaps = 0 --# of diff gap sizes > 0 found local itlens = 0 --# of diff term lengths found for s = 1, hgap_limit_reg do --must loop; #tgaps, #ttlens unreliable igaps = igaps + (tgaps[s] or 0) end if iwidth == 4 then --only count gaps if they were displayed ("Karnataka MLAs 1957–1962") for s = 1, hgap_limit_reg do igaps = igaps + (tgapsj4[s] or 0) end end for s = 0, term_limit do itlens = itlens + (ttlens[s] or 0) end if igaps > 0 then trackcat(11, 'Category series navigation range gaps') end if itlens > 1 and ttrackingcats[13] == '' then --avoid duplication in "Category series navigation range irregular, 0-length" trackcat(12, 'Category series navigation range irregular') end end isolatedcat() defaultgapcat(not hgap_success) if listall then return listalllinks() else return navh..'</div>' end end --[[=========================={{ nav_tvseason }}============================]] local function nav_tvseason( frame, firstpart, tv, lastpart, maximumtv ) --Expects a PAGENAME of the form "Futurama season 1 episodes", where -- firstpart = Futurama season -- tv = 1 -- lastpart = episodes -- maximumtv = 7 ('max' tv season parameter; optional; defaults to 9999) tv = tonumber(tv) if tv == nil then errors = p.errorclass('Function nav_tvseason can\'t recognize the TV season number sent to its 3rd parameter.') return p.failedcat(errors, 'T') end --"(season 1) episodes" -> "season 1 episodes" following March 2024 RfC: --[[Wikipedia talk:Naming conventions (television)#Follow-up RfC on TV season article titles]] -- [[Special:Permalink/1216885280#Follow-up RfC on TV season article titles]] local tspace = ' ' --"season 1 episodes" local parenth_check = string.match(lastpart, '^%)') if parenth_check then tspace = '' end --accommodate old style "(season 1) episodes" just in case local maxtv_default = 9999 local maxtv = tonumber(maximumtv) or maxtv_default --allow +/- qualifier if maxtv < tv then maxtv = tv end --input error; maxtv should be >= parent --begin navtvseason local navt = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local prepad = '' local i = -5 --nav position while i <= 5 do local t = tv + i if i ~= 0 then --left/right navt local catlink = catlinkfollowr( frame, firstpart..' '..t..tspace..lastpart, t ) if t >= 1 and t <= maxtv then --hardcode mintv if catlink.rtarget then --a {{Category redirect}} was followed trackcat(25, 'Category series navigation TV season redirected') end if catlink.catexists or (maxtv ~= maxtv_default and t <= maxtv) then table.insert(navlist, prepad..catlink.navelement) --display normally prepad = '' else local postpad = '<span style="visibility:hidden"> • '..t..'</span>' navlist[#navlist] = (navlist[#navlist] or '')..postpad if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..postpad..')' end end elseif t < 1 then prepad = prepad..'<span style="visibility:hidden"> • '..'0'..'</span>' if listall then tlistall[#tlistall] = (tlistall[#tlistall] or '')..' (x)' end else --t > maxtv local postpad = '<span style="visibility:hidden"> • '..t..'</span>' navlist[#navlist] = (navlist[#navlist] or '')..postpad if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..postpad..')' end end else --center navt table.insert(navlist, prepad..'<b>'..tv..'</b>') prepad = '' end i = i + 1 end -- add the list navt = navt..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navt..'</div>' end end --[[==========================={{ nav_decade }}=============================]] local function nav_decade( frame, firstpart, decade, lastpart, mindecade, maxdecade ) --Expects a PAGENAME of the form "Some sequential 2000 example cat", where -- firstpart = Some sequential -- decade = 2000 -- lastpart = example cat -- mindecade = 1800 ('min' decade parameter; optional; defaults to -9999) -- maxdecade = 2020 ('max' decade parameter; optional; defaults to 9999) --sterilize dec local dec = sterilizedec(decade) if dec == nil then errors = p.errorclass('Function nav_decade was sent "'..(decade or '')..'" as its 2nd parameter, '.. 'but expects a 1 to 4-digit year ending in "0".') return p.failedcat(errors, 'D') end local ndec = tonumber(dec) --sterilize mindecade & determine AD/BC local mindefault = '-9999' local mindec = sterilizedec(mindecade) --returns a tostring(unsigned int), or nil if mindec then if string.match(mindecade, '-%d') or string.match(mindecade, 'RC') then mindec = '-'..mindec --better +/-0 behavior with strings (0-initialized int == "-0" string...) end elseif mindec == nil and mindecade and mindecade ~= '' then errors = p.errorclass('Function nav_decade was sent "'..(mindecade or '')..'" as its 4th parameter, '.. 'but expects a 1 to 4-digit year ending in "0", the earliest decade to be shown.') return p.failedcat(errors, 'E') else --mindec == nil mindec = mindefault --tonumber() later, after error checks end --sterilize maxdecade & determine AD/BC local maxdefault = '9999' local maxdec = sterilizedec(maxdecade) --returns a tostring(unsigned int), or nil + error if maxdec then if string.match(maxdecade, '-%d') or string.match(maxdecade, 'RC') then --better +/-0 behavior with strings (0-initialized int == "-0" string...), maxdec = '-'..maxdec --but a "-0" string -> tonumber() -> tostring() = "-0", end --and a "0" string -> tonumber() -> tostring() = "0" elseif maxdec == nil and maxdecade and maxdecade ~= '' then errors = p.errorclass('Function nav_decade was sent "'..(maxdecade or '')..'" as its 5th parameter, '.. 'but expects a 1 to 4-digit year ending in "0", the highest decade to be shown.') return p.failedcat(errors, 'F') else --maxdec == nil maxdec = maxdefault end local tspace = ' ' --assume trailing space for "1950s in X"-type cats if string.match(lastpart, '^-') then tspace = '' end --DNE for "1970s-related"-type cats --AD/BC switches & varR local parentBC = string.match(lastpart, '^RC') --following the "0s BC" convention for all years BC local BCe = 'RC' --use RC for Manx categories, BC never used lastpart = mw.ustring.gsub(lastpart, '^RC%s*', '') --handle BC separately; AD never used --TODO?: handle BCE, but only if it exists in the wild local dec0to40AD = (ndec >= 0 and ndec <= 40 and not parentBC) --special behavior in this range local switchADBC = 1 -- 1=AD parent if parentBC then switchADBC = -1 end -- -1=BC parent; possibly adjusted later local BCdisp = '' local D = -math.huge --secondary switch & iterator for AD/BC transition --check non-default min/max more carefully if mindec ~= mindefault then if tonumber(mindec) > ndec*switchADBC then mindec = tostring(ndec*switchADBC) --input error; mindec should be <= parent end end if maxdec ~= maxdefault then if tonumber(maxdec) < ndec*switchADBC then maxdec = tostring(ndec*switchADBC) --input error; maxdec should be >= parent end end local nmindec = tonumber(mindec) --similar behavior to nav_year & nav_nordinal local nmaxdec = tonumber(maxdec) --similar behavior to nav_nordinal --begin navdecade local bnb = '' --border/no border if navborder == false then --for Category series navigation year and decade bnb = 'categorySeriesNavigation-range-transparent' end local navd = '<div class="toccolours categorySeriesNavigation-range '..bnb..'">\n' local navlist = {} local i = -50 --nav position x 10 while i <= 50 do local d = ndec + i*switchADBC local BC = '' BCdisp = '' if dec0to40AD then if D < -10 then d = math.abs(d + 10) --b/c 2 "0s" decades exist: "0s BC" & "0s" (AD) BC = 'RC ' if d == 0 then D = -10 --track 1st d = 0 use (BC) end elseif D >= -10 then D = D + 10 --now iterate from 0s AD d = D --2nd d = 0 use end elseif parentBC then if switchADBC == -1 then --parentBC looking at the BC side (the common case) BC = 'RC ' if d == 0 then --prepare to switch to the AD side on the next iteration switchADBC = 1 --1st d = 0 use (BC) D = -10 --prep end elseif switchADBC == 1 then --switched to the AD side D = D + 10 --now iterate from 0s AD d = D --2nd d = 0 use (on first use) end end if BC ~= '' and ndec <= 50 then BCdisp = ' '..BCe --show BC/RC for all BC decades whenever a "0yn" is displayed on the nav end --determine target cat local disp = d..'yn'..BCdisp local catlink = catlinkfollowr( frame, firstpart..' '..d..'yn'..tspace..BC..lastpart, disp ) if catlink.rtarget then --a {{Category redirect}} was followed trackcat(18, 'Category series navigation decade redirected') end --populate left/right navd local shown = navcenter(i, catlink) local hidden = '<span style="visibility:hidden">'..disp..'</span>' local dsign = d --use d for display & dsign for logic if BC ~= '' then dsign = -dsign end if (nmindec <= dsign) and (dsign <= nmaxdec) then if dsign == 0 and (nmindec == 0 or nmaxdec == 0) then --distinguish b/w -0 (BC) & 0 (AD) --"zoom in" on +/- 0 and turn dsign/min/max temporarily into +/- 1 for easier processing local zsign, zmin, zmax = 1, nmindec, nmaxdec if BC ~= '' then zsign = -1 end if mindec == '-0' then zmin = -1 elseif mindec == '0' then zmin = 1 end if maxdec == '-0' then zmax = -1 elseif maxdec == '0' then zmax = 1 end if (zmin <= zsign) and (zsign <= zmax) then table.insert(navlist, shown) hidden = nil else table.insert(navlist, hidden) end else table.insert(navlist, shown)--the common case hidden = nil end else table.insert(navlist, hidden) end if listall and hidden then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end i = i + 10 end -- add the list navd = navd..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navd..'</div>' end end --[[============================{{ nav_year }}==============================]] local function nav_year( frame, firstpart, year, lastpart, minimumyear, maximumyear ) --Expects a PAGENAME of the form "Some sequential 1760 example cat", where -- firstpart = Some sequential -- year = 1760 -- lastpart = example cat -- minimumyear = 1758 ('min' year parameter; optional) -- maximumyear = 1800 ('max' year parameter; optional) local minyear_default = -9999 local maxyear_default = 9999 year = tonumber(year) or tonumber(mw.ustring.match(year or '', '^%s*(%d*)')) local minyear = tonumber(string.match(minimumyear or '', '-?%d+')) or minyear_default --allow +/- qualifier local maxyear = tonumber(string.match(maximumyear or '', '-?%d+')) or maxyear_default --allow +/- qualifier if string.match(minimumyear or '', 'RC') then minyear = -math.abs(minyear) end --allow BC qualifier (AD otherwise assumed) if string.match(maximumyear or '', 'RC') then maxyear = -math.abs(maxyear) end --allow BC qualifier (AD otherwise assumed) if year == nil then errors = p.errorclass('Function nav_year can\'t recognize the year sent to its 3rd parameter.') return p.failedcat(errors, 'Y') end --AD/BC switches & vars local yearBCElastparts = { --needed for parent = AD 1-5, when the BC/E format is unknown --"BCE" removed to match both AD & BCE cats; easier & faster than multiple string.match()s ['example_Hebrew people_example'] = 'BCE', --example entry format; add to & adjust as needed } local parentAD = string.match(firstpart, 'BNJ$') --following the "AD 1" convention from AD 1 to AD 10 local parentBC = string.match(lastpart, '^RC?') --following the "1 BC" convention for all years BC firstpart = mw.ustring.gsub(firstpart, '%s*BNJ$', '') --handle AD/BC separately for easier & faster accounting lastpart = mw.ustring.gsub(lastpart, '^RC?%s*', '') local BCe = parentBC or yearBCElastparts[lastpart] or 'RC' --"BC" default local year1to10 = (year >= 1 and year <= 10) local year1to10ADBC = year1to10 and (parentBC or parentAD) --special behavior 1-10 for low-# non-year series local year1to15AD = (year >= 1 and year <= 15 and not parentBC) --special behavior 1-15 for AD/BC display local switchADBC = 1 -- 1=AD parent if parentBC then switchADBC = -1 end -- -1=BC parent; possibly adjusted later local Y = 0 --secondary iterator for AD-on-a-BC-parent if minyear > year*switchADBC then minyear = year*switchADBC end --input error; minyear should be <= parent if maxyear < year*switchADBC then maxyear = year*switchADBC end --input error; maxyear should be >= parent local lspace = ' ' --leading space before year, after firstpart if string.match(firstpart, '[%-VW]$') then lspace = '' --e.g. "Straight-8 engines" end local tspace = ' ' --trailing space after year, before lastpart if string.match(lastpart, '^-') then tspace = '' --e.g. "2018-related timelines" end --determine interyear gap size to condense special category types, if possible local ygapdefault = 1 --assume/start at the most common case: 2001, 2002, etc. local ygap = ygapdefault if string.match(lastpart, 'presidential') then local ygap1, ygap2 = ygapdefault, ygapdefault --need to determine previous & next year gaps indepedently local ygap1_success, ygap2_success = false, false local prevseason = nil while ygap1 <= ygap_limit do --Czech Republic, Poland, Sri Lanka, etc. have 5-year terms prevseason = firstpart..lspace..(year-ygap1)..tspace..lastpart if catexists(prevseason) then ygap1_success = true break end ygap1 = ygap1 + 1 end local nextseason = nil while ygap2 <= ygap_limit do --Czech Republic, Poland, Sri Lanka, etc. have 5-year terms nextseason = firstpart..lspace..(year+ygap2)..tspace..lastpart if catexists(nextseason) then ygap2_success = true break end ygap2 = ygap2 + 1 end if ygap1_success and ygap2_success then if ygap1 == ygap2 then ygap = ygap1 end elseif ygap1_success then ygap = ygap1 elseif ygap2_success then ygap = ygap2 end end --skip non-existing years, if requested local ynogaps = {} --populate with existing years in the range, at most, [year - (skipgaps_limit * 5), year + (skipgaps_limit * 5)] if skipgaps then if minyear == minyear_default then minyear = 0 --automatically set minyear to 0, as AD/BC not supported anyway end if (year > 70) or --add support for AD/BC (<= AD 10) if/when needed (minyear >= 0 and --must be a non-year series like "AC with 0 elements" not parentAD and not parentBC) then local yskipped = {} --track skipped y's to avoid double-checking local cat, found, Yeary --populate nav element queue outwards positively from the parent local Year = year --to save/ratchet progression local i = 1 while i <= 5 do local y = 1 while y <= skipgaps_limit do found = false Yeary = Year + y if yskipped[Yeary] == nil then yskipped[Yeary] = Yeary cat = firstpart..lspace..Yeary..tspace..lastpart found = catexists(cat) if found then break end end y = y + 1 end if found then Year = Yeary else Year = Year + 1 end ynogaps[i] = Year i = i + 1 end ynogaps[0] = year --the parent --populate nav element queue outwards negatively from the parent Year = year --reset ratchet i = -1 while i >= -5 do local y = -1 while y >= -skipgaps_limit do found = false Yeary = Year + y if yskipped[Yeary] == nil then yskipped[Yeary] = Yeary cat = firstpart..lspace..Yeary..tspace..lastpart found = catexists(cat) if found then break end end y = y - 1 end if found then Year = Yeary else Year = Year - 1 end ynogaps[i] = Year i = i - 1 end else skipgaps = false --TODO: AD/BC support, then lift BC restrictions @ [[Template:Establishment category BC]] & [[Template:Year category header/core]] end end --begin navyears local navy = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local y local j = 0 --decrementor for special cases "2021 World Rugby Sevens Series" -> "2021–2022" local i = -5 --nav position while i <= 5 do if skipgaps then y = ynogaps[i] else y = year + i*ygap*switchADBC - j end local BCdisp = '' if i ~= 0 then --left/right navy local AD = '' local BC = '' if year1to15AD and not (year1to10 and not year1to10ADBC) --don't AD/BC 1-10's if parents don't contain AD/BC then if year >= 11 then --parent = AD 11-15 if y <= 10 then --prepend AD on y = 1-10 cats only, per existing cats AD = 'AD ' end elseif year >= 1 then --parent = AD 1-10 if y <= 0 then BC = BCe..' ' y = math.abs(y - 1) --skip y = 0 (DNE) elseif y >= 1 and y <= 10 then --prepend AD on y = 1-10 cats only, per existing cats AD = 'AD ' end end elseif parentBC then if switchADBC == -1 then --displayed y is in the BC regime if y >= 1 then --the common case BC = BCe..' ' elseif y == 0 then --switch from BC to AD regime switchADBC = 1 end end if switchADBC == 1 then --displayed y is now in the AD regime Y = Y + 1 --skip y = 0 (DNE) y = Y --easiest solution: start another iterator for these AD y's displayed on a BC year parent AD = 'AD ' end end if BC ~= '' and year <= 5 then --only show 'BC' for parent years <= 5: saves room, easier to read, BCdisp = ' '..BCe --and 6 is the first/last nav year that doesn't need a disambiguator; end --the center/parent year will always show BC, so no need to show it another 10x --populate left/right navy local ysign = y --use y for display & ysign for logic local disp = y..BCdisp if BC ~= '' then ysign = -ysign end local firsttry = firstpart..lspace..AD..y..tspace..BC..lastpart if (minyear <= ysign) and (ysign <= maxyear) then local catlinkAD = catlinkfollowr( frame, firsttry, disp ) --try AD local catlink = catlinkAD --tentative winner if AD ~= '' then --for "ACArt with 5 suppressed elements"-type cats local catlinkNoAD = catlinkfollowr( frame, firstpart..lspace..y..tspace..BC..lastpart, disp ) --try !AD if catlinkNoAD.catexists == true then catlink = catlinkNoAD --usurp elseif listall then tlistall[#tlistall] = tlistall[#tlistall]..' (tried; not displayed)<sup>1</sup>' end end if (AD..BC == '') and (catlink.catexists == false) and (y >= 1000) then --!ADBC & DNE; 4-digit only, to be frugal --try basic hyphenated cats: 1-year, endash, MOS-correct only, no #Rs local yHyph_4 = y..'–'..(y+1) --try 2010–2011 type cats local catlinkHyph_4 = catlinkfollowr( frame, firstpart..lspace..yHyph_4..tspace..BC..lastpart, yHyph_4 ) if catlinkHyph_4.catexists and catlinkHyph_4.rtarget == nil then --exists & no #Rs catlink = catlinkHyph_4 --usurp trackcat(27, 'Category series navigation year and range') else if listall then tlistall[#tlistall] = tlistall[#tlistall]..' (tried; not displayed)<sup>2</sup>' end local yHyph_2 = y..'–'..string.match(y+1, '%d%d$') --try 2010–11 type cats if i == 1 then local yHyph_2_special = (y-1)..'–'..string.match(y, '%d%d$') --try special case 2021 -> 2021–22 local catlinkHyph_2_special = catlinkfollowr( frame, firstpart..lspace..yHyph_2_special..tspace..BC..lastpart, yHyph_2_special ) if catlinkHyph_2_special.catexists and catlinkHyph_2_special.rtarget == nil then --exists & no #Rs catlink = catlinkHyph_2_special --usurp trackcat(27, 'Category series navigation year and range') j = 1 elseif listall then tlistall[#tlistall] = tlistall[#tlistall]..' (tried; not displayed)<sup>3</sup>' end end if not (i == 1 and j == 1) then local catlinkHyph_2 = catlinkfollowr( frame, firstpart..lspace..yHyph_2..tspace..BC..lastpart, yHyph_2 ) if catlinkHyph_2.catexists and catlinkHyph_2.rtarget == nil then --exists & no #Rs catlink = catlinkHyph_2 --usurp trackcat(27, 'Category series navigation year and range') elseif listall then tlistall[#tlistall] = tlistall[#tlistall]..' (tried; not displayed)<sup>4</sup>' end end end end if catlink.rtarget then --#R followed; determine why local r = catlink.rtarget local c = catlink.cat local year_regex = '%d%d%d%d[–-]?%d?%d?%d?%d?' --prioritize year/range stripping, e.g. for "2006 Super 14 season" local hyph_regex = '%d%d%d%d[–-]%d+' --stricter local num_regex = '%d+' --strip any number otherwise local final_regex = nil --best choice goes here if mw.ustring.match(r, year_regex) and mw.ustring.match(c, year_regex) then final_regex = year_regex elseif mw.ustring.match(r, num_regex) and mw.ustring.match(c, num_regex) then final_regex = num_regex end if final_regex then local r_base = mw.ustring.gsub(r, final_regex, '') local c_base = mw.ustring.gsub(c, final_regex, '') if r_base ~= c_base then trackcat(19, 'Category series navigation year redirected (base change)') --acceptable #R target elseif mw.ustring.match(r, hyph_regex) then trackcat(20, 'Category series navigation year redirected (var change)') --e.g. "2008 in Scottish women's football" to "2008–09" else trackcat(21, 'Category series navigation year redirected (other)') --exceptions go here end else trackcat(20, 'Category series navigation year redirected (var change)') --e.g. "V2 engines" to "V-twin engines" end end table.insert(navlist, catlink.navelement) else --OOB vs min/max local hidden = '<span style="visibility:hidden">'..disp..'</span>' table.insert(navlist, hidden) if listall then local dummy = catlinkfollowr( frame, firsttry, disp ) tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end else --center navy if parentBC then BCdisp = ' '..BCe end table.insert(navlist, '<b>'..year..BCdisp..'</b>') end i = i + 1 end --add the list navy = navy..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navy..'</div>' end end --[[==========================={{ nav_roman }}==============================]] local function nav_roman( frame, firstpart, roman, lastpart, minimumrom, maximumrom ) local toarabic = require('Module:ConvertNumeric').roman_to_numeral local toroman = require('Module:Roman').main --sterilize/convert rom/num local num = tonumber(toarabic(roman)) local rom = toroman({ [1] = num }) if num == nil or rom == nil then --out of range or some other error errors = p.errorclass('Function nav_roman can\'t recognize one or more of "'..(num or 'nil')..'" & "'.. (rom or 'nil')..'" in category "'..firstpart..' '..roman..' '..lastpart..'".') return p.failedcat(errors, 'R') end --sterilize min/max local minrom = tonumber(minimumrom or '') or tonumber(toarabic(minimumrom or '')) local maxrom = tonumber(maximumrom or '') or tonumber(toarabic(maximumrom or '')) if minrom < 1 then minrom = 1 end --toarabic() returns -1 on error if maxrom < 1 then maxrom = 9999 end --toarabic() returns -1 on error if minrom > num then minrom = num end if maxrom < num then maxrom = num end --begin navroman local navr = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local i = -5 --nav position while i <= 5 do local n = num + i if n >= 1 then local r = toroman({ [1] = n }) if i ~= 0 then --left/right navr local catlink = catlinkfollowr( frame, firstpart..' '..r..' '..lastpart, r ) if minrom <= n and n <= maxrom then if catlink.rtarget then --a {{Category redirect}} was followed trackcat(22, 'Category series navigation roman numeral redirected') end table.insert(navlist, catlink.navelement) else local hidden = '<span style="visibility:hidden">'..r..'</span>' table.insert(navlist, hidden) if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end else --center navr table.insert(navlist, '<b>'..r..'</b>') end else table.insert(navlist, '<span style="visibility:hidden">I</span>') end i = i + 1 end -- add the list navr = navr..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navr..'</div>' end end --[[=========================={{ nav_nordinal }}============================]] local function nav_nordinal( frame, firstpart, ord, lastpart, minimumord, maximumord ) local nord = tonumber(ord) local minord = tonumber(string.match(minimumord or '', '(-?%d+)[snrt]?[tdh]?')) or -9999 --allow full ord & +/- qualifier local maxord = tonumber(string.match(maximumord or '', '(-?%d+)[snrt]?[tdh]?')) or 9999 --allow full ord & +/- qualifier if string.match(minimumord or '', 'BC') or string.match(minimumord or '', 'RC') then minord = -math.abs(minord) end if string.match(maximumord or '', 'BC') or string.match(maximumord or '', 'RC') then maxord = -math.abs(maxord) end local temporal = string.match(lastpart, 'century') or string.match(lastpart, 'millennium') or string.match(lastpart, 'milley bleeaney') or string.match(lastpart, 'villey bleeaney') or string.match(lastpart, '^eash') local isManxMillenium = string.match(lastpart, 'milley bleeaney') or string.match(lastpart, 'villey bleeaney') local isManxCentury = string.match(lastpart, '^eash') local tspace = ' ' --assume a trailing space after ordinal if string.match(lastpart, '^-') then tspace = '' end --DNE for "19th-century"-type cats --AD/BC switches & vars local ordBCElastparts = { --needed for parent = AD 1-5, when the BC/E format is unknown --lists the lastpart of valid BCE cats --"BCE" removed to match both AD & BCE cats; easier & faster than multiple string.match()s ['-century Hebrew people'] = 'BCE', --WP:CFD/Log/2016 June 21#Category:11th-century BC Hebrew people ['-century Jews'] = 'BCE', --co-nominated ['-century Judaism'] = 'BCE', --co-nominated ['-century rabbis'] = 'BCE', --co-nominated ['-century High Priests of Israel'] = 'BCE', } local parentBC = mw.ustring.match(lastpart, '%s(BCE?)') or mw.ustring.match(lastpart, '%s(RC)') local lastpartNoBC = mw.ustring.gsub(lastpart, '%sBCE?', '') lastpartNoBC = mw.ustring.gsub(lastpartNoBC, '%sRC', '') local BCe = parentBC or ordBCElastparts[lastpartNoBC] or ((isManxMillenium or isManxCentury) and 'RC') or 'BC' local switchADBC = 1 -- 1=AD parent if parentBC then switchADBC = -1 end -- -1=BC parent; possibly adjusted later local O = 0 --secondary iterator for AD-on-a-BC-parent if not temporal and not parentBC and minord < 1 then minord = 1 end if not temporal and parentBC and maxord < 1 then maxord = -1 end if minord > nord*switchADBC then minord = nord*switchADBC end --input error; minord should be <= parent if maxord < nord*switchADBC then maxord = nord*switchADBC end --input error; maxord should be >= parent --begin navnordinal local bnb = '' --border/no border if navborder == false then --for Category series navigation decade and century bnb = 'categorySeriesNavigation-range-transparent' end local navo = '<div class="toccolours categorySeriesNavigation-range '..bnb..'">\n' local navlist = {} local i = -5 --nav position while i <= 5 do local o = nord + i*switchADBC local BC = '' local BCdisp = '' if parentBC then if switchADBC == -1 then --parentBC looking at the BC side if o >= 1 then --the common case BC = ' '..BCe elseif o == 0 then --switch to the AD side BC = '' switchADBC = 1 end end if switchADBC == 1 then --displayed o is now in the AD regime O = O + 1 --skip o = 0 (DNE) o = O --easiest solution: start another iterator for these AD o's displayed on a BC year parent end elseif o <= 0 then --parentAD looking at BC side BC = ' '..BCe o = math.abs(o - 1) --skip o = 0 (DNE) end if BC ~= '' and nord <= 5 then --only show 'BC' for parent ords <= 5: saves room, easier to read, BCdisp = ' '..BCe --and 6 is the first/last nav ord that doesn't need a disambiguator; end --the center/parent ord will always show BC, so no need to show it another 10x --populate left/right navo local oth = (isManxMillenium or isManxCentury) and p.addord(o) or tostring(o) local osign = o if BC ~= '' and temporal then osign = -osign end local hidden = '<span style="visibility:hidden">'..oth..'</span>' if temporal then --e.g. "3rd-century BC" local lastpart = lastpartNoBC --lest we recursively add multiple "BC"s if isManxMillenium then -- 1d and 2h trigger lenition: villey bleeaney -- 3oo and above use the base form: milley bleeaney local ones = o % 10 local correct_form if ones == 1 or ones == 2 then correct_form = 'villey bleeaney' else correct_form = 'milley bleeaney' end local replacement = correct_form if BC ~= '' then replacement = replacement .. BC end lastpart = string.gsub(lastpart, temporal, replacement, 1) --swap in the correct mutation, preserving the rest of lastpart elseif BC ~= '' then lastpart = string.gsub(lastpart, temporal, temporal..BC) --replace BC if needed end local catlink = catlinkfollowr( frame, firstpart..' '..oth..tspace..lastpart, oth..BCdisp ) if (minord <= osign) and (osign <= maxord) then if catlink.rtarget then --a {{Category redirect}} was followed trackcat(23, 'Category series navigation nordinal redirected') end table.insert(navlist, navcenter(i, catlink)) else table.insert(navlist, hidden) if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end elseif minord <= osign and osign <= maxord then local catTarget = firstpart..' '..oth..tspace..lastpartNoBC if BC ~= '' then catTarget = firstpart..' '..oth..tspace..lastpartNoBC..BC end local dispText = oth..BCdisp local catlink = catlinkfollowr( frame, catTarget, dispText ) if catlink.rtarget then trackcat(23, 'Category series navigation nordinal redirected') end table.insert(navlist, navcenter(i, catlink)) else --out-of-range: hide table.insert(navlist, hidden) if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end i = i + 1 end navo = navo..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navo..'</div>' end end --[[========================={{ nav_wordinal }}=============================]] local function nav_wordinal( frame, firstpart, word, lastpart, minimumword, maximumword, ordinal, frame ) --Module:ConvertNumeric.spell_number2() args: -- ordinal == true : 'second' is output instead of 'two' -- ordinal == false: 'two' is output instead of 'second' local ord2eng = require('Module:ConvertNumeric').spell_number2 local eng2ord = require('Module:ConvertNumeric').english_to_ordinal local th = 'th' if not ordinal then th = '' eng2ord = require('Module:ConvertNumeric').english_to_numeral end local capitalize = nil ~= string.match(word, '^%u') --determine capitalization local nord = eng2ord(string.lower(word)) --operate on/with lowercase, and restore any capitalization later local lspace = ' ' --assume a leading space (most common) local tspace = ' ' --assume a trailing space (most common) if string.match(firstpart, '[%-%(]$') then lspace = '' end --DNE for "Straight-eight engines"-type cats if string.match(lastpart, '^[%-%)]' ) then tspace = '' end --DNE for "Nine-cylinder engines"-type cats --sterilize min/max local maxword_default = 99 local maxword = maxword_default local minword = 1 if minimumword then local num = tonumber(minimumword) if num and 0 < num and num < maxword then minword = num else local ord = eng2ord(minimumword) if 0 < ord and ord < maxword then minword = ord end end end if maximumword then local num = tonumber(maximumword) if num and 0 < num and num < maxword then maxword = num else local ord = eng2ord(maximumword) if 0 < ord and ord < maxword then maxword = ord end end end if minword > nord then minword = nord end if maxword < nord then maxword = nord end --determine max existing cat local listoverride = true local n_max = nord local m = 1 while m <= 5 do local n = nord + m local nth = p.addord(n) if not ordinal then nth = n end local w = ord2eng{ num = n, ordinal = ordinal, capitalize = capitalize } local catlink = catlinkfollowr( frame, firstpart..lspace..w..tspace..lastpart, nth, nil, listoverride ) if catlink.catexists then n_max = n end m = m + 1 end --begin navwordinal local navw = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local prepad = '' local i = -5 --nav position while i <= 5 do local n = nord + i if n >= 1 then local nth = p.addord(n) if not ordinal then nth = n end if i ~= 0 then --left/right navw local w = ord2eng{ num = n, ordinal = ordinal, capitalize = capitalize } local catlink = catlinkfollowr( frame, firstpart..lspace..w..tspace..lastpart, nth ) if minword <= n and n <= maxword then if catlink.rtarget then --a {{Category redirect}} was followed trackcat(24, 'Category series navigation wordinal redirected') end if n <= n_max or maxword ~= maxword_default then table.insert(navlist, prepad..catlink.navelement) --display normally prepad = '' else local postpad = '<span style="visibility:hidden"> • '..nth..'</span>' navlist[#navlist] = (navlist[#navlist] or '')..postpad if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..postpad..')' end end else local postpad = '<span style="visibility:hidden"> • '..nth..'</span>' navlist[#navlist] = (navlist[#navlist] or '')..postpad if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..postpad..')' end end else --center navw table.insert(navlist, prepad..'<b>'..nth..'</b>') prepad = '' end else --n < 1 prepad = prepad..'<span style="visibility:hidden"> • '..'0'..th..'</span>' if listall then tlistall[#tlistall] = (tlistall[#tlistall] or '')..' (x)' end end i = i + 1 end -- Add the list navw = navw..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navw..'</div>' end end --[[==========================={{ find_var }}===============================]] local function find_var( pn ) --Extracts the variable text (e.g. 2015, 2015–16, 2000s, 3rd, III, etc.) from a string, --and returns { ['vtype'] = <'year'|'season'|etc.>, <v> = <2015|2015–16|etc.> } local pagename = currtitle.text if pn and pn ~= '' then pagename = pn end local cpagename = 'Ronney:'..pagename --limited-Lua-regex workaround local d_season = mw.ustring.match(cpagename, ':(%d+yn).+%(%d+[–-]%d+%)') --i.e. "1760yn in the Province of Quebec (1763–1791)" local y_season = mw.ustring.match(cpagename, ':(%d+) .+%(%d+[–-]%d+%)') --i.e. "1763 establishments in the Province of Quebec (1763–1791)" local e_season = mw.ustring.match(cpagename, '%s(%d+[–-])$') or --irreg; ending unknown, e.g. "Members of the Scottish Parliament 2021–" mw.ustring.match(cpagename, '%s(%d+[–-]jiu)$') --e.g. "UK MPs 2019–present" local season = mw.ustring.match(cpagename, '[:%s%(](%d+[–-]%d+)[%)%s]') or --split in 2 b/c you can't frontier '$'/eos? mw.ustring.match(cpagename, '[:%s](%d+[–-]%d+)$') local tvseason = mw.ustring.match(cpagename, 'season (%d+)') or mw.ustring.match(cpagename, 'series (%d+)') or mw.ustring.match(cpagename, 'meetup (%d+)') -- Require at least the two-character core of an ordinal suffix (st, nd, rd, th) -- so that bare numbers and yn-suffixed decades do not match as nordinals. local nordinal = string.match(pagename, '%d+[snrt][tdh]') or string.match(pagename, '%d+oo%f[%A]') or string.match(pagename, '%d+[dh]%f[%A]') local decade = mw.ustring.match(cpagename, '[:%s](%d+yn)[%s-]') or mw.ustring.match(cpagename, '[:%s](%d+yn)$') local year = mw.ustring.match(cpagename, '[:%s](%d%d%d%d)%s') or --prioritize 4-digit years mw.ustring.match(cpagename, '[:%s](%d%d%d%d)$') or mw.ustring.match(cpagename, '[:%s](%d+)%s') or mw.ustring.match(cpagename, '[:%s](%d+)$') or --expand/combine exceptions below as needed mw.ustring.match(cpagename, '[:%s](%d+)-related') or mw.ustring.match(cpagename, '[:%s](%d+)-cylinder') or mw.ustring.match(cpagename, '[:%-VW](%d+)%s') --e.g. "Straight-8 engines" local roman = mw.ustring.match(cpagename, '%s([IVXLCDM]+)%s') local found = d_season or y_season or e_season or season or tvseason or nordinal or decade or year or roman if found then if string.match(found, '%d%d%d%d%d') == nil then --return in order of decreasing complexity/chance for duplication if nordinal and season --i.e. "18th-century establishments in the Province of Quebec (1763–1791)" then return { ['vtype'] = 'nordinal', ['v'] = nordinal } end if d_season then return { ['vtype'] = 'decade', ['v'] = d_season } end if y_season then return { ['vtype'] = 'year', ['v'] = y_season } end if e_season then return { ['vtype'] = 'ending', ['v'] = e_season } end if season then return { ['vtype'] = 'season', ['v'] = season } end if tvseason then return { ['vtype'] = 'tvseason', ['v'] = tvseason } end if decade then return { ['vtype'] = 'decade', ['v'] = decade } end if nordinal then return { ['vtype'] = 'nordinal', ['v'] = nordinal } end if year then return { ['vtype'] = 'year', ['v'] = year } end if roman then return { ['vtype'] = 'roman', ['v'] = roman } end end else --try wordinals ('zeroth' to 'ninety-ninth' only) local eng2ord = require('Module:ConvertNumeric').english_to_ordinal local split = mw.text.split(pagename, ' ') for i=1, #split do if eng2ord(split[i]) > -1 then return { ['vtype'] = 'wordinal', ['v'] = split[i] } end end --try English numerics ('one'/'single' to 'ninety-nine' only) local eng2num = require('Module:ConvertNumeric').english_to_numeral local split = mw.text.split(pagename, '[%s%-]') --e.g. "Nine-cylinder engines" for i=1, #split do if eng2num(split[i]) > -1 then return { ['vtype'] = 'enumeric', ['v'] = split[i] } end end end errors = p.errorclass('Function find_var can\'t find the variable text in category "'..pagename..'".') return { ['vtype'] = 'error', ['v'] = p.failedcat(errors, 'V') } end --[[==========================================================================]] --[[ Main ]] --[[==========================================================================]] function p.csn( frame ) --arg checks & handling local args = frame:getParent().args checkforunknownparams(args) --for template args checkforunknownparams(frame.args) --for #invoke'd args local cat = args['cat'] --'testcase' alias for catspace local list = args['list-all-links'] --debugging utility to output all links & followed #Rs local follow = args['follow-redirects'] --default 'yes' local testcase = args['testcase'] local testcasegap = args['testcasegap'] local minimum = args['min'] local maximum = args['max'] local skip_gaps = args['skip-gaps'] local show = args['show'] if show and show ~= '' then if show == 'skip-gaps' then return skipgaps_limit elseif show == 'term-limit' then return term_limit elseif show == 'hgap-limit' then return hgap_limit elseif show == 'ygap-limit' then return ygap_limit end end --apply args local pagename = testcase or cat or currtitle.text local testcaseindent = '' if testcasecolon == ':' then testcaseindent = '\n::' end if follow and follow == 'no' then followRs = false end if list and list == 'yes' then listall = true end if skip_gaps and skip_gaps == 'yes' then skipgaps = true trackcat(26, 'Category series navigation using skip-gaps parameter') end --ns checks if currtitle.nsText == 'Category' then if cat and cat ~= '' then trackcat(1, 'Category series navigation using cat parameter') end if testcase and testcase ~= '' then trackcat(2, 'Category series navigation using testcase parameter') end elseif currtitle.nsText == '' then trackcat(30, 'Category series navigation in mainspace') end --find the variable parts of pagename local findvar = find_var(pagename) if findvar.vtype == 'error' then --basic format error checking in find_var() return findvar.v..table.concat(ttrackingcats) end local start = string.match(findvar.v, '^%d+') --the rest is static local findvar_escaped = string.gsub( findvar.v, '%-', '%%%-') local firstpart, lastpart = string.match(pagename, '^(.-)'..findvar_escaped..'(.*)$') if findvar.vtype == 'tvseason' then --double check for cases like "30 Rock (season 3) episodes" firstpart, lastpart = string.match(pagename, '^(.-season )'..findvar_escaped..'(.*)$') if firstpart == nil then firstpart, lastpart = string.match(pagename, '^(.-series )'..findvar_escaped..'(.*)$') end if firstpart == nil then firstpart, lastpart = string.match(pagename, '^(.-meetup )'..findvar_escaped..'(.*)$') end end firstpart = mw.text.trim(firstpart or '') lastpart = mw.text.trim(lastpart or '') --call the appropriate nav function, in order of decreasing popularity if findvar.vtype == 'year' then --e.g. "500", "2001"; nav_year..nav_decade; ~75% of cats local nav1 = nav_year( frame, firstpart, start, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) local dec = math.floor(findvar.v/10) local decadecat = nil local firstpart_dec = firstpart if firstpart_dec ~= '' then local swapped for from, to in pairs(DECADE_LINKERS) do local stem = mw.ustring.match(firstpart_dec, '^(.-)%s*' .. mw.ustring.gsub(from, '%p', '%%%0') .. '$') if stem then swapped = mw.text.trim(stem .. ' ' .. to) break end end firstpart_dec = swapped or (firstpart_dec..' the') elseif firstpart_dec == 'AD' and dec <= 1 then firstpart_dec = '' if dec == 0 then dec = '' end end local decade = dec..'0yn ' decadecat = mw.text.trim( firstpart_dec..' '..decade..lastpart ) local exists = catexists(decadecat) if exists then navborder = false local nav2 = nav_decade( frame, firstpart_dec, decade, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) return wrap( nav1, nav2 ) elseif ttrackingcats[16] ~= '' then --nav_year isolated; check nav_hyphen (e.g. UK MPs 1974, Moldovan MPs 2009, etc.) local hyphen = '–' local finish = start local nav2 = nav_hyphen( frame, start, hyphen, finish, firstpart, lastpart, minimum, maximum, testcasegap )..testcaseindent..table.concat(ttrackingcats) if ttrackingcats[16] ~= '' then return wrap( nav1 ) --still isolated; rv to nav_year else return wrap( nav2 ) end else --regular nav_year return wrap( nav1 ) end elseif findvar.vtype == 'decade' then --e.g. "0yn", "2010yn"; nav_decade..nav_nordinal; ~12% of cats local nav1 = nav_decade( frame, firstpart, start, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) local decade = tonumber(string.match(findvar.v, '^(%d+)yn')) local century = math.floor( ((decade-1)/100) + 1 ) --from {{CENTURY}} if century == 0 then century = 1 end --no 0th century if string.match(decade, '00$') then century = century + 1 --'2000' is in the 20th, but the rest of the 2000s is in the 21st end local clastpart = ' century '..lastpart local centurycat = mw.text.trim( firstpart..' '..p.addord(century)..clastpart ) local exists = catexists(centurycat) if not exists then --check for hyphenated century clastpart = '-century '..lastpart centurycat = mw.text.trim( firstpart..' '..p.addord(century)..clastpart ) exists = catexists(centurycat) end if exists then navborder = false trackcat(29, 'Category series navigation decade and century') local nav2 = nav_nordinal( frame, firstpart, century, clastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) return wrap( nav1, nav2 ) else return wrap( nav1 ) end elseif findvar.vtype == 'nordinal' then --e.g. "1st", "99th"; ~7.5% of cats return wrap( nav_nordinal( frame, firstpart, start, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'season' then --e.g. "1–4", "1999–2000", "2001–02", "2001–2002", "2005–2010", etc.; ~5.25% local hyphen, finish = mw.ustring.match(findvar.v, '%d([–-])(%d+)') --ascii 150 & 45 (ndash & keyboard hyphen); mw req'd return wrap( nav_hyphen( frame, start, hyphen, finish, firstpart, lastpart, minimum, maximum, testcasegap )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'tvseason' then --e.g. "1", "15" but preceded with "season" or "series"; <1% of cats return wrap( nav_tvseason( frame, firstpart, start, lastpart, maximum )..testcaseindent..table.concat(ttrackingcats) ) --"minimum" defaults to 1 elseif findvar.vtype == 'wordinal' then --e.g. "first", "ninety-ninth"; <<1% of cats local ordinal = true return wrap( nav_wordinal( frame, firstpart, findvar.v, lastpart, minimum, maximum, ordinal, frame )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'enumeric' then --e.g. "one", "ninety-nine"; <<1% of cats local ordinal = false return wrap( nav_wordinal( frame, firstpart, findvar.v, lastpart, minimum, maximum, ordinal, frame )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'roman' then --e.g. "I", "XXVIII"; <<1% of cats return wrap( nav_roman( frame, firstpart, findvar.v, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'ending' then --e.g. "2021–" (irregular; ending unknown); <<<1% of cats local hyphen, finish = mw.ustring.match(findvar.v, '%d([–-])present$'), -1 --ascii 150 & 45 (ndash & keyboard hyphen); mw req'd if hyphen == nil then hyphen, finish = mw.ustring.match(findvar.v, '%d([–-])$'), 0 --0/-1 are hardcoded switches for nav_hyphen() end return wrap( nav_hyphen( frame, start, hyphen, finish, firstpart, lastpart, minimum, maximum, testcasegap )..testcaseindent..table.concat(ttrackingcats) ) else --malformed errors = p.errorclass('Failed to determine the appropriate nav function from malformed season "'..findvar.v..'". ') return p.failedcat(errors, 'N')..table.concat(ttrackingcats) end end return p fhhb4gz6ep7nja63tt731tsckpfzqhb 396389 396388 2026-11-06T14:00:21Z MacTire02 219 ++ 396389 Scribunto text/plain require('strict') local p = {} -- Manx: the linking words change between a year category and its decade category local DECADE_LINKERS = { ["veih'n vlein"] = "veih ny", -- Filmyn X veih'n vlein 1995 -> Filmyn X veih ny 1990yn ["'sy vlein"] = "ayns ny", -- Scannaneaght 'sy vlein 1995 -> Scannaneaght ayns ny 1990yn } -- Manx: decade category wording -> century category wording local CENTURY_LINKERS = { ["veih ny"] = "veih'n", -- Filmyn X veih ny 1990yn -> Filmyn X veih'n 20oo eash ["ayns ny"] = "'sy", -- Scannaneaght ayns ny 1990yn -> Scannaneaght 'sy 20oo eash } local horizontal = require('Module:List').horizontal local rtarget = require('Module:Resolve category redirect').rtarget --[[==========================================================================]] --[[ Globals ]] --[[==========================================================================]] local currtitle = mw.title.getCurrentTitle() local nexistingcats = 0 local errors = '' local testcasecolon = '' local testcases = string.match(currtitle.subpageText, '^testcases') if testcases then testcasecolon = ':' end local navborder = true local followRs = true local skipgaps = false local skipgaps_limit = 50 local term_limit = 10 local hgap_limit = 6 local ygap_limit = 5 local listall = false local tlistall = {} local tlistallbwd = {} local tlistallfwd = {} local ttrackingcats = { --when reindexing, Ctrl+H 'trackcat(13,' & 'ttrackingcats[16]' '', -- [1] placeholder for [[Category:Category series navigation using cat parameter]] '', -- [2] placeholder for [[Category:Category series navigation using testcase parameter]] '', -- [3] placeholder for [[Category:Category series navigation using unknown parameter]] '', -- [4] placeholder for [[Category:Category series navigation range not using en dash]] '', -- [5] placeholder for [[Category:Category series navigation range abbreviated (MOS)]] '', -- [6] placeholder for [[Category:Category series navigation range redirected (base change)]] '', -- [7] placeholder for [[Category:Category series navigation range redirected (var change)]] '', -- [8] placeholder for [[Category:Category series navigation range redirected (end)]] '', -- [9] placeholder for [[Category:Category series navigation range redirected (MOS)]] '', --[10] placeholder for [[Category:Category series navigation range redirected (other)]] '', --[11] placeholder for [[Category:Category series navigation range gaps]] '', --[12] placeholder for [[Category:Category series navigation range irregular]] '', --[13] placeholder for [[Category:Category series navigation range irregular, 0-length]] '', --[14] placeholder for [[Category:Category series navigation range ends (present)]] '', --[15] placeholder for [[Category:Category series navigation range ends (blank, MOS)]] '', --[16] placeholder for [[Category:Category series navigation isolated]] '', --[17] placeholder for [[Category:Category series navigation default season gap size]] '', --[18] placeholder for [[Category:Category series navigation decade redirected]] '', --[19] placeholder for [[Category:Category series navigation year redirected (base change)]] '', --[20] placeholder for [[Category:Category series navigation year redirected (var change)]] '', --[21] placeholder for [[Category:Category series navigation year redirected (other)]] '', --[22] placeholder for [[Category:Category series navigation roman numeral redirected]] '', --[23] placeholder for [[Category:Category series navigation nordinal redirected]] '', --[24] placeholder for [[Category:Category series navigation wordinal redirected]] '', --[25] placeholder for [[Category:Category series navigation TV season redirected]] '', --[26] placeholder for [[Category:Category series navigation using skip-gaps parameter]] '', --[27] placeholder for [[Category:Category series navigation blein as reayn]] '', --[28] placeholder for [[Category:Category series navigation blein as jeihaght]] '', --[29] placeholder for [[Category:Category series navigation jeihaght as eash]] '', --[30] placeholder for [[Category:Category series navigation in mainspace]] '', --[31] placeholder for [[Category:Category series navigation redirection error]] } local avoidself = (not string.match(currtitle.text, 'Category series navigation with') and not string.match(currtitle.text, 'Category series navigation.*/doc') and not string.match(currtitle.text, 'Category series navigation.*/sandbox') and currtitle.text ~= 'Category series navigation' and currtitle.nsText:gsub('_', ' ') ~= 'User talk' and -- [[phab:T369784]] currtitle.nsText:gsub('_', ' ') ~= 'Template talk' and (currtitle.nsText ~= 'Template' or testcases)) --avoid nested transclusion errors (i.e. {{Infilmdecade}}) --[[==========================================================================]] --[[ Utility & category functions ]] --[[==========================================================================]] --Determine if a category exists (in a function for easier localization). local function catexists( title ) return mw.title.new( title, 'Category' ).exists end --Error message handling. function p.errorclass( msg ) return mw.text.tag( 'span', {class='error mw-ext-cite-error'}, '<b>Error!</b> '..string.gsub(msg, '&#', '&amp;#') ) end --Failure handling. function p.failedcat( errors, sortkey ) if avoidself then return (errors or '')..'&#42;&#42;&#42;Category series navigation failed to generate navbox***'.. '[['..testcasecolon..'Category:Category series navigation failed to generate navbox|'..(sortkey or 'O')..']]\n' end return '' end --Tracking cat handling. -- key: 15 (when reindexing ttrackingcats{}, Ctrl+H 'trackcat(13,' & 'ttrackingcats[16]') -- cat: 'Category series navigation isolated'; '' to remove --Used by main, all nav_*(), & several utility functions. local function trackcat( key, cat ) if avoidself and key and cat then if cat ~= '' then ttrackingcats[key] = '[['..testcasecolon..'Category:'..cat..']]' else ttrackingcats[key] = '' end end return end --Check for unknown parameters. --Used by main only. local function checkforunknownparams( tbl ) local knownparams = { --parameter whitelist ['min'] = 'min', ['max'] = 'max', ['cat'] = 'cat', ['show'] = 'show', ['testcase'] = 'testcase', ['testcasegap'] = 'testcasegap', ['skip-gaps'] = 'skip-gaps', ['list-all-links'] = 'list-all-links', ['follow-redirects'] = 'follow-redirects', } for k, _ in pairs (tbl) do if knownparams[k] == nil then trackcat(3, 'Category series navigation using unknown parameter') break end end end --Check for nav_*() navigational isolation (not necessarily an error). --Used by all nav_*(). local function isolatedcat() if nexistingcats == 0 then trackcat(16, 'Category series navigation isolated') end end --Similar to {{LinkCatIfExists2}}: make a piped link to a category, if it exists; --if it doesn't exist, just display the greyed link title without linking. --Follows {{Category redirect}}s. --Returns { -- ['cat'] = cat, -- ['catexists'] = true, -- ['rtarget'] = <#R target>, -- ['navelement'] = <#R target navelement>, -- ['displaytext'] = displaytext, -- } -- if #R followed; --returns { -- ['cat'] = cat, -- ['catexists'] = <true|false>, -- ['rtarget'] = nil, -- ['navelement'] = <cat navelement>, -- ['displaytext'] = displaytext, -- } -- otherwise. --Used by all nav_*(). local function catlinkfollowr( frame, cat, displaytext, displayend, listoverride ) cat = mw.text.trim(cat or '') displaytext = mw.text.trim(displaytext or '') displayend = displayend or false --bool flag to override displaytext IIF the cat/target is terminal (e.g. "2021–present" or "2021–") local disp = cat if displaytext ~= '' then --use 'displaytext' parameter if present disp = mw.ustring.gsub(displaytext, '%s+%(.+$', ''); --strip any trailing disambiguator end local link, nilorR local exists = catexists(cat) if exists then nexistingcats = nexistingcats + 1 if followRs then local R = rtarget(cat, frame) --find & follow #R if R ~= cat then --#R followed nilorR = R end if displayend then local y, hyph, ending = mw.ustring.match(R, '^.-(%d+)([–-])(.*)$') if ending == 'present' then disp = y..hyph..ending elseif ending == '' then disp = y..hyph..'<span style="visibility:hidden">'..y..'</span>' --hidden y to match spacing end end link = '[[:Category:'..R..'|'..disp..']]' else link = '[[:Category:'..cat..'|'..disp..']]' end else link = '<span class="categorySeriesNavigation-item-inactive">'..disp..'</span>' end if listall and listoverride == nil then if nilorR then --#R followed table.insert( tlistall, '[[:Category:'..cat..']] → '..'[[:Category:'..nilorR..']] ('..link..')' ) else --no #R table.insert( tlistall, '[[:Category:'..cat..']] ('..link..')' ) end end return { ['cat'] = cat, ['catexists'] = exists, ['rtarget'] = nilorR, ['navelement'] = link, ['displaytext'] = disp, } end --Returns a numbered list of all {{Category redirect}}s followed by catlinkfollowr() -> rtarget(). --For a nav_hyphen() cat, also returns a formatted list of all cats searched for & found, & all loop indices. --Used by all nav_*(). local function listalllinks() local nl = '\n# ' local out = '' if currtitle.nsText == 'Category' then errors = p.errorclass('The <b><code>|list-all-links=yes</code></b> parameter/utility '.. 'should not be saved in category space, only previewed.') out = p.failedcat(errors, 'Z') end local bwd, fwd = '', '' if tlistallbwd[1] then bwd = '\n\nbackward search:'..nl..table.concat(tlistallbwd, nl) end if tlistallfwd[1] then fwd = '\n\nforward search:'..nl..table.concat(tlistallfwd, nl) end if tlistall[1] then return out..nl..table.concat(tlistall, nl)..bwd..fwd else return out..nl..'No links found!?'..bwd..fwd end end --Returns the difference b/w 2 ints separated by endash|hyphen, nil if error. --Used by nav_hyphen() only. local function find_duration( cat ) local from, to = mw.ustring.match(cat, '(%d+)[–-](%d+)') if from and to then if to == '00' then return nil end --doesn't follow MOS:DATERANGE if (#from == 4) and (#to == 2) then --1900-01 to = string.match(from, '(%d%d)%d%d')..to --1900-1901 elseif (#from == 2) and (#to == 4) then -- 01-1902 from = string.match(to, '(%d%d)%d%d')..from --1901-1902 end return (tonumber(to) - tonumber(from)) end return 0 end --Returns the ending of a terminal cat, and sets the appropriate tracking cat, else nil. --Used by nav_hyphen() only. local function find_terminaltxt( cat ) local terminaltxt = nil if mw.ustring.match(cat, '%d+[–-]present$') then terminaltxt = 'present' trackcat(14, 'Category series navigation range ends (present)') elseif mw.ustring.match(cat, '%d+[–-]$') then terminaltxt = '' trackcat(15, 'Category series navigation range ends (blank, MOS)') end return terminaltxt end --Returns an unsigned string of the 1-4 digit decade ending in "0", else nil. --Used by nav_decade() only. local function sterilizedec( decade ) if decade == nil or decade == '' then return nil end local dec = string.match(decade, '^[-%+]?(%d?%d?%d?0)$') or string.match(decade, '^[-%+]?(%d?%d?%d?0)%D') if dec then return dec else --fix 2-4 digit decade local decade_fixed234 = string.match(decade, '^[-%+]?(%d%d?%d?)%d$') or string.match(decade, '^[-%+]?(%d%d?%d?)%d%D') if decade_fixed234 then return decade_fixed234..'0' end --fix 1-digit decade local decade_fixed1 = string.match(decade, '^[-%+]?(%d)$') or string.match(decade, '^[-%+]?(%d)%D') if decade_fixed1 then return '0' end --unfixable return nil end end --Check for nav_hyphen default gap size + isolatedcat() (not necessarily an error). --Used by nav_hyphen() only. local function defaultgapcat( bool ) if bool and nexistingcats == 0 then --using "nexistingcats > 0" isn't as useful, since the default gap size obviously worked trackcat(17, 'Category series navigation default season gap size') end end --12 -> 12h, etc. --Used by nav_nordinal() & nav_wordinal(). function p.addord( i ) if tonumber(i) then local s = tostring(i) local n = tonumber(i) local ones = n % 10 if ones == 1 then return s .. 'd' elseif ones == 2 then return s .. 'h' else return s .. 'oo' end end return i end --Returns the properly formatted central nav element. --Expects an integer i, and a catlinkfollowr() table. --Used by nav_decade() & nav_ordinal() only. local function navcenter( i, catlink ) if i == 0 then --center nav element if navborder == true then return '<b>'..catlink.displaytext..'</b>' else return '<b>'..catlink.navelement..'</b>' end else return catlink.navelement end end --Wrap one or two navs in a <div> with ARIA attributes; add TemplateStyles --before it. This also aligns the navs in case some floating element (like a --portal box) breaks their alignment. --Used by main only. local function wrap( nav1, nav2 ) local templatestyles = require("Module:TemplateStyles")( "Module:Category series navigation/styles.css" ) local prepare = function (nav) if nav then nav = '\n'..nav else nav = '' end return nav end return templatestyles.. '<div class="categorySeriesNavigation" role="navigation" aria-label="Range">'.. prepare(nav1)..prepare(nav2).. '\n</div>' end --[[==========================================================================]] --[[ Formerly separated templates/modules ]] --[[==========================================================================]] --[[==========================={{ nav_hyphen }}=============================]] local function nav_hyphen( frame, start, hyph, finish, firstpart, lastpart, minseas, maxseas, testgap ) --Expects a PAGENAME of the form "Some sequential 2015–16 example cat", where -- start = 2015 -- hyph = – -- finish = 16 (sequential years can be abbreviated, but others should be full year, e.g. "2001–2005") -- firstpart = Some sequential -- lastpart = example cat -- minseas = 1800 ('min' starting season shown; optional; defaults to -9999) -- maxseas = 2000 ('max' starting season shown; optional; defaults to 9999; 2000 will show 2000-01) -- testgap = 0 (testcasegap parameter for easier testing; optional) --sterilize start if string.match(start or '', '^%d%d?%d?%d?$') == nil then --1-4 digits, AD only local start_fixed = mw.ustring.match(start or '', '^%s*(%d%d?%d?%d?)%D') if start_fixed then start = start_fixed else errors = p.errorclass('Function nav_hyphen can\'t recognize the number "'..(start or '')..'" '.. 'in the first part of the "season" that was passed to it. '.. 'For e.g. "2015–16", "2015" is expected via "|2015|–|16|".') return p.failedcat(errors, 'H') end end local nstart = tonumber(start) --en dash check if hyph ~= '–' then trackcat(4, 'Category series navigation range not using en dash') --nav still processable, but track end --sterilize finish & check for weird parents local tgaps = {} --table of gap sizes found b/w terms { [<gap size found>] = 1 } for -3 <= j <= 3 local tgapsj4 = {} --table of gap sizes found b/w terms { [<gap size found>] = 1 } for j = { -4, 4 } local ttlens = {} --table of term lengths found w/i terms { [<term length found>] = 1 } local tirregs = {} --table of ir/regular-term-length cats' "from"s & "to"s found local regularparent = true if (finish == -1) or --"Members of the Scottish Parliament 2021–present" (finish == 0) --"Members of the Scottish Parliament 2021–" then regularparent = false if maxseas == nil or maxseas == '' then maxseas = start --hide subsequent ranges end if finish == -1 then trackcat(14, 'Category series navigation range ends (present)') else trackcat(15, 'Category series navigation range ends (blank, MOS)') end elseif (start == finish) and (ttrackingcats[16] ~= '') --nav_year found isolated; check for surrounding hyphenated terms (e.g. UK MPs 1974) then trackcat(16, '') --reset for another check later trackcat(13, 'Category series navigation range irregular, 0-length') ttlens[0] = 1 --calc ttlens for std cases below regularparent = 'isolated' end if (string.match(finish or '', '^%d+$') == nil) and (string.match(finish or '', '^%-%d+$') == nil) then local finish_fixed = mw.ustring.match(finish or '', '^%s*(%d%d?%d?%d?)%D') if finish_fixed then finish = finish_fixed else errors = p.errorclass('Function nav_hyphen can\'t recognize "'..(finish or '')..'" '.. 'in the second part of the "season" that was passed to it. '.. 'For e.g. "2015–16", "16" is expected via "|2015|–|16|".') return p.failedcat(errors, 'I') end else if string.len(finish) >= 5 then errors = p.errorclass('The second part of the season passed to function nav_hyphen should only be four or fewer digits, not "'..(finish or '')..'". '.. 'See [[MOS:DATERANGE]] for details.') return p.failedcat(errors, 'J') end end local nfinish = tonumber(finish) --save sterilized parent range for easier lookup later tirregs['from0'] = nstart tirregs['to0'] = nfinish --sterilize min/max local nminseas_default = -9999 local nmaxseas_default = 9999 local nminseas = tonumber(minseas) or nminseas_default --same behavior as nav_year local nmaxseas = tonumber(maxseas) or nmaxseas_default --same behavior as nav_year if nminseas > nstart then nminseas = nstart end if nmaxseas < nstart then nmaxseas = nstart end local lspace = ' ' --assume a leading space (most common) local tspace = ' ' --assume a trailing space (most common) if string.match(firstpart, '%($') then lspace = '' end --DNE for "Madrid city councillors (2007–2011)"-type cats if string.match(lastpart, '^%)') then tspace = '' end --DNE for "Madrid city councillors (2007–2011)"-type cats --calculate term length/intRAseason size & finishing year local t = 1 while t <= term_limit and regularparent == true do local nish = nstart + t --use switchADBC to flip this sign to work for years BC, if/when the time comes if (nish == nfinish) or (string.match(nish, '%d?%d$') == finish) then ttlens[t] = 1 break end if t == term_limit then errors = p.errorclass('Function nav_hyphen can\'t determine a reasonable term length for "'..start..hyph..finish..'".') return p.failedcat(errors, 'K') end t = t + 1 end --apply MOS:DATERANGE to parent local lenstart = string.len(start) local lenfinish = string.len(finish) if lenstart == 4 and regularparent == true then --"2001–..." if t == 1 then --"2001–02" & "2001–2002" both allowed if lenfinish ~= 2 and lenfinish ~= 4 then errors = p.errorclass('The second part of the season passed to function nav_hyphen should be two or four digits, not "'..finish..'".') return p.failedcat(errors, 'L') end else --"2001–2005" is required for t > 1; track "2001–05"; anything else = error if lenfinish == 2 then trackcat(5, 'Category series navigation range abbreviated (MOS)') elseif lenfinish ~= 4 then errors = p.errorclass('The second part of the season passed to function nav_hyphen should be four digits, not "'..finish..'".') return p.failedcat(errors, 'M') end end if finish == '00' then --full year required regardless of term length trackcat(5, 'Category series navigation range abbreviated (MOS)') end end --calculate intERseason gap size local hgap_default = 0 --assume & start at the most common case: 2001–02 -> 2002–03, etc. local hgap_limit_reg = hgap_limit --less expensive per-increment (inc x 4) local hgap_limit_irreg = hgap_limit --more expensive per-increment (inc x 23 = inc x (k_bwd + k_fwd) = inc x (12 + 11)) local hgap_success = false local hgap = hgap_default while hgap <= hgap_limit_reg and regularparent == true do --verify local prevseason2 = firstpart..lspace..(nstart-t-hgap)..hyph..string.match(nstart-hgap, '%d?%d$') ..tspace..lastpart local nextseason2 = firstpart..lspace..(nstart+t+hgap)..hyph..string.match(nstart+2*t+hgap, '%d?%d$')..tspace..lastpart local prevseason4 = firstpart..lspace..(nstart-t-hgap)..hyph..(nstart-hgap) ..tspace..lastpart local nextseason4 = firstpart..lspace..(nstart+t+hgap)..hyph..(nstart+2*t+hgap)..tspace..lastpart if t == 1 then --test abbreviated range first, then full range, to be frugal with expensive functions if catexists(prevseason2) or --use 'or', in case we're at the edge of the cat structure, catexists(nextseason2) or --or we hit a "–00"/"–2000" situation on one side catexists(prevseason4) or catexists(nextseason4) then hgap_success = true break end elseif t > 1 then --test full range first, then abbreviated range, to be frugal with expensive functions if catexists(prevseason4) or --use 'or', in case we're at the edge of the cat structure, catexists(nextseason4) or --or we hit a "–00"/"–2000" situation on one side catexists(prevseason2) or catexists(nextseason2) then hgap_success = true break end end hgap = hgap + 1 end if hgap_success == false then hgap = tonumber(testgap) or hgap_default --tracked via defaultgapcat() end --preliminary scan to determine ir/regular spacing of nearby cats; --to limit expensive function calls, MOS:DATERANGE-violating cats are ignored; --an irregular-term-length series should follow "YYYY..hyph..YYYY" throughout local jlimit = 4 --4-a-side if all YYYY-YY, 3-a-side if all YYYY-YYYY, with some threshold in between if hgap <= hgap_limit_reg then --also to isolate temp vars --find # of nav-visible ir/regular-term-length cats local bwanchor = nstart --backward anchor/common year local fwanchor = bwanchor + t --forward anchor/common year if regularparent == 'isolated' then fwanchor = bwanchor end local spangreen = '[<span style="color:green">j, g, k = ' --used for/when debugging via list-all-links=yes local spanblue = '<span style="color:blue">' local spanred = ' (<span style="color:red">' local span = '</span>' local lastg = nil --to check for run-on searches local lastk = nil --to check for run-on searches local endfound = false --switch used to stop searching forward local iirregs = 0 --index of tirregs[] for j < 0, since search starts from parent local j = -jlimit --index of tirregs[] for j > 0 & pseudo navh position while j <= jlimit do if j < 0 then --search backward from parent local gbreak = false --switch used to break out of g-loop local g = 0 --gap size while g <= hgap_limit_irreg do local k = 0 --term length: 0 = "0-length", 1+ = normal while k <= term_limit do local from = bwanchor - k - g local to = bwanchor - g local full = mw.text.trim( firstpart..lspace..from..hyph..to..tspace..lastpart ) if k == 0 then if regularparent ~= 'isolated' then --+restrict to g == 0 if repeating year problems arise to = '0-length' full = mw.text.trim( firstpart..lspace..from..tspace..lastpart ) if catlinkfollowr( frame, full ).rtarget ~= nil then --#R followed table.insert( tlistallbwd, spangreen..j..', '..g..', '..k..span..'] '..full..spanred..'#R ignored'..span..')' ) full, to = '', '' --don't use/follow 0-length cat #Rs from nav_hyphen(); otherwise gets messy end end end if (k >= 1) or --the normal case; only continue k = 0 if 0-length found (to == '0-length') --ghetto "continue" (thx Lua) to avoid expensive searches for "UK MPs 1974-1974", etc. then table.insert( tlistallbwd, spangreen..j..', '..g..', '..k..span..'] '..full ) if (k == 1) and -- (g == 0 or g == 1) and --commented to match j>0 case ("1995–96 in Federal Republic of Yugoslavia basketball") (catexists(full) == false) then --allow bare-bones MOS:DATERANGE alternation, in case we're on a 0|1-gap, 1-year term series local to2 = string.match(to, '%d%d$') if to2 and to2 ~= '00' then --and not at a century transition (i.e. 1999–2000) to = to2 full = mw.text.trim( firstpart..lspace..from..hyph..to..tspace..lastpart ) table.insert( tlistallbwd, spangreen..j..', '..g..', '..k..span..'] '..full ) end end if catexists(full) then if to == '0-length' then trackcat(13, 'Category series navigation range irregular, 0-length') end tlistallbwd[#tlistallbwd] = spanblue..tlistallbwd[#tlistallbwd]..span..' (found)' ttlens[ find_duration(full) ] = 1 if j == -1 then tgapsj4[g] = 1 -- -1 since bwd search starts from parent @ -4 and ends at -1 else tgaps[g] = 1 end iirregs = iirregs + 1 tirregs['from-'..iirregs] = from tirregs['to-'..iirregs] = to bwanchor = from --ratchet down if to ~= '0-length' then gbreak = true break else g = 0 --soft-reset g, to keep stepping thru k j = j + 1 --save, but keep searching thru k if j > 0 then --(restore "> 3" if acts up) lest we keep searching bwd & finding 0-length cats ("MEPs for the Republic of Ireland 1973" & down) j = -1 --allow a normal, full search fwd after break gbreak = true break end end elseif (j >= 0) and (lastg and lastk) and ((lastg >= hgap_limit_irreg) or (lastk >= term_limit)) then --bwd search exhausted and/or done (runaway bwd search on "2018–19 FIA World Endurance Championship season") j = -1 --allow a normal, full search fwd after break gbreak = true break end end --ghetto "continue" k = k + 1 lastk = k end --while k <= term_limit do if gbreak == true then break end g = g + 1 lastg = g end --while g <= hgap_limit_irreg do end --if j < 0 if j > 0 and endfound == false then --search forward from parent local gbreak = false --switch used to break out of g-loop local g = 0 --gap size while g <= hgap_limit_irreg do local k = -2 --term length: -2 = "0-length", -1 = "2020–present", 0 = "2020–", 1+ = normal while k <= term_limit do local from = fwanchor + g local to4 = fwanchor + k + g --override carefully local to2 = nil --last 2 digits of to4, IIF exists if k == -1 then to4 = 'present' --see if end-cat exists (present) elseif k == 0 then to4 = '' end --see if end-cat exists (blank) local full = mw.text.trim( firstpart..lspace..from..hyph..to4..tspace..lastpart ) if k == -2 then if regularparent ~= 'isolated' then --+restrict to g == 0 if repeating year problems arise to4 = '0-length' --see if 0-length cat exists full = mw.text.trim( firstpart..lspace..from..tspace..lastpart ) if catlinkfollowr( frame, full ).rtarget ~= nil then --#R followed table.insert( tlistallfwd, spangreen..j..', '..g..', '..k..span..'] '..full..spanred..'#R ignored'..span..')' ) full, to4 = '', '' --don't use/follow 0-length cat #Rs from nav_hyphen(); otherwise gets messy end end end if (k >= -1) or --only continue k = -2 if 0-length found (to4 == '0-length') --ghetto "continue" (thx Lua) to avoid expensive searches for "UK MPs 1974-1974", etc. then table.insert( tlistallfwd, spangreen..j..', '..g..', '..k..span..'] '..full ) if (k == 1) and -- (g == 0 or g == 1) and --commented to let "2002–03 in Scottish women's football" find "2008–09 in Scottish women's football" (catexists(full) == false) then --allow bare-bones MOS:DATERANGE alternation, in case we're on a 0|1-gap, 1-year term series to2 = string.match(to4, '%d%d$') if to2 and to2 ~= '00' then --and not at a century transition (i.e. 1999–2000) full = mw.text.trim( firstpart..lspace..from..hyph..to2..tspace..lastpart ) table.insert( tlistallfwd, spangreen..j..', '..g..', '..k..span..'] '..full ) end end if catexists(full) then if to4 == '0-length' then if rtarget(full, frame) == full then --only use 0-length cats that don't #R trackcat(13, 'Category series navigation range irregular, 0-length') end end tirregs['from'..j] = from tirregs['to'..j] = (to2 or to4) if (k == -1) or (k == 0) then endfound = true --tentative else --k == { -2, > 0 } tlistallfwd[#tlistallfwd] = spanblue..tlistallfwd[#tlistallfwd]..span..' (found)' ttlens[ find_duration(full) ] = 1 if j == 4 then tgapsj4[g] = 1 else tgaps[g] = 1 end endfound = false if to4 ~= '0-length' then --k > 0 fwanchor = to4 --ratchet up gbreak = true break --only break on k > 0 b/c old end-cat #Rs still exist like "Members of the Scottish Parliament 2011–" else --k == -2 j = j + 1 --save, but keep searching k's, in case "1974" → "1974-1979" if j > jlimit then --lest we keep searching & finding 0-length cats ("2018 CONCACAF Champions League" & up) gbreak = true break elseif g == hgap_limit_irreg then --keep searching, since not a runaway, just far away ("American soccer clubs 1958–59 season") hgap_limit_irreg = hgap_limit_irreg + 1 end end end end end --ghetto "continue" k = k + 1 lastk = k end --while k <= term_limit do if gbreak == true then break end g = g + 1 lastg = g end --while g <= hgap_limit_irreg do end --if j > 0 and endfound == false then if (lastg and lastk) and (lastg > hgap_limit_irreg) and (lastk > term_limit) then --search exhausted if j < 0 then j = 0 --bwd search exhausted; continue fwd elseif j > 0 then break end --fwd search exhausted end j = j + 1 end --while j <= jlimit end --if hgap <= hgap_limit_reg --determine # of displayed navh elements based on "YYYY-YY" vs. "YYYY-YYYY" counts local Ythreshold = 3.3 --((YYYY-YY x 7) + (YYYY-YYYY x 2))/18 = 3.222; ((YYYY-YY x 6) + (YYYY-YYYY x 3))/18 = 3.333 local Ycount = 0 --"Y" count local ycount = 0 --tirregs counter; # of contiguous #s for k, v in pairs (tirregs) do local dummy, dunce = mw.ustring.gsub(tostring(v), '%d', '') --why can't gsub just return a table?? Ycount = Ycount + dunce ycount = ycount + 1 end local ycount_limit = ((jlimit * 2) + 1) * 2 --i.e. ((4 * 2) + 1) * 2 = 18 if ycount < ycount_limit then --fill in the blanks with Ycount_parent, since hidden/dne cats aren't in tirregs local dummy_finish = finish if not regularparent then dummy_finish = start end local dummy, dunce_from = mw.ustring.gsub(start, '%d', '') local dummy, dunce_to = mw.ustring.gsub(dummy_finish, '%d', '') local Ycount_parent_avg = (dunce_from + dunce_to)/2 --"YYYY-YYYY" = 4; "YYYY-YY" = 3 Ycount = Ycount + (Ycount_parent_avg * (ycount_limit - ycount)) ycount = ycount_limit end local iwidth = 3 --default to 3-a-side, 7 total local Y_per_y = Ycount / ycount --normalized range: [3-4] if Y_per_y < Ythreshold then iwidth = 4 --extend to 4-a-side, 9 total end --begin navhyphen local navh = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local terminalcat = false --switch used to hide future cats local terminaltxt = nil local i = -iwidth --nav position while i <= iwidth do local from = nstart + i*(t+hgap) --the logical, but not necessarily correct, 'from' if tirregs['from'..i] then --prefer the irregular term table from = tonumber(tirregs['from'..i]) else --fallback to lazy/naive 'from' if i > 0 and tirregs['from'..(i-1)] and tirregs['from'..(i-1)] >= from then --end of the line: avoid dups/past, and create reasonable grey'd ranges local greyto = tonumber(tirregs['to' .. (i-1)]) or -9999 local greyfrom = tonumber(tirregs['from'..(i-1)]) or -9999 local grey = greyto --prefer 'to' if greyfrom > greyto then grey = greyfrom end --'from' fallback, in case "1995–96", "1995-present", etc. if grey > -9999 then if grey ~= greyto then from = grey + t + hgap --account for missing/incomplete 'to' else from = grey + hgap end tirregs['from'..i] = from --remember tirregs['to' .. i] = from + t end elseif i < 0 then local greyfrom local ii = 0 while ii < 3 do ii = ii + 1 greyfrom = tonumber(tirregs['from'..(i+ii)]) if greyfrom then break end end from = (greyfrom or nstart) - ii*(t+hgap) tirregs['from'..i] = from --remember tirregs['to' .. i] = from + t end end local from2 = string.match(from, '%d?%d$') local to = tostring(from+t) --the logical, naive range, but if tirregs['to'..i] then --prefer irregular term table to = tirregs['to'..i] elseif regularparent == false and tirregs and i > 0 then to = tirregs['to-1'] --special treatment for parent terminal cats, since they have no natural 'to' end local to2 = string.match(to, '%d?%d$') local tofinal = (to2 or '') --assume t=1 and abbreviated 'to' (the most common case) if t > 1 or --per MOS:DATERANGE (e.g. 1999-2004) (from2 - (to2 or from2)) > 0 --century transition exception (e.g. 1999–2000) then tofinal = (to or '') --default to the MOS-correct format, in case no fallbacks found end if to == '0-length' then tofinal = to end --check existance of 4-digit, MOS-correct range, with abbreviation fallback if tofinal ~= '0-length' then if t > 1 and string.len(from) == 4 then --e.g. 1999-2004 --determine which link exists (full or abbr) local full = firstpart..lspace..from..hyph..tofinal..tspace..lastpart if not catexists(full) then local abbr = firstpart..lspace..from..hyph..to2..tspace..lastpart if catexists(abbr) then tofinal = (to2 or '') --rv to MOS-incorrect format; if full AND abbr DNE, then tofinal is still in its MOS-correct format end end elseif t == 1 then --full-year consecutive ranges are also allowed local abbr = firstpart..lspace..from..hyph..tofinal..tspace..lastpart --assume tofinal is in abbr format if not catexists(abbr) and tofinal ~= to then local full = firstpart..lspace..from..hyph..to..tspace..lastpart if catexists(full) then tofinal = (to or '') --if abbr AND full DNE, then tofinal is still in its abbr format (unless it's a century transition) end end end end --populate navh if i ~= 0 then --left/right navh local orig = firstpart..lspace..from..hyph..tofinal..tspace..lastpart local disp = from..hyph..tofinal if tofinal == '0-length' then orig = firstpart..lspace..from..tspace..lastpart disp = from end local catlink = catlinkfollowr(frame, orig, disp, true) --force terminal cat display if terminalcat == false then terminaltxt = find_terminaltxt( disp ) --also sets tracking cats terminalcat = (terminaltxt ~= nil) end if catlink.rtarget and avoidself then --a {{Category redirect}} was followed, figure out why --determine new term length & gap size ttlens[ find_duration( catlink.rtarget ) ] = 1 if i > -iwidth then local lastto = tirregs['to'..(i-1)] if lastto == nil then local lastfrom = nstart + (i-1)*(t+hgap) lastto = lastfrom+t --use last logical 'from' to calc lastto end if lastto then local gapcat = lastto..'-'..from --dummy cat to calc with local gap = find_duration(gapcat) or -1 --in case of nil, if iwidth == 4 then tgapsj4[ gap ] = 1 --tgapsj4[-1] are ignored later else tgaps[ gap ] = 1 --tgaps[-1] are ignored later end end end --display/tracking handling local base_regex = '%d+[–-]%d+' local origbase = mw.ustring.gsub(orig, base_regex, '') local rtarbase, rtarbase_success = mw.ustring.gsub(catlink.rtarget, base_regex, '') if rtarbase_success == 0 then local base_regex_lax = '%d%d%d%d' --in case rtarget is a year cat rtarbase, rtarbase_success = mw.ustring.gsub(catlink.rtarget, base_regex_lax, '') end local terminal_regex = '%d+[–-]'..(terminaltxt or '')..'$' --more manual ORs bc Lua regex sux if mw.ustring.match(orig, terminal_regex) then origbase = mw.ustring.gsub(orig, terminal_regex, '') end if mw.ustring.match(catlink.rtarget, terminal_regex) then --finagle/overload terminalcat type to set nmaxseas on 1st occurence only if terminalcat == false then terminalcat = 1 end local dummy = find_terminaltxt( catlink.rtarget ) --also sets tracking cats rtarbase = mw.ustring.gsub(catlink.rtarget, terminal_regex, '') end origbase = mw.text.trim(origbase) rtarbase = mw.text.trim(rtarbase) if origbase ~= rtarbase then trackcat(6, 'Category series navigation range redirected (base change)') elseif terminalcat == 1 then trackcat(8, 'Category series navigation range redirected (end)') else --origbase == rtarbase local all4s_regex = '%d%d%d%d[–-]%d%d%d%d' local orig_all4s = mw.ustring.match(orig, all4s_regex) local rtar_all4s = mw.ustring.match(catlink.rtarget, all4s_regex) if orig_all4s and rtar_all4s then trackcat(10, 'Category series navigation range redirected (other)') else local year_regex1 = '%d%d%d%d$' local year_regex2 = '%d%d%d%d[%s%)]' local year_rtar = mw.ustring.match(catlink.rtarget, year_regex1) or mw.ustring.match(catlink.rtarget, year_regex2) if orig_all4s and year_rtar then trackcat(7, 'Category series navigation range redirected (var change)') else trackcat(9, 'Category series navigation range redirected (MOS)') end end end end if terminalcat then --true or 1 if type(terminalcat) ~= 'boolean' then nmaxseas = from end --only want to do this once terminalcat = true --done finagling/overloading end if (from >= 0) and (nminseas <= from) and (from <= nmaxseas) then table.insert(navlist, catlink.navelement) if terminalcat then nmaxseas = nminseas_default end --prevent display of future ranges else local hidden = '<span style="visibility:hidden">'..disp..'</span>' table.insert(navlist, hidden) if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end else --center navh if finish == -1 then finish = 'present' elseif finish == 0 then finish = '<span style="visibility:hidden">'..start..'</span>' end local disp = start..hyph..finish if regularparent == 'isolated' then disp = start end table.insert(navlist, '<b>'..disp..'</b>') end i = i + 1 end -- add the list navh = navh..horizontal(navlist)..'\n' --tracking cats & finalize if avoidself then local igaps = 0 --# of diff gap sizes > 0 found local itlens = 0 --# of diff term lengths found for s = 1, hgap_limit_reg do --must loop; #tgaps, #ttlens unreliable igaps = igaps + (tgaps[s] or 0) end if iwidth == 4 then --only count gaps if they were displayed ("Karnataka MLAs 1957–1962") for s = 1, hgap_limit_reg do igaps = igaps + (tgapsj4[s] or 0) end end for s = 0, term_limit do itlens = itlens + (ttlens[s] or 0) end if igaps > 0 then trackcat(11, 'Category series navigation range gaps') end if itlens > 1 and ttrackingcats[13] == '' then --avoid duplication in "Category series navigation range irregular, 0-length" trackcat(12, 'Category series navigation range irregular') end end isolatedcat() defaultgapcat(not hgap_success) if listall then return listalllinks() else return navh..'</div>' end end --[[=========================={{ nav_tvseason }}============================]] local function nav_tvseason( frame, firstpart, tv, lastpart, maximumtv ) --Expects a PAGENAME of the form "Futurama season 1 episodes", where -- firstpart = Futurama season -- tv = 1 -- lastpart = episodes -- maximumtv = 7 ('max' tv season parameter; optional; defaults to 9999) tv = tonumber(tv) if tv == nil then errors = p.errorclass('Function nav_tvseason can\'t recognize the TV season number sent to its 3rd parameter.') return p.failedcat(errors, 'T') end --"(season 1) episodes" -> "season 1 episodes" following March 2024 RfC: --[[Wikipedia talk:Naming conventions (television)#Follow-up RfC on TV season article titles]] -- [[Special:Permalink/1216885280#Follow-up RfC on TV season article titles]] local tspace = ' ' --"season 1 episodes" local parenth_check = string.match(lastpart, '^%)') if parenth_check then tspace = '' end --accommodate old style "(season 1) episodes" just in case local maxtv_default = 9999 local maxtv = tonumber(maximumtv) or maxtv_default --allow +/- qualifier if maxtv < tv then maxtv = tv end --input error; maxtv should be >= parent --begin navtvseason local navt = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local prepad = '' local i = -5 --nav position while i <= 5 do local t = tv + i if i ~= 0 then --left/right navt local catlink = catlinkfollowr( frame, firstpart..' '..t..tspace..lastpart, t ) if t >= 1 and t <= maxtv then --hardcode mintv if catlink.rtarget then --a {{Category redirect}} was followed trackcat(25, 'Category series navigation TV season redirected') end if catlink.catexists or (maxtv ~= maxtv_default and t <= maxtv) then table.insert(navlist, prepad..catlink.navelement) --display normally prepad = '' else local postpad = '<span style="visibility:hidden"> • '..t..'</span>' navlist[#navlist] = (navlist[#navlist] or '')..postpad if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..postpad..')' end end elseif t < 1 then prepad = prepad..'<span style="visibility:hidden"> • '..'0'..'</span>' if listall then tlistall[#tlistall] = (tlistall[#tlistall] or '')..' (x)' end else --t > maxtv local postpad = '<span style="visibility:hidden"> • '..t..'</span>' navlist[#navlist] = (navlist[#navlist] or '')..postpad if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..postpad..')' end end else --center navt table.insert(navlist, prepad..'<b>'..tv..'</b>') prepad = '' end i = i + 1 end -- add the list navt = navt..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navt..'</div>' end end --[[==========================={{ nav_decade }}=============================]] local function nav_decade( frame, firstpart, decade, lastpart, mindecade, maxdecade ) --Expects a PAGENAME of the form "Some sequential 2000 example cat", where -- firstpart = Some sequential -- decade = 2000 -- lastpart = example cat -- mindecade = 1800 ('min' decade parameter; optional; defaults to -9999) -- maxdecade = 2020 ('max' decade parameter; optional; defaults to 9999) --sterilize dec local dec = sterilizedec(decade) if dec == nil then errors = p.errorclass('Function nav_decade was sent "'..(decade or '')..'" as its 2nd parameter, '.. 'but expects a 1 to 4-digit year ending in "0".') return p.failedcat(errors, 'D') end local ndec = tonumber(dec) --sterilize mindecade & determine AD/BC local mindefault = '-9999' local mindec = sterilizedec(mindecade) --returns a tostring(unsigned int), or nil if mindec then if string.match(mindecade, '-%d') or string.match(mindecade, 'RC') then mindec = '-'..mindec --better +/-0 behavior with strings (0-initialized int == "-0" string...) end elseif mindec == nil and mindecade and mindecade ~= '' then errors = p.errorclass('Function nav_decade was sent "'..(mindecade or '')..'" as its 4th parameter, '.. 'but expects a 1 to 4-digit year ending in "0", the earliest decade to be shown.') return p.failedcat(errors, 'E') else --mindec == nil mindec = mindefault --tonumber() later, after error checks end --sterilize maxdecade & determine AD/BC local maxdefault = '9999' local maxdec = sterilizedec(maxdecade) --returns a tostring(unsigned int), or nil + error if maxdec then if string.match(maxdecade, '-%d') or string.match(maxdecade, 'RC') then --better +/-0 behavior with strings (0-initialized int == "-0" string...), maxdec = '-'..maxdec --but a "-0" string -> tonumber() -> tostring() = "-0", end --and a "0" string -> tonumber() -> tostring() = "0" elseif maxdec == nil and maxdecade and maxdecade ~= '' then errors = p.errorclass('Function nav_decade was sent "'..(maxdecade or '')..'" as its 5th parameter, '.. 'but expects a 1 to 4-digit year ending in "0", the highest decade to be shown.') return p.failedcat(errors, 'F') else --maxdec == nil maxdec = maxdefault end local tspace = ' ' --assume trailing space for "1950s in X"-type cats if string.match(lastpart, '^-') then tspace = '' end --DNE for "1970s-related"-type cats --AD/BC switches & varR local parentBC = string.match(lastpart, '^RC') --following the "0s BC" convention for all years BC local BCe = 'RC' --use RC for Manx categories, BC never used lastpart = mw.ustring.gsub(lastpart, '^RC%s*', '') --handle BC separately; AD never used --TODO?: handle BCE, but only if it exists in the wild local dec0to40AD = (ndec >= 0 and ndec <= 40 and not parentBC) --special behavior in this range local switchADBC = 1 -- 1=AD parent if parentBC then switchADBC = -1 end -- -1=BC parent; possibly adjusted later local BCdisp = '' local D = -math.huge --secondary switch & iterator for AD/BC transition --check non-default min/max more carefully if mindec ~= mindefault then if tonumber(mindec) > ndec*switchADBC then mindec = tostring(ndec*switchADBC) --input error; mindec should be <= parent end end if maxdec ~= maxdefault then if tonumber(maxdec) < ndec*switchADBC then maxdec = tostring(ndec*switchADBC) --input error; maxdec should be >= parent end end local nmindec = tonumber(mindec) --similar behavior to nav_year & nav_nordinal local nmaxdec = tonumber(maxdec) --similar behavior to nav_nordinal --begin navdecade local bnb = '' --border/no border if navborder == false then --for Category series navigation year and decade bnb = 'categorySeriesNavigation-range-transparent' end local navd = '<div class="toccolours categorySeriesNavigation-range '..bnb..'">\n' local navlist = {} local i = -50 --nav position x 10 while i <= 50 do local d = ndec + i*switchADBC local BC = '' BCdisp = '' if dec0to40AD then if D < -10 then d = math.abs(d + 10) --b/c 2 "0s" decades exist: "0s BC" & "0s" (AD) BC = 'RC ' if d == 0 then D = -10 --track 1st d = 0 use (BC) end elseif D >= -10 then D = D + 10 --now iterate from 0s AD d = D --2nd d = 0 use end elseif parentBC then if switchADBC == -1 then --parentBC looking at the BC side (the common case) BC = 'RC ' if d == 0 then --prepare to switch to the AD side on the next iteration switchADBC = 1 --1st d = 0 use (BC) D = -10 --prep end elseif switchADBC == 1 then --switched to the AD side D = D + 10 --now iterate from 0s AD d = D --2nd d = 0 use (on first use) end end if BC ~= '' and ndec <= 50 then BCdisp = ' '..BCe --show BC/RC for all BC decades whenever a "0yn" is displayed on the nav end --determine target cat local disp = d..'yn'..BCdisp local catlink = catlinkfollowr( frame, firstpart..' '..d..'yn'..tspace..BC..lastpart, disp ) if catlink.rtarget then --a {{Category redirect}} was followed trackcat(18, 'Category series navigation decade redirected') end --populate left/right navd local shown = navcenter(i, catlink) local hidden = '<span style="visibility:hidden">'..disp..'</span>' local dsign = d --use d for display & dsign for logic if BC ~= '' then dsign = -dsign end if (nmindec <= dsign) and (dsign <= nmaxdec) then if dsign == 0 and (nmindec == 0 or nmaxdec == 0) then --distinguish b/w -0 (BC) & 0 (AD) --"zoom in" on +/- 0 and turn dsign/min/max temporarily into +/- 1 for easier processing local zsign, zmin, zmax = 1, nmindec, nmaxdec if BC ~= '' then zsign = -1 end if mindec == '-0' then zmin = -1 elseif mindec == '0' then zmin = 1 end if maxdec == '-0' then zmax = -1 elseif maxdec == '0' then zmax = 1 end if (zmin <= zsign) and (zsign <= zmax) then table.insert(navlist, shown) hidden = nil else table.insert(navlist, hidden) end else table.insert(navlist, shown)--the common case hidden = nil end else table.insert(navlist, hidden) end if listall and hidden then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end i = i + 10 end -- add the list navd = navd..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navd..'</div>' end end --[[============================{{ nav_year }}==============================]] local function nav_year( frame, firstpart, year, lastpart, minimumyear, maximumyear ) --Expects a PAGENAME of the form "Some sequential 1760 example cat", where -- firstpart = Some sequential -- year = 1760 -- lastpart = example cat -- minimumyear = 1758 ('min' year parameter; optional) -- maximumyear = 1800 ('max' year parameter; optional) local minyear_default = -9999 local maxyear_default = 9999 year = tonumber(year) or tonumber(mw.ustring.match(year or '', '^%s*(%d*)')) local minyear = tonumber(string.match(minimumyear or '', '-?%d+')) or minyear_default --allow +/- qualifier local maxyear = tonumber(string.match(maximumyear or '', '-?%d+')) or maxyear_default --allow +/- qualifier if string.match(minimumyear or '', 'RC') then minyear = -math.abs(minyear) end --allow BC qualifier (AD otherwise assumed) if string.match(maximumyear or '', 'RC') then maxyear = -math.abs(maxyear) end --allow BC qualifier (AD otherwise assumed) if year == nil then errors = p.errorclass('Function nav_year can\'t recognize the year sent to its 3rd parameter.') return p.failedcat(errors, 'Y') end --AD/BC switches & vars local yearBCElastparts = { --needed for parent = AD 1-5, when the BC/E format is unknown --"BCE" removed to match both AD & BCE cats; easier & faster than multiple string.match()s ['example_Hebrew people_example'] = 'BCE', --example entry format; add to & adjust as needed } local parentAD = string.match(firstpart, 'BNJ$') --following the "AD 1" convention from AD 1 to AD 10 local parentBC = string.match(lastpart, '^RC?') --following the "1 BC" convention for all years BC firstpart = mw.ustring.gsub(firstpart, '%s*BNJ$', '') --handle AD/BC separately for easier & faster accounting lastpart = mw.ustring.gsub(lastpart, '^RC?%s*', '') local BCe = parentBC or yearBCElastparts[lastpart] or 'RC' --"BC" default local year1to10 = (year >= 1 and year <= 10) local year1to10ADBC = year1to10 and (parentBC or parentAD) --special behavior 1-10 for low-# non-year series local year1to15AD = (year >= 1 and year <= 15 and not parentBC) --special behavior 1-15 for AD/BC display local switchADBC = 1 -- 1=AD parent if parentBC then switchADBC = -1 end -- -1=BC parent; possibly adjusted later local Y = 0 --secondary iterator for AD-on-a-BC-parent if minyear > year*switchADBC then minyear = year*switchADBC end --input error; minyear should be <= parent if maxyear < year*switchADBC then maxyear = year*switchADBC end --input error; maxyear should be >= parent local lspace = ' ' --leading space before year, after firstpart if string.match(firstpart, '[%-VW]$') then lspace = '' --e.g. "Straight-8 engines" end local tspace = ' ' --trailing space after year, before lastpart if string.match(lastpart, '^-') then tspace = '' --e.g. "2018-related timelines" end --determine interyear gap size to condense special category types, if possible local ygapdefault = 1 --assume/start at the most common case: 2001, 2002, etc. local ygap = ygapdefault if string.match(lastpart, 'presidential') then local ygap1, ygap2 = ygapdefault, ygapdefault --need to determine previous & next year gaps indepedently local ygap1_success, ygap2_success = false, false local prevseason = nil while ygap1 <= ygap_limit do --Czech Republic, Poland, Sri Lanka, etc. have 5-year terms prevseason = firstpart..lspace..(year-ygap1)..tspace..lastpart if catexists(prevseason) then ygap1_success = true break end ygap1 = ygap1 + 1 end local nextseason = nil while ygap2 <= ygap_limit do --Czech Republic, Poland, Sri Lanka, etc. have 5-year terms nextseason = firstpart..lspace..(year+ygap2)..tspace..lastpart if catexists(nextseason) then ygap2_success = true break end ygap2 = ygap2 + 1 end if ygap1_success and ygap2_success then if ygap1 == ygap2 then ygap = ygap1 end elseif ygap1_success then ygap = ygap1 elseif ygap2_success then ygap = ygap2 end end --skip non-existing years, if requested local ynogaps = {} --populate with existing years in the range, at most, [year - (skipgaps_limit * 5), year + (skipgaps_limit * 5)] if skipgaps then if minyear == minyear_default then minyear = 0 --automatically set minyear to 0, as AD/BC not supported anyway end if (year > 70) or --add support for AD/BC (<= AD 10) if/when needed (minyear >= 0 and --must be a non-year series like "AC with 0 elements" not parentAD and not parentBC) then local yskipped = {} --track skipped y's to avoid double-checking local cat, found, Yeary --populate nav element queue outwards positively from the parent local Year = year --to save/ratchet progression local i = 1 while i <= 5 do local y = 1 while y <= skipgaps_limit do found = false Yeary = Year + y if yskipped[Yeary] == nil then yskipped[Yeary] = Yeary cat = firstpart..lspace..Yeary..tspace..lastpart found = catexists(cat) if found then break end end y = y + 1 end if found then Year = Yeary else Year = Year + 1 end ynogaps[i] = Year i = i + 1 end ynogaps[0] = year --the parent --populate nav element queue outwards negatively from the parent Year = year --reset ratchet i = -1 while i >= -5 do local y = -1 while y >= -skipgaps_limit do found = false Yeary = Year + y if yskipped[Yeary] == nil then yskipped[Yeary] = Yeary cat = firstpart..lspace..Yeary..tspace..lastpart found = catexists(cat) if found then break end end y = y - 1 end if found then Year = Yeary else Year = Year - 1 end ynogaps[i] = Year i = i - 1 end else skipgaps = false --TODO: AD/BC support, then lift BC restrictions @ [[Template:Establishment category BC]] & [[Template:Year category header/core]] end end --begin navyears local navy = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local y local j = 0 --decrementor for special cases "2021 World Rugby Sevens Series" -> "2021–2022" local i = -5 --nav position while i <= 5 do if skipgaps then y = ynogaps[i] else y = year + i*ygap*switchADBC - j end local BCdisp = '' if i ~= 0 then --left/right navy local AD = '' local BC = '' if year1to15AD and not (year1to10 and not year1to10ADBC) --don't AD/BC 1-10's if parents don't contain AD/BC then if year >= 11 then --parent = AD 11-15 if y <= 10 then --prepend AD on y = 1-10 cats only, per existing cats AD = 'AD ' end elseif year >= 1 then --parent = AD 1-10 if y <= 0 then BC = BCe..' ' y = math.abs(y - 1) --skip y = 0 (DNE) elseif y >= 1 and y <= 10 then --prepend AD on y = 1-10 cats only, per existing cats AD = 'AD ' end end elseif parentBC then if switchADBC == -1 then --displayed y is in the BC regime if y >= 1 then --the common case BC = BCe..' ' elseif y == 0 then --switch from BC to AD regime switchADBC = 1 end end if switchADBC == 1 then --displayed y is now in the AD regime Y = Y + 1 --skip y = 0 (DNE) y = Y --easiest solution: start another iterator for these AD y's displayed on a BC year parent AD = 'AD ' end end if BC ~= '' and year <= 5 then --only show 'BC' for parent years <= 5: saves room, easier to read, BCdisp = ' '..BCe --and 6 is the first/last nav year that doesn't need a disambiguator; end --the center/parent year will always show BC, so no need to show it another 10x --populate left/right navy local ysign = y --use y for display & ysign for logic local disp = y..BCdisp if BC ~= '' then ysign = -ysign end local firsttry = firstpart..lspace..AD..y..tspace..BC..lastpart if (minyear <= ysign) and (ysign <= maxyear) then local catlinkAD = catlinkfollowr( frame, firsttry, disp ) --try AD local catlink = catlinkAD --tentative winner if AD ~= '' then --for "ACArt with 5 suppressed elements"-type cats local catlinkNoAD = catlinkfollowr( frame, firstpart..lspace..y..tspace..BC..lastpart, disp ) --try !AD if catlinkNoAD.catexists == true then catlink = catlinkNoAD --usurp elseif listall then tlistall[#tlistall] = tlistall[#tlistall]..' (tried; not displayed)<sup>1</sup>' end end if (AD..BC == '') and (catlink.catexists == false) and (y >= 1000) then --!ADBC & DNE; 4-digit only, to be frugal --try basic hyphenated cats: 1-year, endash, MOS-correct only, no #Rs local yHyph_4 = y..'–'..(y+1) --try 2010–2011 type cats local catlinkHyph_4 = catlinkfollowr( frame, firstpart..lspace..yHyph_4..tspace..BC..lastpart, yHyph_4 ) if catlinkHyph_4.catexists and catlinkHyph_4.rtarget == nil then --exists & no #Rs catlink = catlinkHyph_4 --usurp trackcat(27, 'Category series navigation year and range') else if listall then tlistall[#tlistall] = tlistall[#tlistall]..' (tried; not displayed)<sup>2</sup>' end local yHyph_2 = y..'–'..string.match(y+1, '%d%d$') --try 2010–11 type cats if i == 1 then local yHyph_2_special = (y-1)..'–'..string.match(y, '%d%d$') --try special case 2021 -> 2021–22 local catlinkHyph_2_special = catlinkfollowr( frame, firstpart..lspace..yHyph_2_special..tspace..BC..lastpart, yHyph_2_special ) if catlinkHyph_2_special.catexists and catlinkHyph_2_special.rtarget == nil then --exists & no #Rs catlink = catlinkHyph_2_special --usurp trackcat(27, 'Category series navigation year and range') j = 1 elseif listall then tlistall[#tlistall] = tlistall[#tlistall]..' (tried; not displayed)<sup>3</sup>' end end if not (i == 1 and j == 1) then local catlinkHyph_2 = catlinkfollowr( frame, firstpart..lspace..yHyph_2..tspace..BC..lastpart, yHyph_2 ) if catlinkHyph_2.catexists and catlinkHyph_2.rtarget == nil then --exists & no #Rs catlink = catlinkHyph_2 --usurp trackcat(27, 'Category series navigation year and range') elseif listall then tlistall[#tlistall] = tlistall[#tlistall]..' (tried; not displayed)<sup>4</sup>' end end end end if catlink.rtarget then --#R followed; determine why local r = catlink.rtarget local c = catlink.cat local year_regex = '%d%d%d%d[–-]?%d?%d?%d?%d?' --prioritize year/range stripping, e.g. for "2006 Super 14 season" local hyph_regex = '%d%d%d%d[–-]%d+' --stricter local num_regex = '%d+' --strip any number otherwise local final_regex = nil --best choice goes here if mw.ustring.match(r, year_regex) and mw.ustring.match(c, year_regex) then final_regex = year_regex elseif mw.ustring.match(r, num_regex) and mw.ustring.match(c, num_regex) then final_regex = num_regex end if final_regex then local r_base = mw.ustring.gsub(r, final_regex, '') local c_base = mw.ustring.gsub(c, final_regex, '') if r_base ~= c_base then trackcat(19, 'Category series navigation year redirected (base change)') --acceptable #R target elseif mw.ustring.match(r, hyph_regex) then trackcat(20, 'Category series navigation year redirected (var change)') --e.g. "2008 in Scottish women's football" to "2008–09" else trackcat(21, 'Category series navigation year redirected (other)') --exceptions go here end else trackcat(20, 'Category series navigation year redirected (var change)') --e.g. "V2 engines" to "V-twin engines" end end table.insert(navlist, catlink.navelement) else --OOB vs min/max local hidden = '<span style="visibility:hidden">'..disp..'</span>' table.insert(navlist, hidden) if listall then local dummy = catlinkfollowr( frame, firsttry, disp ) tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end else --center navy if parentBC then BCdisp = ' '..BCe end table.insert(navlist, '<b>'..year..BCdisp..'</b>') end i = i + 1 end --add the list navy = navy..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navy..'</div>' end end --[[==========================={{ nav_roman }}==============================]] local function nav_roman( frame, firstpart, roman, lastpart, minimumrom, maximumrom ) local toarabic = require('Module:ConvertNumeric').roman_to_numeral local toroman = require('Module:Roman').main --sterilize/convert rom/num local num = tonumber(toarabic(roman)) local rom = toroman({ [1] = num }) if num == nil or rom == nil then --out of range or some other error errors = p.errorclass('Function nav_roman can\'t recognize one or more of "'..(num or 'nil')..'" & "'.. (rom or 'nil')..'" in category "'..firstpart..' '..roman..' '..lastpart..'".') return p.failedcat(errors, 'R') end --sterilize min/max local minrom = tonumber(minimumrom or '') or tonumber(toarabic(minimumrom or '')) local maxrom = tonumber(maximumrom or '') or tonumber(toarabic(maximumrom or '')) if minrom < 1 then minrom = 1 end --toarabic() returns -1 on error if maxrom < 1 then maxrom = 9999 end --toarabic() returns -1 on error if minrom > num then minrom = num end if maxrom < num then maxrom = num end --begin navroman local navr = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local i = -5 --nav position while i <= 5 do local n = num + i if n >= 1 then local r = toroman({ [1] = n }) if i ~= 0 then --left/right navr local catlink = catlinkfollowr( frame, firstpart..' '..r..' '..lastpart, r ) if minrom <= n and n <= maxrom then if catlink.rtarget then --a {{Category redirect}} was followed trackcat(22, 'Category series navigation roman numeral redirected') end table.insert(navlist, catlink.navelement) else local hidden = '<span style="visibility:hidden">'..r..'</span>' table.insert(navlist, hidden) if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end else --center navr table.insert(navlist, '<b>'..r..'</b>') end else table.insert(navlist, '<span style="visibility:hidden">I</span>') end i = i + 1 end -- add the list navr = navr..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navr..'</div>' end end --[[=========================={{ nav_nordinal }}============================]] local function nav_nordinal( frame, firstpart, ord, lastpart, minimumord, maximumord ) local nord = tonumber(ord) local minord = tonumber(string.match(minimumord or '', '(-?%d+)[snrt]?[tdh]?')) or -9999 --allow full ord & +/- qualifier local maxord = tonumber(string.match(maximumord or '', '(-?%d+)[snrt]?[tdh]?')) or 9999 --allow full ord & +/- qualifier if string.match(minimumord or '', 'BC') or string.match(minimumord or '', 'RC') then minord = -math.abs(minord) end if string.match(maximumord or '', 'BC') or string.match(maximumord or '', 'RC') then maxord = -math.abs(maxord) end local temporal = string.match(lastpart, 'century') or string.match(lastpart, 'millennium') or string.match(lastpart, 'milley bleeaney') or string.match(lastpart, 'villey bleeaney') or string.match(lastpart, '^eash') local isManxMillenium = string.match(lastpart, 'milley bleeaney') or string.match(lastpart, 'villey bleeaney') local isManxCentury = string.match(lastpart, '^eash') local tspace = ' ' --assume a trailing space after ordinal if string.match(lastpart, '^-') then tspace = '' end --DNE for "19th-century"-type cats --AD/BC switches & vars local ordBCElastparts = { --needed for parent = AD 1-5, when the BC/E format is unknown --lists the lastpart of valid BCE cats --"BCE" removed to match both AD & BCE cats; easier & faster than multiple string.match()s ['-century Hebrew people'] = 'BCE', --WP:CFD/Log/2016 June 21#Category:11th-century BC Hebrew people ['-century Jews'] = 'BCE', --co-nominated ['-century Judaism'] = 'BCE', --co-nominated ['-century rabbis'] = 'BCE', --co-nominated ['-century High Priests of Israel'] = 'BCE', } local parentBC = mw.ustring.match(lastpart, '%s(BCE?)') or mw.ustring.match(lastpart, '%s(RC)') local lastpartNoBC = mw.ustring.gsub(lastpart, '%sBCE?', '') lastpartNoBC = mw.ustring.gsub(lastpartNoBC, '%sRC', '') local BCe = parentBC or ordBCElastparts[lastpartNoBC] or ((isManxMillenium or isManxCentury) and 'RC') or 'BC' local switchADBC = 1 -- 1=AD parent if parentBC then switchADBC = -1 end -- -1=BC parent; possibly adjusted later local O = 0 --secondary iterator for AD-on-a-BC-parent if not temporal and not parentBC and minord < 1 then minord = 1 end if not temporal and parentBC and maxord < 1 then maxord = -1 end if minord > nord*switchADBC then minord = nord*switchADBC end --input error; minord should be <= parent if maxord < nord*switchADBC then maxord = nord*switchADBC end --input error; maxord should be >= parent --begin navnordinal local bnb = '' --border/no border if navborder == false then --for Category series navigation decade and century bnb = 'categorySeriesNavigation-range-transparent' end local navo = '<div class="toccolours categorySeriesNavigation-range '..bnb..'">\n' local navlist = {} local i = -5 --nav position while i <= 5 do local o = nord + i*switchADBC local BC = '' local BCdisp = '' if parentBC then if switchADBC == -1 then --parentBC looking at the BC side if o >= 1 then --the common case BC = ' '..BCe elseif o == 0 then --switch to the AD side BC = '' switchADBC = 1 end end if switchADBC == 1 then --displayed o is now in the AD regime O = O + 1 --skip o = 0 (DNE) o = O --easiest solution: start another iterator for these AD o's displayed on a BC year parent end elseif o <= 0 then --parentAD looking at BC side BC = ' '..BCe o = math.abs(o - 1) --skip o = 0 (DNE) end if BC ~= '' and nord <= 5 then --only show 'BC' for parent ords <= 5: saves room, easier to read, BCdisp = ' '..BCe --and 6 is the first/last nav ord that doesn't need a disambiguator; end --the center/parent ord will always show BC, so no need to show it another 10x --populate left/right navo local oth = (isManxMillenium or isManxCentury) and p.addord(o) or tostring(o) local osign = o if BC ~= '' and temporal then osign = -osign end local hidden = '<span style="visibility:hidden">'..oth..'</span>' if temporal then --e.g. "3rd-century BC" local lastpart = lastpartNoBC --lest we recursively add multiple "BC"s if isManxMillenium then -- 1d and 2h trigger lenition: villey bleeaney -- 3oo and above use the base form: milley bleeaney local ones = o % 10 local correct_form if ones == 1 or ones == 2 then correct_form = 'villey bleeaney' else correct_form = 'milley bleeaney' end local replacement = correct_form if BC ~= '' then replacement = replacement .. BC end lastpart = string.gsub(lastpart, temporal, replacement, 1) --swap in the correct mutation, preserving the rest of lastpart elseif BC ~= '' then lastpart = string.gsub(lastpart, temporal, temporal..BC) --replace BC if needed end local catlink = catlinkfollowr( frame, firstpart..' '..oth..tspace..lastpart, oth..BCdisp ) if (minord <= osign) and (osign <= maxord) then if catlink.rtarget then --a {{Category redirect}} was followed trackcat(23, 'Category series navigation nordinal redirected') end table.insert(navlist, navcenter(i, catlink)) else table.insert(navlist, hidden) if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end elseif minord <= osign and osign <= maxord then local catTarget = firstpart..' '..oth..tspace..lastpartNoBC if BC ~= '' then catTarget = firstpart..' '..oth..tspace..lastpartNoBC..BC end local dispText = oth..BCdisp local catlink = catlinkfollowr( frame, catTarget, dispText ) if catlink.rtarget then trackcat(23, 'Category series navigation nordinal redirected') end table.insert(navlist, navcenter(i, catlink)) else --out-of-range: hide table.insert(navlist, hidden) if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..hidden..')' end end i = i + 1 end navo = navo..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navo..'</div>' end end --[[========================={{ nav_wordinal }}=============================]] local function nav_wordinal( frame, firstpart, word, lastpart, minimumword, maximumword, ordinal, frame ) --Module:ConvertNumeric.spell_number2() args: -- ordinal == true : 'second' is output instead of 'two' -- ordinal == false: 'two' is output instead of 'second' local ord2eng = require('Module:ConvertNumeric').spell_number2 local eng2ord = require('Module:ConvertNumeric').english_to_ordinal local th = 'th' if not ordinal then th = '' eng2ord = require('Module:ConvertNumeric').english_to_numeral end local capitalize = nil ~= string.match(word, '^%u') --determine capitalization local nord = eng2ord(string.lower(word)) --operate on/with lowercase, and restore any capitalization later local lspace = ' ' --assume a leading space (most common) local tspace = ' ' --assume a trailing space (most common) if string.match(firstpart, '[%-%(]$') then lspace = '' end --DNE for "Straight-eight engines"-type cats if string.match(lastpart, '^[%-%)]' ) then tspace = '' end --DNE for "Nine-cylinder engines"-type cats --sterilize min/max local maxword_default = 99 local maxword = maxword_default local minword = 1 if minimumword then local num = tonumber(minimumword) if num and 0 < num and num < maxword then minword = num else local ord = eng2ord(minimumword) if 0 < ord and ord < maxword then minword = ord end end end if maximumword then local num = tonumber(maximumword) if num and 0 < num and num < maxword then maxword = num else local ord = eng2ord(maximumword) if 0 < ord and ord < maxword then maxword = ord end end end if minword > nord then minword = nord end if maxword < nord then maxword = nord end --determine max existing cat local listoverride = true local n_max = nord local m = 1 while m <= 5 do local n = nord + m local nth = p.addord(n) if not ordinal then nth = n end local w = ord2eng{ num = n, ordinal = ordinal, capitalize = capitalize } local catlink = catlinkfollowr( frame, firstpart..lspace..w..tspace..lastpart, nth, nil, listoverride ) if catlink.catexists then n_max = n end m = m + 1 end --begin navwordinal local navw = '<div class="toccolours categorySeriesNavigation-range">\n' local navlist = {} local prepad = '' local i = -5 --nav position while i <= 5 do local n = nord + i if n >= 1 then local nth = p.addord(n) if not ordinal then nth = n end if i ~= 0 then --left/right navw local w = ord2eng{ num = n, ordinal = ordinal, capitalize = capitalize } local catlink = catlinkfollowr( frame, firstpart..lspace..w..tspace..lastpart, nth ) if minword <= n and n <= maxword then if catlink.rtarget then --a {{Category redirect}} was followed trackcat(24, 'Category series navigation wordinal redirected') end if n <= n_max or maxword ~= maxword_default then table.insert(navlist, prepad..catlink.navelement) --display normally prepad = '' else local postpad = '<span style="visibility:hidden"> • '..nth..'</span>' navlist[#navlist] = (navlist[#navlist] or '')..postpad if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..postpad..')' end end else local postpad = '<span style="visibility:hidden"> • '..nth..'</span>' navlist[#navlist] = (navlist[#navlist] or '')..postpad if listall then tlistall[#tlistall] = tlistall[#tlistall]..' ('..postpad..')' end end else --center navw table.insert(navlist, prepad..'<b>'..nth..'</b>') prepad = '' end else --n < 1 prepad = prepad..'<span style="visibility:hidden"> • '..'0'..th..'</span>' if listall then tlistall[#tlistall] = (tlistall[#tlistall] or '')..' (x)' end end i = i + 1 end -- Add the list navw = navw..horizontal(navlist)..'\n' isolatedcat() if listall then return listalllinks() else return navw..'</div>' end end --[[==========================={{ find_var }}===============================]] local function find_var( pn ) --Extracts the variable text (e.g. 2015, 2015–16, 2000s, 3rd, III, etc.) from a string, --and returns { ['vtype'] = <'year'|'season'|etc.>, <v> = <2015|2015–16|etc.> } local pagename = currtitle.text if pn and pn ~= '' then pagename = pn end local cpagename = 'Ronney:'..pagename --limited-Lua-regex workaround local d_season = mw.ustring.match(cpagename, ':(%d+yn).+%(%d+[–-]%d+%)') --i.e. "1760yn in the Province of Quebec (1763–1791)" local y_season = mw.ustring.match(cpagename, ':(%d+) .+%(%d+[–-]%d+%)') --i.e. "1763 establishments in the Province of Quebec (1763–1791)" local e_season = mw.ustring.match(cpagename, '%s(%d+[–-])$') or --irreg; ending unknown, e.g. "Members of the Scottish Parliament 2021–" mw.ustring.match(cpagename, '%s(%d+[–-]jiu)$') --e.g. "UK MPs 2019–present" local season = mw.ustring.match(cpagename, '[:%s%(](%d+[–-]%d+)[%)%s]') or --split in 2 b/c you can't frontier '$'/eos? mw.ustring.match(cpagename, '[:%s](%d+[–-]%d+)$') local tvseason = mw.ustring.match(cpagename, 'season (%d+)') or mw.ustring.match(cpagename, 'series (%d+)') or mw.ustring.match(cpagename, 'meetup (%d+)') -- Require at least the two-character core of an ordinal suffix (st, nd, rd, th) -- so that bare numbers and yn-suffixed decades do not match as nordinals. local nordinal = string.match(pagename, '%d+[snrt][tdh]') or string.match(pagename, '%d+oo%f[%A]') or string.match(pagename, '%d+[dh]%f[%A]') local decade = mw.ustring.match(cpagename, '[:%s](%d+yn)[%s-]') or mw.ustring.match(cpagename, '[:%s](%d+yn)$') local year = mw.ustring.match(cpagename, '[:%s](%d%d%d%d)%s') or --prioritize 4-digit years mw.ustring.match(cpagename, '[:%s](%d%d%d%d)$') or mw.ustring.match(cpagename, '[:%s](%d+)%s') or mw.ustring.match(cpagename, '[:%s](%d+)$') or --expand/combine exceptions below as needed mw.ustring.match(cpagename, '[:%s](%d+)-related') or mw.ustring.match(cpagename, '[:%s](%d+)-cylinder') or mw.ustring.match(cpagename, '[:%-VW](%d+)%s') --e.g. "Straight-8 engines" local roman = mw.ustring.match(cpagename, '%s([IVXLCDM]+)%s') local found = d_season or y_season or e_season or season or tvseason or nordinal or decade or year or roman if found then if string.match(found, '%d%d%d%d%d') == nil then --return in order of decreasing complexity/chance for duplication if nordinal and season --i.e. "18th-century establishments in the Province of Quebec (1763–1791)" then return { ['vtype'] = 'nordinal', ['v'] = nordinal } end if d_season then return { ['vtype'] = 'decade', ['v'] = d_season } end if y_season then return { ['vtype'] = 'year', ['v'] = y_season } end if e_season then return { ['vtype'] = 'ending', ['v'] = e_season } end if season then return { ['vtype'] = 'season', ['v'] = season } end if tvseason then return { ['vtype'] = 'tvseason', ['v'] = tvseason } end if decade then return { ['vtype'] = 'decade', ['v'] = decade } end if nordinal then return { ['vtype'] = 'nordinal', ['v'] = nordinal } end if year then return { ['vtype'] = 'year', ['v'] = year } end if roman then return { ['vtype'] = 'roman', ['v'] = roman } end end else --try wordinals ('zeroth' to 'ninety-ninth' only) local eng2ord = require('Module:ConvertNumeric').english_to_ordinal local split = mw.text.split(pagename, ' ') for i=1, #split do if eng2ord(split[i]) > -1 then return { ['vtype'] = 'wordinal', ['v'] = split[i] } end end --try English numerics ('one'/'single' to 'ninety-nine' only) local eng2num = require('Module:ConvertNumeric').english_to_numeral local split = mw.text.split(pagename, '[%s%-]') --e.g. "Nine-cylinder engines" for i=1, #split do if eng2num(split[i]) > -1 then return { ['vtype'] = 'enumeric', ['v'] = split[i] } end end end errors = p.errorclass('Function find_var can\'t find the variable text in category "'..pagename..'".') return { ['vtype'] = 'error', ['v'] = p.failedcat(errors, 'V') } end --[[==========================================================================]] --[[ Main ]] --[[==========================================================================]] function p.csn( frame ) --arg checks & handling local args = frame:getParent().args checkforunknownparams(args) --for template args checkforunknownparams(frame.args) --for #invoke'd args local cat = args['cat'] --'testcase' alias for catspace local list = args['list-all-links'] --debugging utility to output all links & followed #Rs local follow = args['follow-redirects'] --default 'yes' local testcase = args['testcase'] local testcasegap = args['testcasegap'] local minimum = args['min'] local maximum = args['max'] local skip_gaps = args['skip-gaps'] local show = args['show'] if show and show ~= '' then if show == 'skip-gaps' then return skipgaps_limit elseif show == 'term-limit' then return term_limit elseif show == 'hgap-limit' then return hgap_limit elseif show == 'ygap-limit' then return ygap_limit end end --apply args local pagename = testcase or cat or currtitle.text local testcaseindent = '' if testcasecolon == ':' then testcaseindent = '\n::' end if follow and follow == 'no' then followRs = false end if list and list == 'yes' then listall = true end if skip_gaps and skip_gaps == 'yes' then skipgaps = true trackcat(26, 'Category series navigation using skip-gaps parameter') end --ns checks if currtitle.nsText == 'Category' then if cat and cat ~= '' then trackcat(1, 'Category series navigation using cat parameter') end if testcase and testcase ~= '' then trackcat(2, 'Category series navigation using testcase parameter') end elseif currtitle.nsText == '' then trackcat(30, 'Category series navigation in mainspace') end --find the variable parts of pagename local findvar = find_var(pagename) if findvar.vtype == 'error' then --basic format error checking in find_var() return findvar.v..table.concat(ttrackingcats) end local start = string.match(findvar.v, '^%d+') --the rest is static local findvar_escaped = string.gsub( findvar.v, '%-', '%%%-') local firstpart, lastpart = string.match(pagename, '^(.-)'..findvar_escaped..'(.*)$') if findvar.vtype == 'tvseason' then --double check for cases like "30 Rock (season 3) episodes" firstpart, lastpart = string.match(pagename, '^(.-season )'..findvar_escaped..'(.*)$') if firstpart == nil then firstpart, lastpart = string.match(pagename, '^(.-series )'..findvar_escaped..'(.*)$') end if firstpart == nil then firstpart, lastpart = string.match(pagename, '^(.-meetup )'..findvar_escaped..'(.*)$') end end firstpart = mw.text.trim(firstpart or '') lastpart = mw.text.trim(lastpart or '') --call the appropriate nav function, in order of decreasing popularity if findvar.vtype == 'year' then --e.g. "500", "2001"; nav_year..nav_decade; ~75% of cats local nav1 = nav_year( frame, firstpart, start, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) local dec = math.floor(findvar.v/10) local decadecat = nil local firstpart_dec = firstpart if firstpart_dec ~= '' then local swapped for from, to in pairs(DECADE_LINKERS) do local stem = mw.ustring.match(firstpart_dec, '^(.-)%s*' .. mw.ustring.gsub(from, '%p', '%%%0') .. '$') if stem then swapped = mw.text.trim(stem .. ' ' .. to) break end end firstpart_dec = swapped or (firstpart_dec..' the') elseif firstpart_dec == 'AD' and dec <= 1 then firstpart_dec = '' if dec == 0 then dec = '' end end local decade = dec..'0yn ' decadecat = mw.text.trim( firstpart_dec..' '..decade..lastpart ) local exists = catexists(decadecat) if exists then navborder = false local nav2 = nav_decade( frame, firstpart_dec, decade, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) return wrap( nav1, nav2 ) elseif ttrackingcats[16] ~= '' then --nav_year isolated; check nav_hyphen (e.g. UK MPs 1974, Moldovan MPs 2009, etc.) local hyphen = '–' local finish = start local nav2 = nav_hyphen( frame, start, hyphen, finish, firstpart, lastpart, minimum, maximum, testcasegap )..testcaseindent..table.concat(ttrackingcats) if ttrackingcats[16] ~= '' then return wrap( nav1 ) --still isolated; rv to nav_year else return wrap( nav2 ) end else --regular nav_year return wrap( nav1 ) end elseif findvar.vtype == 'decade' then --e.g. "0yn", "2010yn"; nav_decade..nav_nordinal; ~12% of cats local nav1 = nav_decade( frame, firstpart, start, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) local decade = tonumber(string.match(findvar.v, '^(%d+)yn')) local century = math.floor( ((decade-1)/100) + 1 ) --from {{CENTURY}} if century == 0 then century = 1 end --no 0th century if string.match(decade, '00$') then century = century + 1 --'2000' is in the 20th, but the rest of the 2000s is in the 21st end -- Manx: "Filmyn X veih ny 1990yn" -> "Filmyn X veih'n 20oo eash"; "Scannaneaght ayns ny 1990yn" -> "Scannaneaght 'sy 20oo eash" local cfirstpart, clastpart, centurycat, exists for from, to in pairs(CENTURY_LINKERS) do local stem = mw.ustring.match(firstpart, '^(.-)%s*' .. mw.ustring.gsub(from, '%p', '%%%0') .. '$') if stem then cfirstpart = mw.text.trim(stem .. ' ' .. to) clastpart = mw.text.trim('eash ' .. lastpart) centurycat = mw.text.trim( cfirstpart..' '..p.addord(century)..' '..clastpart ) exists = catexists(centurycat) break end end if not cfirstpart then --no Manx rule for this wording: original English-style check cfirstpart = firstpart clastpart = ' century '..lastpart centurycat = mw.text.trim( firstpart..' '..p.addord(century)..clastpart ) exists = catexists(centurycat) if not exists then --check for hyphenated century clastpart = '-century '..lastpart centurycat = mw.text.trim( firstpart..' '..p.addord(century)..clastpart ) exists = catexists(centurycat) end end if exists then navborder = false trackcat(29, 'Category series navigation decade and century') local nav2 = nav_nordinal( frame, cfirstpart, century, clastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) return wrap( nav1, nav2 ) else return wrap( nav1 ) end elseif findvar.vtype == 'nordinal' then --e.g. "1st", "99th"; ~7.5% of cats return wrap( nav_nordinal( frame, firstpart, start, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'season' then --e.g. "1–4", "1999–2000", "2001–02", "2001–2002", "2005–2010", etc.; ~5.25% local hyphen, finish = mw.ustring.match(findvar.v, '%d([–-])(%d+)') --ascii 150 & 45 (ndash & keyboard hyphen); mw req'd return wrap( nav_hyphen( frame, start, hyphen, finish, firstpart, lastpart, minimum, maximum, testcasegap )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'tvseason' then --e.g. "1", "15" but preceded with "season" or "series"; <1% of cats return wrap( nav_tvseason( frame, firstpart, start, lastpart, maximum )..testcaseindent..table.concat(ttrackingcats) ) --"minimum" defaults to 1 elseif findvar.vtype == 'wordinal' then --e.g. "first", "ninety-ninth"; <<1% of cats local ordinal = true return wrap( nav_wordinal( frame, firstpart, findvar.v, lastpart, minimum, maximum, ordinal, frame )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'enumeric' then --e.g. "one", "ninety-nine"; <<1% of cats local ordinal = false return wrap( nav_wordinal( frame, firstpart, findvar.v, lastpart, minimum, maximum, ordinal, frame )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'roman' then --e.g. "I", "XXVIII"; <<1% of cats return wrap( nav_roman( frame, firstpart, findvar.v, lastpart, minimum, maximum )..testcaseindent..table.concat(ttrackingcats) ) elseif findvar.vtype == 'ending' then --e.g. "2021–" (irregular; ending unknown); <<<1% of cats local hyphen, finish = mw.ustring.match(findvar.v, '%d([–-])present$'), -1 --ascii 150 & 45 (ndash & keyboard hyphen); mw req'd if hyphen == nil then hyphen, finish = mw.ustring.match(findvar.v, '%d([–-])$'), 0 --0/-1 are hardcoded switches for nav_hyphen() end return wrap( nav_hyphen( frame, start, hyphen, finish, firstpart, lastpart, minimum, maximum, testcasegap )..testcaseindent..table.concat(ttrackingcats) ) else --malformed errors = p.errorclass('Failed to determine the appropriate nav function from malformed season "'..findvar.v..'". ') return p.failedcat(errors, 'N')..table.concat(ttrackingcats) end end return p 60uzcmt0pamig42u98iwu1abnbtx16c Clowan:For 10 44247 396402 367498 2026-11-06T14:36:53Z MacTire02 219 aastiurey elley 396402 wikitext text/x-wiki #REDIRECT [[Clowan:Son]] sw26y3uayw7034n9jxgsk1zb8l40avv A hetedik testvér 0 56258 396432 396116 2026-11-06T16:46:53Z ~2026-58972-40 24080 /* Kianglaghyn magh */ 396432 wikitext text/x-wiki {{DISPLAYTITLE:''A hetedik testvér''}} {{WD Kishtey Fys Fillym | kiaull = Wolfgang von Henko | colught_gientyn = {{Ubl|[[PannóniaFilm]]|[[Magyar Televízió]]|RealFilm|Feature Films for Families}} | skeaylley = {{Date fillym|df=y|1995|09|07|y Ghermaan|1996|04|04|yn Ungaar|ref2=<ref>{{cite web|url=http://www.europa-cinemas.org/en/films/fiche_film.php?IdFilm=11108|title=''Bobo und die Hasenbande''|accessdate=2023-10-09|publisher=Europa Cinemas|archive-url=https://web.archive.org/web/20110724044042/http://www.europa-cinemas.org/en/films/fiche_film.php?IdFilm=11108 |archive-date=2011-07-24 }}</ref>|1997|||ny Steatyn Unnaneysit}} | traa_roie = {{ubl|'''Yn Ungaar''':|80 minnid|'''Y Ghermaan''':|84 minnid| '''Ny Steatyn Unnaneysit''':|74 minnid}} | çhengey = {{ubl|Ungaarish|Germaanish|Baarle}} }} She fillym aittys drama bioghit da paitçhyn veih'n vlein 1995 eh '''{{lang|hu|A hetedik testvér}}''' ({{langx|de|Bobo und die Hasenbande}}, {{langx|en|The Seventh Brother}}). V'eh stiurit lesh Jenő Koltai as [[Tibor Hernádi]] as gientit ec [[Pannonia Film Studio]] 'syn Ungaar. V'eh er ny cho-ghientyn marish [[Magyar Televízió]], RealFilm 'sy Ghermaan, Feature Films for Families ayns ny Steatyn Unnaneysit. ==Imraaghyn== {{rolleyimraaghyn}} ==Kianglaghyn magh== *{{IMDb title|0112545}} {{gurneil eaghtyrys}} {{DEFAULTSORT:hetedik testver}} [[Ronney:Filmyn bioghit veih'n vlein 1995]] [[Ronney:Filmyn veih'n vlein 1995]] [[Ronney:Filmyn bioghit da paitçhyn veih ny 1990yn]] [[Ronney:Lhiegganyn filmyn caghlaaee]] [[Ronney:Ard-filmyn bioghit Americaanagh]] [[Ronney:Filmyn bioghit bentyn rish moddee]] [[Ronney:Filmyn bioghit bentyn rish lughtyn-thie]] [[Ronney:Filmyn bioghit bentyn rish caarjys]] [[Ronney:Filmyn bioghit bentyn rish conneeyn as mwaaee]] [[Ronney:Filmyn bioghit bentyn rish beiyn taggloo]] [[Ronney:Filmyn bioghit soit ayns keylljyn]] [[Ronney:Filmyn scoarit lesh Merrill Jenson]] [[Ronney:Ard-filmyn bioghit Germaanagh]] [[Ronney:Filmyn Germaanagh da paitçhyn]] [[Ronney:Filmyn bioghit Ungaaragh]] [[Ronney:Filmyn Ungaaragh da paitçhyn]] [[Ronney:Filmyn Ungaaragh]] [[Ronney:Filmyn 'syn Ungaarish]] k1lyurgmyn9j1qhlecrjzmj0ra2r939 396438 396432 2026-11-06T18:04:39Z ~2026-58972-40 24080 396438 wikitext text/x-wiki {{DISPLAYTITLE:''A hetedik testvér''}} {{WD Kishtey Fys Fillym | kiaull = Wolfgang von Henko | colught_gientyn = {{Ubl|[[PannóniaFilm]]|[[Magyar Televízió]]|RealFilm|Feature Films for Families}} | skeaylley = {{Date fillym|df=y|1995|09|07|y Ghermaan|1996|04|04|yn Ungaar|ref2=<ref>{{cite web|url=http://www.europa-cinemas.org/en/films/fiche_film.php?IdFilm=11108|title=''Bobo und die Hasenbande''|accessdate=2023-10-09|publisher=Europa Cinemas|archive-url=https://web.archive.org/web/20110724044042/http://www.europa-cinemas.org/en/films/fiche_film.php?IdFilm=11108 |archive-date=2011-07-24 }}</ref>|1997|||ny Steatyn Unnaneysit}} | traa_roie = {{ubl|'''Yn Ungaar''':|80 minnid|'''Y Ghermaan''':|84 minnid| '''Ny Steatyn Unnaneysit''':|74 minnid}} | çhengey = {{ubl|Ungaarish|Germaanish|Baarle}} }} She fillym aittys drama bioghit da paitçhyn veih'n vlein 1995 eh '''{{lang|hu|A hetedik testvér}}''' ({{langx|de|Bobo und die Hasenbande}}, {{langx|en|The Seventh Brother}}). V'eh stiurit lesh Jenő Koltai as [[Tibor Hernádi]] as gientit ec [[Pannonia Film Studio]] 'syn Ungaar. V'eh er ny cho-ghientyn marish [[Magyar Televízió]], RealFilm 'sy Ghermaan, as Feature Films for Families ayns ny Steatyn Unnaneysit. ==Imraaghyn== {{rolleyimraaghyn}} ==Kianglaghyn magh== *{{IMDb title|0112545}} {{gurneil eaghtyrys}} {{DEFAULTSORT:hetedik testver}} [[Ronney:Filmyn bioghit veih'n vlein 1995]] [[Ronney:Filmyn veih'n vlein 1995]] [[Ronney:Filmyn bioghit da paitçhyn veih ny 1990yn]] [[Ronney:Lhiegganyn filmyn caghlaaee]] [[Ronney:Ard-filmyn bioghit Americaanagh]] [[Ronney:Filmyn bioghit bentyn rish moddee]] [[Ronney:Filmyn bioghit bentyn rish lughtyn-thie]] [[Ronney:Filmyn bioghit bentyn rish caarjys]] [[Ronney:Filmyn bioghit bentyn rish conneeyn as mwaaee]] [[Ronney:Filmyn bioghit bentyn rish beiyn taggloo]] [[Ronney:Filmyn bioghit soit ayns keylljyn]] [[Ronney:Filmyn scoarit lesh Merrill Jenson]] [[Ronney:Ard-filmyn bioghit Germaanagh]] [[Ronney:Filmyn Germaanagh da paitçhyn]] [[Ronney:Filmyn bioghit Ungaaragh]] [[Ronney:Filmyn Ungaaragh da paitçhyn]] [[Ronney:Filmyn Ungaaragh]] [[Ronney:Filmyn 'syn Ungaarish]] a7vesnk1tfqou8wb4f78l1haek56cvr Ronney:Filmyn bioghit veih'n vlein 1995 14 56525 396354 2026-11-06T12:17:25Z MacTire02 219 ronney noa 396354 wikitext text/x-wiki {{kione ronney filmyn shaanrey YYYY}} [[Ronney:Bioghys 'sy vlein {{Title year}}]] 21ngsy1upps2ot6b0lmephtvk4yosf0 Clowan:Kione ronney filmyn shaanrey YYYY/core 10 56526 396355 2026-11-06T12:27:21Z MacTire02 219 clowan noa 396355 wikitext text/x-wiki <includeonly><!-- -->{{Category explanation|'''[[Fillym {{{genre|}}}|Filmyn {{{shaanrey|}}}]]''' er ny skeaylley magh da'n chied cheayrt 'sy vlein '''[[{{{year|}}}]]'''. Cha nel eh goaill stiagh filmyn nagh row skeaylt magh}} {{Category series navigation|skip-gaps=yes}} {{Category more if exists|Rolley filmyn {{{genre|}}} veih'n vlein {{{year|}}}|Scannaneaght 'sy vlein {{{year|}}}}} [[Ronney:Filmyn {{{genre|}}} rere blein|{{{year|}}}]] [[Ronney:Filmyn {{{genre|}}} veih ny {{DECADE|{{{year|}}}}}|{{{year|}}}]] [[Ronney:Filmyn veih'n vlein {{{year|}}} rere shaanrey|{{ucfirst:{{{genre|}}}}}]]<!-- --></includeonly><!-- --><noinclude><!-- -->{{Documentation|content=This is a subpage of [[Template:{{ROOTPAGENAME}}]].}}</noinclude> o4zfzyezdoi95yxedc6j4w6nuq1z5nb Clowan:Kione ronney filmyn shaanrey YYYY 10 56527 396356 2026-11-06T12:59:34Z MacTire02 219 Gaelg 396356 wikitext text/x-wiki <includeonly><!-- -->{{#if: {{#invoke:String|match|s={{PAGENAME}}|pattern=^Filmyn (.-) veih'n vlein %d%d%d%d$|nomatch=}} | {{Kione ronney filmyn shaanrey YYYY/core|year={{#invoke:String|match|s={{PAGENAME}}|pattern=(%d%d%d%d)$|nomatch=}}|genre={{#invoke:String|match|s={{PAGENAME}}|pattern=^Filmyn (.-) veih'n vlein %d%d%d%d$|nomatch=}}|shaanrey={{#invoke:String|match|s={{PAGENAME}}|pattern=^Filmyn (.-) veih'n vlein %d%d%d%d$|nomatch=}}}} }}<!-- --></includeonly><!-- # Note {{Automatic category TOC}} needs to be available whether or not this template page has been transcluded -->{{Automatic category TOC}}<!-- --><noinclude><!-- -->{{Documentation}}</noinclude> acjqgf717vq2myldhyyvqusfnypetak 396358 396356 2026-11-06T13:02:14Z MacTire02 219 ++ 396358 wikitext text/x-wiki <includeonly><!-- -->{{#if: {{#invoke:String|match|s={{PAGENAME}}|pattern=^Filmyn (.-) veih[^ ]* vlein %d%d%d%d$|nomatch=}} | {{Kione ronney filmyn shaanrey YYYY/core|year={{#invoke:String|match|s={{PAGENAME}}|pattern=(%d%d%d%d)$|nomatch=}}|genre={{#invoke:String|match|s={{PAGENAME}}|pattern=^Filmyn (.-) veih[^ ]* vlein %d%d%d%d$|nomatch=}}|shaanrey={{#invoke:String|match|s={{PAGENAME}}|pattern=^Filmyn (.-) veih[^ ]* vlein %d%d%d%d$|nomatch=}}}} }}<!-- --></includeonly><!-- # Note {{Automatic category TOC}} needs to be available whether or not this template page has been transcluded -->{{Automatic category TOC}}<!-- --><noinclude><!-- -->{{Documentation}}</noinclude> 9vk05z2czx21an5umwvtwkw98ckqga6 Ronney:Filmyn bioghit rere blein 14 56528 396359 2026-11-06T13:03:51Z MacTire02 219 ronney noa 396359 wikitext text/x-wiki {{Commons category|Animated films by year|Filmyn bioghit rere blein}} {{moir-ronney}} [[Ronney:Filmyn bioghit| Blein]] [[Ronney:Filmyn rere blein|+Bioghit]] [[Ronney:Bioghys rere blein| Filmyn]] [[Ronney:Feeshanyn rere blein|Bioghit]] {{Category TOC custom|start=1900}} 2n9be69m0mf2oy0sxh6gs77d1hz8dlb Ronney:Feeshanyn rere blein 14 56529 396360 2026-11-06T13:05:23Z MacTire02 219 ronney noa 396360 wikitext text/x-wiki {{moir-ronney}} [[Ronney:Feeshan|.Blein]] [[Ronney:Obbraghyn rere sorçh as blein]] 1jhk5ei87tqep36u3sftktcylmcslq7 Ronney:Filmyn bioghit veih ny 1990yn 14 56530 396361 2026-11-06T13:09:58Z MacTire02 219 ronney noa 396361 wikitext text/x-wiki {{Navseasoncats}} [[Ronney:Filmyn veih ny 1990yn|Bioghit]] [[Ronney:Filmyn bioghit rere jeihaght|1990]] [[Ronney:Bioghys ayns ny 1990yn]] [[Ronney:Filmyn bioghit veih'n 20oo eash|1990]] 6c0716a1g34f0xjtks91s4xwn1fby99 Ronney:Bioghys rere blein 14 56531 396362 2026-11-06T13:11:13Z MacTire02 219 ronney noa 396362 wikitext text/x-wiki {{moir-ronney}} [[Ronney:Ny h-ellynyn rere blein| Bioghys]] [[Ronney:Shennaghys y vioghys]] [[Ronney:Meanyn mooarey rere blein| Bioghys]] {{Category TOC custom|start=1900}} 2nxplpxue2sgcx515w6jtgcz3zw8trt Ronney:Meanyn mooarey rere blein 14 56532 396363 2026-11-06T13:12:34Z MacTire02 219 ronney noa 396363 wikitext text/x-wiki {{moir-ronney}} {{Category see also|Meanyn mooarey rere eash|Meanyn mooarey rere laa yn çhiaghtin|Meanyn mooarey rere jeihaght}} [[Ronney:Ronnaghyn rere blein]] [[Ronney:Meanyn mooarey rere earish| Blein]] 8128qpmck81mcmxwc6knj5p9sg5d6p0 Ronney:Shennaghys y vioghys 14 56533 396364 2026-11-06T13:13:49Z MacTire02 219 ronney noa 396364 wikitext text/x-wiki {{Commons category|Animation history|Shennaghys y vioghys}} {{Cat main}} [[Ronney:Bioghys]] [[Ronney:Shennaghys y scannaneaght|Vioghys]] tw6cp5lkfjoe8v8304ds0e80n1760ed Ronney:Shennaghys y scannaneaght 14 56534 396365 2026-11-06T13:15:07Z MacTire02 219 ronney noa 396365 wikitext text/x-wiki {{catmain}} {{commonscat|History of cinema|Shennaghys y scannaneaght}} [[Ronney:Scannaneaght]] [[Ronney:Shennaghys ny meanyn mooarey|Scannaneaght]] [[Ronney:Shennaghys y çhaghnoaylleeaght|Scannaneaght]] ms5m5bo5qvb4rdbeylg949lsi146ylg Ronney:Filmyn bioghit rere jeihaght 14 56535 396366 2026-11-06T13:16:47Z MacTire02 219 ronney noa 396366 wikitext text/x-wiki {{moir-ronney}} [[Ronney:Filmyn bioghit| Jeihaght]] [[Ronney:Bioghys rere jeihaght]] [[Ronney:Filmyn rere jeihaght|Bioghit]] [[Ronney:Filmyn rere shaanrey as jeihaght|Bioghit]] oj858ftwlaliughhwj6u88mdenfy19h Ronney:Bioghys rere jeihaght 14 56536 396367 2026-11-06T13:17:51Z MacTire02 219 ronney noa 396367 wikitext text/x-wiki [[Ronney:Ronnaghyn rere jeihaght]] [[Ronney:Shennaghys y vioghys]] d04of2eque29t86bl20bj5bxxm6v5xm Ronney:Filmyn rere shaanrey as jeihaght 14 56537 396368 2026-11-06T13:19:09Z MacTire02 219 ronney noa 396368 wikitext text/x-wiki {{Category see also|Filmyn rere jeihaght as shaanrey}} {{moir-ronney}} [[Ronney:Filmyn rere shaanrey| Jeihaght]] [[Ronney:Filmyn rere jeihaght| Shaanrey]] 9dhzk6phqpgg2fz72x5lecidxgo9rfz Ronney:Filmyn bioghit veih'n 20oo eash 14 56538 396369 2026-11-06T13:20:32Z MacTire02 219 ronney noa 396369 wikitext text/x-wiki {{Navseasoncats}} [[Ronney:Filmyn veih'n 20oo eash|Bioghit]] [[Ronney:Filmyn bioghit rere eash| 20]] [[Ronney:Bioghys 'sy 20oo eash]] ivwkvoozjd4hfmzl9mh3b20d5oae1ho Ronney:Bioghys 'sy 20oo eash 14 56539 396370 2026-11-06T13:21:42Z MacTire02 219 ronney noa 396370 wikitext text/x-wiki {{Navseasoncats}} [[Ronney:Ny h-ellynyn 'sy 20oo eash]] [[Ronney:Bioghys rere eash|20]] [[Ronney:Scannaneaght 'sy 20oo eash|*Bioghys]] [[Ronney:Obbraghyn veih'n 20oo eash]] 8eu1jta0bugjk749y2vzu66dzq8vwil Ronney:Scannaneaght 'sy 20oo eash 14 56540 396371 2026-11-06T13:23:08Z MacTire02 219 ronney noa 396371 wikitext text/x-wiki {{FilmynRereEash|20oo|19|20|19d|21d}} acpehuba4qvmru4052a8wsi161yvze0 396383 396371 2026-11-06T13:44:53Z MacTire02 219 ++ 396383 wikitext text/x-wiki {{FilmynRereEash|20oo|19|20|19oo|21d}} ckztg7e6k8ldhiittbqnj2i4wsdnuhq Clowan:Ronney filmyn rere eash 10 56541 396372 2026-11-06T13:25:17Z MacTire02 219 clowan noa 396372 wikitext text/x-wiki {{KioneRonneyFilmynAynsEashRereBlein|ThisCenturyOrdinal={{{1}}}|ThisCenturyDecimal={{{2}}}|NextCenturyDecimal={{{3}}}|PreviousCenturyOrdinal={{{4}}}|NextCenturyOrdinal={{{5}}}|EntityTarget=Years in film|WorkTypeLowercase=in film}} bn991nlcl0h4ybot5shfafv0p1pj6dz 396373 396372 2026-11-06T13:27:35Z MacTire02 219 MacTire02 moved page [[Clowan:FilmynRereEash]] to [[Clowan:Ronney filmyn rere eash]] 396372 wikitext text/x-wiki {{KioneRonneyFilmynAynsEashRereBlein|ThisCenturyOrdinal={{{1}}}|ThisCenturyDecimal={{{2}}}|NextCenturyDecimal={{{3}}}|PreviousCenturyOrdinal={{{4}}}|NextCenturyOrdinal={{{5}}}|EntityTarget=Years in film|WorkTypeLowercase=in film}} bn991nlcl0h4ybot5shfafv0p1pj6dz 396379 396373 2026-11-06T13:39:39Z MacTire02 219 ++ 396379 wikitext text/x-wiki {{Kione ronney filmyn ayns eash rere blein|ThisCenturyOrdinal={{{1}}}|ThisCenturyDecimal={{{2}}}|NextCenturyDecimal={{{3}}}|PreviousCenturyOrdinal={{{4}}}|NextCenturyOrdinal={{{5}}}|EntityTarget=Scannaneaght}} fuxybs8a4w5mfa9f9z6tj1zxd14krze Clowan:FilmynRereEash 10 56542 396374 2026-11-06T13:27:35Z MacTire02 219 MacTire02 moved page [[Clowan:FilmynRereEash]] to [[Clowan:Ronney filmyn rere eash]] 396374 wikitext text/x-wiki #REDIRECT [[Clowan:Ronney filmyn rere eash]] e23y12g4by35go4ym71gcpa5yc9gb5v Clowan:Kione ronney filmyn ayns eash rere blein 10 56543 396375 2026-11-06T13:30:13Z MacTire02 219 ++; ny smoo ry-hyndaa 396375 wikitext text/x-wiki {| id="toc" style="margin-left:auto; margin-right:auto;" class="toc" | style="text-align:center;" | {{Category link if exists|{{{PreviousCenturyOrdinal}}} century {{{WorkTypeLowercase}}}|←}} [[{{{EntityTarget}}}|Years]] of the [[{{{ThisCenturyOrdinal}}} century]] {{{WorkTypeLowercase}}} {{Category link if exists|{{{NextCenturyOrdinal}}} century {{{WorkTypeLowercase}}}|→}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}00s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}00s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}01 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}01}} :{{Category link if exists|{{{ThisCenturyDecimal}}}02 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}02}} :{{Category link if exists|{{{ThisCenturyDecimal}}}03 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}03}} :{{Category link if exists|{{{ThisCenturyDecimal}}}04 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}04}} :{{Category link if exists|{{{ThisCenturyDecimal}}}05 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}05}} :{{Category link if exists|{{{ThisCenturyDecimal}}}06 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}06}} :{{Category link if exists|{{{ThisCenturyDecimal}}}07 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}07}} :{{Category link if exists|{{{ThisCenturyDecimal}}}08 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}08}} :{{Category link if exists|{{{ThisCenturyDecimal}}}09 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}09}} :{{Category link if exists|{{{ThisCenturyDecimal}}}10 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}10}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}10s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}10s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}11 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}11}} :{{Category link if exists|{{{ThisCenturyDecimal}}}12 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}12}} :{{Category link if exists|{{{ThisCenturyDecimal}}}13 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}13}} :{{Category link if exists|{{{ThisCenturyDecimal}}}14 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}14}} :{{Category link if exists|{{{ThisCenturyDecimal}}}15 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}15}} :{{Category link if exists|{{{ThisCenturyDecimal}}}16 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}16}} :{{Category link if exists|{{{ThisCenturyDecimal}}}17 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}17}} :{{Category link if exists|{{{ThisCenturyDecimal}}}18 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}18}} :{{Category link if exists|{{{ThisCenturyDecimal}}}19 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}19}} :{{Category link if exists|{{{ThisCenturyDecimal}}}20 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}20}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}20s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}20s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}21 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}21}} :{{Category link if exists|{{{ThisCenturyDecimal}}}22 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}22}} :{{Category link if exists|{{{ThisCenturyDecimal}}}23 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}23}} :{{Category link if exists|{{{ThisCenturyDecimal}}}24 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}24}} :{{Category link if exists|{{{ThisCenturyDecimal}}}25 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}25}} :{{Category link if exists|{{{ThisCenturyDecimal}}}26 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}26}} :{{Category link if exists|{{{ThisCenturyDecimal}}}27 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}27}} :{{Category link if exists|{{{ThisCenturyDecimal}}}28 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}28}} :{{Category link if exists|{{{ThisCenturyDecimal}}}29 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}29}} :{{Category link if exists|{{{ThisCenturyDecimal}}}30 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}30}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}30s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}30s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}31 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}31}} :{{Category link if exists|{{{ThisCenturyDecimal}}}32 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}32}} :{{Category link if exists|{{{ThisCenturyDecimal}}}33 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}33}} :{{Category link if exists|{{{ThisCenturyDecimal}}}34 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}34}} :{{Category link if exists|{{{ThisCenturyDecimal}}}35 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}35}} :{{Category link if exists|{{{ThisCenturyDecimal}}}36 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}36}} :{{Category link if exists|{{{ThisCenturyDecimal}}}37 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}37}} :{{Category link if exists|{{{ThisCenturyDecimal}}}38 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}38}} :{{Category link if exists|{{{ThisCenturyDecimal}}}39 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}39}} :{{Category link if exists|{{{ThisCenturyDecimal}}}40 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}40}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}40s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}40s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}41 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}41}} :{{Category link if exists|{{{ThisCenturyDecimal}}}42 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}42}} :{{Category link if exists|{{{ThisCenturyDecimal}}}43 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}43}} :{{Category link if exists|{{{ThisCenturyDecimal}}}44 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}44}} :{{Category link if exists|{{{ThisCenturyDecimal}}}45 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}45}} :{{Category link if exists|{{{ThisCenturyDecimal}}}46 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}46}} :{{Category link if exists|{{{ThisCenturyDecimal}}}47 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}47}} :{{Category link if exists|{{{ThisCenturyDecimal}}}48 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}48}} :{{Category link if exists|{{{ThisCenturyDecimal}}}49 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}49}} :{{Category link if exists|{{{ThisCenturyDecimal}}}50 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}50}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}50s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}50s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}51 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}51}} :{{Category link if exists|{{{ThisCenturyDecimal}}}52 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}52}} :{{Category link if exists|{{{ThisCenturyDecimal}}}53 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}53}} :{{Category link if exists|{{{ThisCenturyDecimal}}}54 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}54}} :{{Category link if exists|{{{ThisCenturyDecimal}}}55 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}55}} :{{Category link if exists|{{{ThisCenturyDecimal}}}56 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}56}} :{{Category link if exists|{{{ThisCenturyDecimal}}}57 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}57}} :{{Category link if exists|{{{ThisCenturyDecimal}}}58 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}58}} :{{Category link if exists|{{{ThisCenturyDecimal}}}59 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}59}} :{{Category link if exists|{{{ThisCenturyDecimal}}}60 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}60}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}60yn {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}60yn {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}61 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}61}} :{{Category link if exists|{{{ThisCenturyDecimal}}}62 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}62}} :{{Category link if exists|{{{ThisCenturyDecimal}}}63 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}63}} :{{Category link if exists|{{{ThisCenturyDecimal}}}64 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}64}} :{{Category link if exists|{{{ThisCenturyDecimal}}}65 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}65}} :{{Category link if exists|{{{ThisCenturyDecimal}}}66 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}66}} :{{Category link if exists|{{{ThisCenturyDecimal}}}67 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}67}} :{{Category link if exists|{{{ThisCenturyDecimal}}}68 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}68}} :{{Category link if exists|{{{ThisCenturyDecimal}}}69 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}69}} :{{Category link if exists|{{{ThisCenturyDecimal}}}70 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}70}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}70yn {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}70yn {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}71 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}71}} :{{Category link if exists|{{{ThisCenturyDecimal}}}72 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}72}} :{{Category link if exists|{{{ThisCenturyDecimal}}}73 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}73}} :{{Category link if exists|{{{ThisCenturyDecimal}}}74 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}74}} :{{Category link if exists|{{{ThisCenturyDecimal}}}75 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}75}} :{{Category link if exists|{{{ThisCenturyDecimal}}}76 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}76}} :{{Category link if exists|{{{ThisCenturyDecimal}}}77 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}77}} :{{Category link if exists|{{{ThisCenturyDecimal}}}78 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}78}} :{{Category link if exists|{{{ThisCenturyDecimal}}}79 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}79}} :{{Category link if exists|{{{ThisCenturyDecimal}}}80 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}80}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}80yn {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}80yn {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}81 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}81}} :{{Category link if exists|{{{ThisCenturyDecimal}}}82 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}82}} :{{Category link if exists|{{{ThisCenturyDecimal}}}83 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}83}} :{{Category link if exists|{{{ThisCenturyDecimal}}}84 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}84}} :{{Category link if exists|{{{ThisCenturyDecimal}}}85 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}85}} :{{Category link if exists|{{{ThisCenturyDecimal}}}86 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}86}} :{{Category link if exists|{{{ThisCenturyDecimal}}}87 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}87}} :{{Category link if exists|{{{ThisCenturyDecimal}}}88 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}88}} :{{Category link if exists|{{{ThisCenturyDecimal}}}89 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}89}} :{{Category link if exists|{{{ThisCenturyDecimal}}}90 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}90}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}90yn {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}90yn {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}91 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}91}} :{{Category link if exists|{{{ThisCenturyDecimal}}}92 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}92}} :{{Category link if exists|{{{ThisCenturyDecimal}}}93 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}93}} :{{Category link if exists|{{{ThisCenturyDecimal}}}94 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}94}} :{{Category link if exists|{{{ThisCenturyDecimal}}}95 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}95}} :{{Category link if exists|{{{ThisCenturyDecimal}}}96 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}96}} :{{Category link if exists|{{{ThisCenturyDecimal}}}97 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}97}} :{{Category link if exists|{{{ThisCenturyDecimal}}}98 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}98}} :{{Category link if exists|{{{ThisCenturyDecimal}}}99 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}99}} :{{Category link if exists|{{{NextCenturyDecimal}}}00 {{{WorkTypeLowercase}}}|{{{NextCenturyDecimal}}}00}} {{endflatlist}} |}{{#ifeq:{{NAMESPACE}}|Template<!-- -->|[[Category:Works-by-century templates|{{PAGENAME}}]]<!-- -->|<!-- -->[[Ronney:Scannaneaght rere eash{{!}}{{{ThisCenturyOrdinal}}}]]<!-- -->[[Ronney:Ny h-ellynyn 'sy {{{ThisCenturyOrdinal}}} eash]]<!-- -->[[Ronney:Meanyn mooarey 'sy {{{ThisCenturyOrdinal}}}]]<!-- -->}} 5554sxjl1haddno9n4m0i5c0wfc7ii6 396376 396375 2026-11-06T13:30:50Z MacTire02 219 MacTire02 moved page [[Clowan:KioneRonneyFilmynAynsEashRereBlein]] to [[Clowan:Kione ronney filmyn ayns eash rere blein]] 396375 wikitext text/x-wiki {| id="toc" style="margin-left:auto; margin-right:auto;" class="toc" | style="text-align:center;" | {{Category link if exists|{{{PreviousCenturyOrdinal}}} century {{{WorkTypeLowercase}}}|←}} [[{{{EntityTarget}}}|Years]] of the [[{{{ThisCenturyOrdinal}}} century]] {{{WorkTypeLowercase}}} {{Category link if exists|{{{NextCenturyOrdinal}}} century {{{WorkTypeLowercase}}}|→}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}00s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}00s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}01 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}01}} :{{Category link if exists|{{{ThisCenturyDecimal}}}02 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}02}} :{{Category link if exists|{{{ThisCenturyDecimal}}}03 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}03}} :{{Category link if exists|{{{ThisCenturyDecimal}}}04 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}04}} :{{Category link if exists|{{{ThisCenturyDecimal}}}05 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}05}} :{{Category link if exists|{{{ThisCenturyDecimal}}}06 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}06}} :{{Category link if exists|{{{ThisCenturyDecimal}}}07 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}07}} :{{Category link if exists|{{{ThisCenturyDecimal}}}08 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}08}} :{{Category link if exists|{{{ThisCenturyDecimal}}}09 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}09}} :{{Category link if exists|{{{ThisCenturyDecimal}}}10 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}10}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}10s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}10s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}11 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}11}} :{{Category link if exists|{{{ThisCenturyDecimal}}}12 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}12}} :{{Category link if exists|{{{ThisCenturyDecimal}}}13 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}13}} :{{Category link if exists|{{{ThisCenturyDecimal}}}14 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}14}} :{{Category link if exists|{{{ThisCenturyDecimal}}}15 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}15}} :{{Category link if exists|{{{ThisCenturyDecimal}}}16 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}16}} :{{Category link if exists|{{{ThisCenturyDecimal}}}17 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}17}} :{{Category link if exists|{{{ThisCenturyDecimal}}}18 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}18}} :{{Category link if exists|{{{ThisCenturyDecimal}}}19 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}19}} :{{Category link if exists|{{{ThisCenturyDecimal}}}20 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}20}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}20s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}20s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}21 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}21}} :{{Category link if exists|{{{ThisCenturyDecimal}}}22 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}22}} :{{Category link if exists|{{{ThisCenturyDecimal}}}23 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}23}} :{{Category link if exists|{{{ThisCenturyDecimal}}}24 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}24}} :{{Category link if exists|{{{ThisCenturyDecimal}}}25 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}25}} :{{Category link if exists|{{{ThisCenturyDecimal}}}26 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}26}} :{{Category link if exists|{{{ThisCenturyDecimal}}}27 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}27}} :{{Category link if exists|{{{ThisCenturyDecimal}}}28 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}28}} :{{Category link if exists|{{{ThisCenturyDecimal}}}29 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}29}} :{{Category link if exists|{{{ThisCenturyDecimal}}}30 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}30}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}30s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}30s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}31 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}31}} :{{Category link if exists|{{{ThisCenturyDecimal}}}32 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}32}} :{{Category link if exists|{{{ThisCenturyDecimal}}}33 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}33}} :{{Category link if exists|{{{ThisCenturyDecimal}}}34 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}34}} :{{Category link if exists|{{{ThisCenturyDecimal}}}35 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}35}} :{{Category link if exists|{{{ThisCenturyDecimal}}}36 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}36}} :{{Category link if exists|{{{ThisCenturyDecimal}}}37 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}37}} :{{Category link if exists|{{{ThisCenturyDecimal}}}38 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}38}} :{{Category link if exists|{{{ThisCenturyDecimal}}}39 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}39}} :{{Category link if exists|{{{ThisCenturyDecimal}}}40 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}40}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}40s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}40s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}41 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}41}} :{{Category link if exists|{{{ThisCenturyDecimal}}}42 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}42}} :{{Category link if exists|{{{ThisCenturyDecimal}}}43 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}43}} :{{Category link if exists|{{{ThisCenturyDecimal}}}44 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}44}} :{{Category link if exists|{{{ThisCenturyDecimal}}}45 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}45}} :{{Category link if exists|{{{ThisCenturyDecimal}}}46 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}46}} :{{Category link if exists|{{{ThisCenturyDecimal}}}47 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}47}} :{{Category link if exists|{{{ThisCenturyDecimal}}}48 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}48}} :{{Category link if exists|{{{ThisCenturyDecimal}}}49 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}49}} :{{Category link if exists|{{{ThisCenturyDecimal}}}50 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}50}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}50s {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}50s {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}51 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}51}} :{{Category link if exists|{{{ThisCenturyDecimal}}}52 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}52}} :{{Category link if exists|{{{ThisCenturyDecimal}}}53 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}53}} :{{Category link if exists|{{{ThisCenturyDecimal}}}54 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}54}} :{{Category link if exists|{{{ThisCenturyDecimal}}}55 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}55}} :{{Category link if exists|{{{ThisCenturyDecimal}}}56 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}56}} :{{Category link if exists|{{{ThisCenturyDecimal}}}57 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}57}} :{{Category link if exists|{{{ThisCenturyDecimal}}}58 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}58}} :{{Category link if exists|{{{ThisCenturyDecimal}}}59 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}59}} :{{Category link if exists|{{{ThisCenturyDecimal}}}60 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}60}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}60yn {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}60yn {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}61 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}61}} :{{Category link if exists|{{{ThisCenturyDecimal}}}62 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}62}} :{{Category link if exists|{{{ThisCenturyDecimal}}}63 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}63}} :{{Category link if exists|{{{ThisCenturyDecimal}}}64 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}64}} :{{Category link if exists|{{{ThisCenturyDecimal}}}65 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}65}} :{{Category link if exists|{{{ThisCenturyDecimal}}}66 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}66}} :{{Category link if exists|{{{ThisCenturyDecimal}}}67 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}67}} :{{Category link if exists|{{{ThisCenturyDecimal}}}68 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}68}} :{{Category link if exists|{{{ThisCenturyDecimal}}}69 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}69}} :{{Category link if exists|{{{ThisCenturyDecimal}}}70 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}70}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}70yn {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}70yn {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}71 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}71}} :{{Category link if exists|{{{ThisCenturyDecimal}}}72 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}72}} :{{Category link if exists|{{{ThisCenturyDecimal}}}73 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}73}} :{{Category link if exists|{{{ThisCenturyDecimal}}}74 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}74}} :{{Category link if exists|{{{ThisCenturyDecimal}}}75 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}75}} :{{Category link if exists|{{{ThisCenturyDecimal}}}76 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}76}} :{{Category link if exists|{{{ThisCenturyDecimal}}}77 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}77}} :{{Category link if exists|{{{ThisCenturyDecimal}}}78 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}78}} :{{Category link if exists|{{{ThisCenturyDecimal}}}79 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}79}} :{{Category link if exists|{{{ThisCenturyDecimal}}}80 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}80}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}80yn {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}80yn {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}81 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}81}} :{{Category link if exists|{{{ThisCenturyDecimal}}}82 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}82}} :{{Category link if exists|{{{ThisCenturyDecimal}}}83 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}83}} :{{Category link if exists|{{{ThisCenturyDecimal}}}84 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}84}} :{{Category link if exists|{{{ThisCenturyDecimal}}}85 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}85}} :{{Category link if exists|{{{ThisCenturyDecimal}}}86 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}86}} :{{Category link if exists|{{{ThisCenturyDecimal}}}87 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}87}} :{{Category link if exists|{{{ThisCenturyDecimal}}}88 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}88}} :{{Category link if exists|{{{ThisCenturyDecimal}}}89 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}89}} :{{Category link if exists|{{{ThisCenturyDecimal}}}90 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}90}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|{{{ThisCenturyDecimal}}}90yn {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}90yn {{{WorkTypeLowercase}}}}}}} :{{Category link if exists|{{{ThisCenturyDecimal}}}91 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}91}} :{{Category link if exists|{{{ThisCenturyDecimal}}}92 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}92}} :{{Category link if exists|{{{ThisCenturyDecimal}}}93 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}93}} :{{Category link if exists|{{{ThisCenturyDecimal}}}94 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}94}} :{{Category link if exists|{{{ThisCenturyDecimal}}}95 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}95}} :{{Category link if exists|{{{ThisCenturyDecimal}}}96 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}96}} :{{Category link if exists|{{{ThisCenturyDecimal}}}97 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}97}} :{{Category link if exists|{{{ThisCenturyDecimal}}}98 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}98}} :{{Category link if exists|{{{ThisCenturyDecimal}}}99 {{{WorkTypeLowercase}}}|{{{ThisCenturyDecimal}}}99}} :{{Category link if exists|{{{NextCenturyDecimal}}}00 {{{WorkTypeLowercase}}}|{{{NextCenturyDecimal}}}00}} {{endflatlist}} |}{{#ifeq:{{NAMESPACE}}|Template<!-- -->|[[Category:Works-by-century templates|{{PAGENAME}}]]<!-- -->|<!-- -->[[Ronney:Scannaneaght rere eash{{!}}{{{ThisCenturyOrdinal}}}]]<!-- -->[[Ronney:Ny h-ellynyn 'sy {{{ThisCenturyOrdinal}}} eash]]<!-- -->[[Ronney:Meanyn mooarey 'sy {{{ThisCenturyOrdinal}}}]]<!-- -->}} 5554sxjl1haddno9n4m0i5c0wfc7ii6 396378 396376 2026-11-06T13:38:59Z MacTire02 219 prowal 396378 wikitext text/x-wiki {| id="toc" style="margin-left:auto; margin-right:auto;" class="toc" | style="text-align:center;" | {{Category link if exists|Scannaneaght 'sy {{{PreviousCenturyOrdinal}}} eash|←}} [[{{{EntityTarget|Scannaneaght}}}]] 'sy [[{{{ThisCenturyOrdinal}}} eash]] rere blein {{Category link if exists|Scannaneaght 'sy {{{NextCenturyOrdinal}}} eash|→}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}00yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}00yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}01|{{{ThisCenturyDecimal}}}01}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}02|{{{ThisCenturyDecimal}}}02}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}03|{{{ThisCenturyDecimal}}}03}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}04|{{{ThisCenturyDecimal}}}04}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}05|{{{ThisCenturyDecimal}}}05}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}06|{{{ThisCenturyDecimal}}}06}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}07|{{{ThisCenturyDecimal}}}07}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}08|{{{ThisCenturyDecimal}}}08}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}09|{{{ThisCenturyDecimal}}}09}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}10|{{{ThisCenturyDecimal}}}10}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}10yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}10yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}11|{{{ThisCenturyDecimal}}}11}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}12|{{{ThisCenturyDecimal}}}12}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}13|{{{ThisCenturyDecimal}}}13}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}14|{{{ThisCenturyDecimal}}}14}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}15|{{{ThisCenturyDecimal}}}15}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}16|{{{ThisCenturyDecimal}}}16}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}17|{{{ThisCenturyDecimal}}}17}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}18|{{{ThisCenturyDecimal}}}18}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}19|{{{ThisCenturyDecimal}}}19}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}20|{{{ThisCenturyDecimal}}}20}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}20yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}20yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}21|{{{ThisCenturyDecimal}}}21}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}22|{{{ThisCenturyDecimal}}}22}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}23|{{{ThisCenturyDecimal}}}23}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}24|{{{ThisCenturyDecimal}}}24}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}25|{{{ThisCenturyDecimal}}}25}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}26|{{{ThisCenturyDecimal}}}26}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}27|{{{ThisCenturyDecimal}}}27}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}28|{{{ThisCenturyDecimal}}}28}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}29|{{{ThisCenturyDecimal}}}29}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}30|{{{ThisCenturyDecimal}}}30}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}30yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}30yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}31|{{{ThisCenturyDecimal}}}31}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}32|{{{ThisCenturyDecimal}}}32}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}33|{{{ThisCenturyDecimal}}}33}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}34|{{{ThisCenturyDecimal}}}34}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}35|{{{ThisCenturyDecimal}}}35}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}36|{{{ThisCenturyDecimal}}}36}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}37|{{{ThisCenturyDecimal}}}37}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}38|{{{ThisCenturyDecimal}}}38}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}39|{{{ThisCenturyDecimal}}}39}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}40|{{{ThisCenturyDecimal}}}40}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}40yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}40yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}41|{{{ThisCenturyDecimal}}}41}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}42|{{{ThisCenturyDecimal}}}42}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}43|{{{ThisCenturyDecimal}}}43}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}44|{{{ThisCenturyDecimal}}}44}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}45|{{{ThisCenturyDecimal}}}45}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}46|{{{ThisCenturyDecimal}}}46}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}47|{{{ThisCenturyDecimal}}}47}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}48|{{{ThisCenturyDecimal}}}48}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}49|{{{ThisCenturyDecimal}}}49}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}50|{{{ThisCenturyDecimal}}}50}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}50yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}50yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}51|{{{ThisCenturyDecimal}}}51}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}52|{{{ThisCenturyDecimal}}}52}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}53|{{{ThisCenturyDecimal}}}53}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}54|{{{ThisCenturyDecimal}}}54}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}55|{{{ThisCenturyDecimal}}}55}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}56|{{{ThisCenturyDecimal}}}56}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}57|{{{ThisCenturyDecimal}}}57}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}58|{{{ThisCenturyDecimal}}}58}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}59|{{{ThisCenturyDecimal}}}59}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}60|{{{ThisCenturyDecimal}}}60}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}60yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}60yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}61|{{{ThisCenturyDecimal}}}61}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}62|{{{ThisCenturyDecimal}}}62}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}63|{{{ThisCenturyDecimal}}}63}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}64|{{{ThisCenturyDecimal}}}64}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}65|{{{ThisCenturyDecimal}}}65}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}66|{{{ThisCenturyDecimal}}}66}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}67|{{{ThisCenturyDecimal}}}67}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}68|{{{ThisCenturyDecimal}}}68}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}69|{{{ThisCenturyDecimal}}}69}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}70|{{{ThisCenturyDecimal}}}70}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}70yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}70yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}71|{{{ThisCenturyDecimal}}}71}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}72|{{{ThisCenturyDecimal}}}72}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}73|{{{ThisCenturyDecimal}}}73}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}74|{{{ThisCenturyDecimal}}}74}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}75|{{{ThisCenturyDecimal}}}75}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}76|{{{ThisCenturyDecimal}}}76}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}77|{{{ThisCenturyDecimal}}}77}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}78|{{{ThisCenturyDecimal}}}78}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}79|{{{ThisCenturyDecimal}}}79}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}80|{{{ThisCenturyDecimal}}}80}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}80yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}80yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}81|{{{ThisCenturyDecimal}}}81}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}82|{{{ThisCenturyDecimal}}}82}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}83|{{{ThisCenturyDecimal}}}83}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}84|{{{ThisCenturyDecimal}}}84}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}85|{{{ThisCenturyDecimal}}}85}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}86|{{{ThisCenturyDecimal}}}86}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}87|{{{ThisCenturyDecimal}}}87}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}88|{{{ThisCenturyDecimal}}}88}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}89|{{{ThisCenturyDecimal}}}89}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}90|{{{ThisCenturyDecimal}}}90}} {{endflatlist}} |- | style="padding-left:5px; padding-right:5px;" |{{flatlist}} ;{{nobold|{{Category link if exists|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}90yn|Scannaneaght ayns ny {{{ThisCenturyDecimal}}}90yn}}}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}91|{{{ThisCenturyDecimal}}}91}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}92|{{{ThisCenturyDecimal}}}92}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}93|{{{ThisCenturyDecimal}}}93}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}94|{{{ThisCenturyDecimal}}}94}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}95|{{{ThisCenturyDecimal}}}95}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}96|{{{ThisCenturyDecimal}}}96}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}97|{{{ThisCenturyDecimal}}}97}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}98|{{{ThisCenturyDecimal}}}98}} :{{Category link if exists|Scannaneaght 'sy vlein {{{ThisCenturyDecimal}}}99|{{{ThisCenturyDecimal}}}99}} :{{Category link if exists|Scannaneaght 'sy vlein {{{NextCenturyDecimal}}}00|{{{NextCenturyDecimal}}}00}} {{endflatlist}} |}{{#ifeq:{{NAMESPACE}}|{{ns:10}}||<!-- -->[[Ronney:Scannaneaght rere eash|{{{ThisCenturyOrdinal}}}]]<!-- -->[[Ronney:Ny h-ellynyn 'sy {{{ThisCenturyOrdinal}}} eash]]<!-- -->[[Ronney:Meanyn mooarey 'sy {{{ThisCenturyOrdinal}}} eash]]<!-- -->}} dtyimomo5lacudnpc01liqbjzsvsh2r Clowan:KioneRonneyFilmynAynsEashRereBlein 10 56544 396377 2026-11-06T13:30:50Z MacTire02 219 MacTire02 moved page [[Clowan:KioneRonneyFilmynAynsEashRereBlein]] to [[Clowan:Kione ronney filmyn ayns eash rere blein]] 396377 wikitext text/x-wiki #REDIRECT [[Clowan:Kione ronney filmyn ayns eash rere blein]] dpfd8ysbw5wxtk5jjgeri09g4lzpzb2 Ronney:Scannaneaght rere eash 14 56545 396380 2026-11-06T13:41:34Z MacTire02 219 ronney noa 396380 wikitext text/x-wiki {{Category see also|Scannaneaght rere blein|Scannaneaght rere jeihaght}} {{For|filmyn as shaanraghyn fillym er lheh rere eash|Ronney:Filmyn rere eash}} [[Ronney:Scannaneaght| Eash]] [[Ronney:Ny h-ellynyn rere eash]] [[Ronney:Meanyn mooarey rere eash]] 71wbyw8tslxoh7hmn2ptlw0lnmn7l1b Ronney:Scannaneaght 'sy 21d eash 14 56546 396382 2026-11-06T13:43:47Z MacTire02 219 ronney noa 396382 wikitext text/x-wiki {{FilmynRereEash|21d|20|19|20oo|22h}} dha1c4n76yn485m24mvvwoexsf414ex Ronney:Bioghys rere eash 14 56547 396384 2026-11-06T13:45:44Z MacTire02 219 ronney noa 396384 wikitext text/x-wiki [[Ronney:Ny h-ellynyn rere eash|Bioghys]] [[Ronney:Shennaghys y vioghys]] 36ggcob6jbbe955mpatgtvr2a7ap3go Ronney:Filmyn bioghit rere eash 14 56548 396385 2026-11-06T13:46:58Z MacTire02 219 ronney noa 396385 wikitext text/x-wiki {{moir-ronney}} [[Ronney:Filmyn bioghit| Eash]] [[Ronney:Filmyn rere eash|Bioghit]] [[Ronney:Bioghys rere eash]] ltznqtc1qumac1s8b14ygf3gzwhi171 Ronney:Bioghys ayns ny 1990yn 14 56549 396386 2026-11-06T13:48:32Z MacTire02 219 ronney noa 396386 wikitext text/x-wiki {{Navseasoncats with centuries below decade}} [[Ronney:Ny h-ellynyn ayns ny 1990yn]] [[Ronney:Bioghys rere jeihaght]] [[Ronney:Scannaneaght ayns ny 1990yn|*Bioghys]] [[Ronney:Obbraghyn veih ny 1990yn]] [[Ronney:Bioghys 'sy 20oo eash|1990]] q146fq6fpqt78arc0mpkxweuzf7rpq8 Clowan:Navseasoncats with centuries below decade 10 56550 396387 2026-11-06T13:49:25Z MacTire02 219 aastiurey 396387 wikitext text/x-wiki #REDIRECT [[Clowan:Category series navigation]] ovu6zolvy3nyy8doxpuulftt4o8wsec Ronney:Category series navigation decade and century 14 56551 396390 2026-11-06T14:01:43Z MacTire02 219 ++ 396390 wikitext text/x-wiki {{Tracking category|text=}} {{Category see also|Category series navigation year and decade}} This tracking category contains pages where {{tl|Category series navigation}} automatically produces a 2nd navigation bar for the parent century category, if it exists. Pages in this category should only be added by [[Module:Category series navigation]]. {{CatAutoTOC}} [[Ronney:Glenney category series navigation|T]] dfq9skrdea3nbnwacr67aalg4ojiq01 Ronney:Scannaneaght ayns ny 1990yn 14 56552 396391 2026-11-06T14:03:16Z MacTire02 219 ronney noa 396391 wikitext text/x-wiki {{infilmdecade|19|9|20th}} [[Ronney:Scannaneaght 'sy 20oo eash|1990]] [[Ronney:Ny h-ellynyn ayns ny 1990yn]] [[Ronney:Meanyn mooarey ayns ny 1990yn]] lu4kfx7nkjjorzcggoop7e0flymtu0q 396392 396391 2026-11-06T14:04:05Z MacTire02 219 ++ 396392 wikitext text/x-wiki {{FillymAynsJeihaght|19|9|20oo}} [[Ronney:Scannaneaght 'sy 20oo eash|1990]] [[Ronney:Ny h-ellynyn ayns ny 1990yn]] [[Ronney:Meanyn mooarey ayns ny 1990yn]] 4zoigh4nlgfnjdcui5v3mmfhlxj9imj 396397 396392 2026-11-06T14:11:38Z MacTire02 219 prowal 396397 wikitext text/x-wiki {{FillymAynsJeihaght|19|9|20oo}} [[Ronney:Scannaneaght 'sy 20oo eash|1990]] [[Ronney:Ny h-ellynyn ayns ny 1990yn]] [[Ronney:Meanyn mooarey ayns ny 1990yn]] l sewdhytj0xbzjk452vohs9qznarket6 396398 396397 2026-11-06T14:11:47Z MacTire02 219 -- 396398 wikitext text/x-wiki {{FillymAynsJeihaght|19|9|20oo}} [[Ronney:Scannaneaght 'sy 20oo eash|1990]] [[Ronney:Ny h-ellynyn ayns ny 1990yn]] [[Ronney:Meanyn mooarey ayns ny 1990yn]] 4zoigh4nlgfnjdcui5v3mmfhlxj9imj Clowan:FillymAynsJeihaght 10 56553 396393 2026-11-06T14:05:49Z MacTire02 219 ++ 396393 wikitext text/x-wiki Taghyrtyn fillym as [[fillym|filmyn]] er ny skeaylley magh da'n chied cheayrt ayns ny '''[[{{{1}}}{{#ifeq:{{{2}}} | 0 | {{{2}}}0–{{{1}}}{{{2}}}9{{!}}{{{1}}}}}{{{2}}}0yn]]'''. {{WorksDecadeHeader|DecimalCentury={{{1}}}|Decade={{{2}}}|OrdinalCentury={{{3}}}|WorkType=in film}} <includeonly> [[Ronney:{{{1}}}{{{2}}}0yn]] [[Ronney:Scannaneaght rere jeihaght|{{{1}}}{{{2}}}0yn]] </includeonly><noinclude> [[Ronney:Clowanyn obbraghyn-rere-jeihaght|{{PAGENAME}}]] </noinclude> ou7g9n3p9pgk7nkdi07fh84t9ryhm9w Clowan:WorksDecadeHeader 10 56554 396394 2026-11-06T14:06:54Z MacTire02 219 aastiurey 396394 wikitext text/x-wiki #REDIRECT [[Clowan:Kione ronney obbraghyn rere jeihaght]] 9z8xt61dhpthiqi7ftwunsgdot79yk7 Clowan:Kione ronney obbraghyn rere jeihaght 10 56555 396395 2026-11-06T14:07:30Z MacTire02 219 ++; ny smoo ry-hyndaa 396395 wikitext text/x-wiki <includeonly>{{Portal|{{{portal|}}}|{{#switch:{{{WorkType}}} |albums |compositions |songs |musicals = Music |comics debuts = Comics |films |in film = Film |Japanese films= Film <!-- could add Japan? --> |horror films |science fiction films |science fiction horror films |monster movies= Speculative fiction <!-- could add Film --> |documents=Writing |drawings |paintings = Visual arts |essays |novels = Literature |fantasy novels |horror novels |science fiction novels |speculative fiction novels = Speculative fiction <!-- could add Literature --> |fantasy works |science fiction works = Speculative fiction |clothes = Fashion |poems = Poetry |plays = Theatre |speeches=Politics |television commercials |television series |television specials |television episodes |television series debuts |television series endings=Television}}|{{FindYDCportal|{{Title decade}}s}}}} {{Category series navigation}} {{#ifeq:{{NAMESPACE}}|Template|[[Category:Works-by-decade templates|{{PAGENAME}}]]|[[Category:{{Title decade}}s {{{ParentType|works}}}|{{ucfirst:{{{WorkType}}}}}]]{{#ifexist:Category:{{Century name from title decade|dash}} {{{WorkType}}}|[[Category:{{Century name from title decade|dash}} {{{WorkType}}}| {{{Decade}}}]]}} {{category if exists|{{ucfirst:{{{WorkType}}}}} by decade}}}} </includeonly><noinclude> {{Documentation}} </noinclude> f5fzgu4j32k581hxha0vqovtagytjlw 396396 396395 2026-11-06T14:10:29Z MacTire02 219 ++ 396396 wikitext text/x-wiki <includeonly>{{Category series navigation}} {{#ifeq:{{NAMESPACE}}|Template|[[Ronney:Clowanyn obbraghyn-rere-jeihaght|{{PAGENAME}}]]|[[Ronney:{{{ParentType|works}}} veih ny {{Title decade}}yn|{{ucfirst:{{{WorkType}}}}}]]{{#ifexist:Ronney:{{{WorkType}}} veih'n {{Century name from title decade|dash}}|[[Ronney:{{Century name from title decade|dash}} {{{WorkType}}}| {{{Decade}}}]]}} {{category if exists|{{ucfirst:{{{WorkType}}}}} rere jeihaght}}}} </includeonly><noinclude> {{Documentation}} </noinclude> jik6dwhayvib3w77ua3pcpxp0x167lo 396399 396396 2026-11-06T14:12:13Z MacTire02 219 Gaelg 396399 wikitext text/x-wiki <includeonly>{{Category series navigation}} {{#ifeq:{{NAMESPACE}}|Template|[[Ronney:Clowanyn obbraghyn-rere-jeihaght|{{PAGENAME}}]]|[[Ronney:{{{ParentType|obbraghyn}}} veih ny {{Title decade}}yn|{{ucfirst:{{{WorkType}}}}}]]{{#ifexist:Ronney:{{{WorkType}}} veih'n {{Century name from title decade|dash}}|[[Ronney:{{Century name from title decade|dash}} {{{WorkType}}}| {{{Decade}}}]]}} {{category if exists|{{ucfirst:{{{WorkType}}}}} rere jeihaght}}}} </includeonly><noinclude> {{Documentation}} </noinclude> cy4gwj9qttruzbjlo5ox2u46z7eo25w Ronney:Meanyn mooarey ayns ny 1990yn 14 56556 396400 2026-11-06T14:33:26Z MacTire02 219 ronney noa 396400 wikitext text/x-wiki {{Kione ronney ny meanyn mooarey ayns ny YYY0yn|eash=20oo}} ingdqe77obi18gmit3v8i7lhmh9mdq9 Ronney:Scannaneaght rere jeihaght 14 56557 396401 2026-11-06T14:35:46Z MacTire02 219 ronney noa 396401 wikitext text/x-wiki {{Category see also|Scannaneaght rere blein|Scannaneaght rere eash}} {{For|filmyn as shaanraghyn fillym er lheh rere jeihaght|Ronney:Filmyn rere jeihaght}} [[Ronney:Scannaneaght| Jeihaght]] [[Ronney:Ny h-ellynyn rere jeihaght]] [[Ronney:Meanyn mooarey rere jeihaght| Scannaneaght]] 2gzo6wu8twq6t24pqm6wzgabp5xvnlw Clowan:Er son 10 56558 396404 2026-11-06T14:37:02Z MacTire02 219 MacTire02 moved page [[Clowan:Er son]] to [[Clowan:Son]] 396404 wikitext text/x-wiki #REDIRECT [[Clowan:Son]] sw26y3uayw7034n9jxgsk1zb8l40avv Clowan:Er son/doc 10 56559 396406 2026-11-06T14:37:02Z MacTire02 219 MacTire02 moved page [[Clowan:Er son/doc]] to [[Clowan:Son/doc]] 396406 wikitext text/x-wiki #REDIRECT [[Clowan:Son/doc]] ke8sjc8zh9boq44odfrvq4bhbfy0i8q Ronney:Bioghys 'sy vlein 1995 14 56560 396408 2026-11-06T14:39:10Z MacTire02 219 ronney noa 396408 wikitext text/x-wiki Ta'n ronney shoh jeerit da '''[[bioghys]]''' 'sy vlein '''[[{{Title year}}]]'''. {{Navseasoncats with decades below year}} {{Cat more if exists|Bioghys 'sy vlein {{Title year}}}} {{CatAutoTOC}} [[Ronney:Bioghys ayns ny {{DECADE|{{Title year}}}}|{{Title year}}]] [[Ronney:Bioghys rere blein|{{Title year}}]] [[Ronney:Meanyn mooarey 'sy vlein {{Title year}}]] [[Ronney:Ny h-ellynyn 'sy vlein {{title year}}]] 8jnim65ji3dymja512wwnsxkimupxo5 Clowan:Navseasoncats with decades below year 10 56561 396409 2026-11-06T14:39:51Z MacTire02 219 aastiurey 396409 wikitext text/x-wiki #REDIRECT [[Clowan:Category series navigation]] ovu6zolvy3nyy8doxpuulftt4o8wsec Ronney:Meanyn mooarey 'sy vlein 1995 14 56562 396410 2026-11-06T14:40:51Z MacTire02 219 ronney noa 396410 wikitext text/x-wiki {{kione ronney meanyn mooarey 'sy vlein YYYY}} b8qjh6zdh67z7u6vlzj4d45mjl6cysx Clowan:Kione ronney meanyn mooarey 'sy vlein YYYY 10 56563 396411 2026-11-06T14:58:08Z MacTire02 219 ++ 396411 wikitext text/x-wiki <includeonly><!-- # Y chied cheim na dy scrutaghey nee duillag ronney eh shoh -->{{Category other<!-- -->|<!-- ############### She ronney t'eh ############################### # Scrutaghey vel eh piyral rish y chummey shirrit: "Meanyn mooarey 'sy vlein YYYY" # (Ta {{PAGENAME}} scapail y chammag heose; myr shen, ta'n fockle kianglee piyrit dy faggyssagh) -->{{#ifeq: {{#invoke:String|find|{{PAGENAME}}|^Meanyn mooarey [^ ]+ vlein %d%d%d%d$|plain=false}}<!-- -->|0<!-- -->|<!-- # Cha nel eh piyral -->{{Error|Ennym duillag neu-chooie.<br />Lhisagh [[Clowan:Kione ronney meanyn mooarey 'sy vlein YYYY]] ve ymmydit er duillagyn ronney raad ta enmys y ronney 'sy chummey {{nowrap|"Meanyn&nbsp;mooarey&nbsp;'sy&nbsp;vlein&nbsp;YYYY"}}, raad she blein 4-earroo eh YYYY (m.s. "1899")}}<!-- -->|<!-- # Outdent ##### Toshiaght y veer ta troggal y ronney ##### -->{{Category explanation|'''{{#ifexist:Meanyn mooarey|[[Meanyn mooarey]]|Meanyn mooarey}}''' 'sy '''vlein [[{{Title year}}]]'''}}<!-- -->{{Category series navigation|skip-gaps=yes}} [[Ronney:Meanyn mooarey ayns ny {{DECADE|{{Title year}}}}|{{Title year}}]] [[Ronney:Meanyn mooarey rere blein|{{Title year}}]] [[Ronney:{{Title year}}|Meanyn mooarey]]<!-- ##### Jerrey yn veer ta troggal y ronney ##### # un-Outdent -->}}<!-- -->|<!-- ############### Cha nee ronney eh ############################### -->{{Error|Cha vel yn duillag shoh 'syn [[Cooney:Ronnaghyn|ennym-spoar ronney]]. Lhisagh [[Clowan:Kione ronney meanyn mooarey 'sy vlein YYYY]] ve ymmydit er duillagyn ronney raad ta enmys y ronney 'sy chummey {{nowrap|"Meanyn&nbsp;mooarey&nbsp;'sy&nbsp;vlein&nbsp;YYYY"}}, raad she blein 4-earroo eh YYYY (m.s. "1899")}}<!-- -->}}</includeonly><!-- # Cooney: Ta feme er {{Automatic category TOC}} dy ve ayn, edyr ta'n duillag clowan shoh er ve ghoaill stiagh ny cha nel -->{{Automatic category TOC}}<!-- --><noinclude><!-- -->{{Documentation|content=<!-- -->Son ronney dy hroggal 'sy chummey "Meanyn mooarey 'sy vlein YYYY", raad she blein 4-earroo eh YYYY m.s. [[:Ronney:Meanyn mooarey 'sy vlein 1995]] ==Ymmyd== <code><nowiki>{{kione ronney meanyn mooarey 'sy vlein YYYY}}</nowiki></code> Cha nel feme er parameadar erbee == Jeeagh er neesht == * [[Clowan:Kione ronney ny meanyn mooarey ayns ny YYY0yn]] }} </noinclude> 6hrxl7eio9mv6uk4jabfq1b1vsou1un Ronney:Filmyn veih'n vlein 1995 rere shaanrey 14 56564 396412 2026-11-06T15:00:10Z MacTire02 219 ronney noa 396412 wikitext text/x-wiki {{moir-ronney}} {{Navseasoncats}} [[Ronney:Filmyn veih'n vlein {{Title year}}| Shaanrey]] [[Ronney:Filmyn rere blein as shaanrey|{{Title year}}]] 1cn1cpned4rf7f48p9i65m0x1hx6v43 Ronney:Filmyn rere blein as shaanrey 14 56565 396413 2026-11-06T15:01:07Z MacTire02 219 ronney noa 396413 wikitext text/x-wiki {{Category see also|Filmyn rere shaanrey as blein}} {{moir-ronney}} [[Ronney:Filmyn rere blein| Shaanrey]] [[Ronney:Filmyn rere shaanrey| Blein]] ssavkez15m7kp69k8fjrep3a1ufap8s Ronney:Ard-filmyn bioghit Americaanagh 14 56566 396414 2026-11-06T15:28:44Z MacTire02 219 ronney noa 396414 wikitext text/x-wiki {{CatAutoTOC}} [[Ronney:Ard-filmyn bioghit|Americaanagh]] [[Ronney:Filmyn bioghit Americaanagh]] d3r99ooek1c4jt6tfoz6kdynogmjg5a Ronney:Ard-filmyn bioghit 14 56567 396415 2026-11-06T15:29:31Z MacTire02 219 ronney noa 396415 wikitext text/x-wiki [[Ronney:Filmyn bioghit rere lhiurid]] ogvbs5qrhujg17xy46v5itgy9scy0bo 396416 396415 2026-11-06T15:33:16Z MacTire02 219 ronney elley 396416 wikitext text/x-wiki [[Ronney:Filmyn bioghit rere foddid]] ehtr2jhcxjzzs4dh0u48owjkmf5u16h Ronney:Filmyn bioghit rere foddid 14 56568 396417 2026-11-06T15:33:28Z MacTire02 219 ronney noa 396417 wikitext text/x-wiki [[Ronney:Filmyn bioghit| Foddid]] [[Ronney:Foddid]] [[Ronney:Ronnaghyn rere traa]] co7f9z6y7euehluonm7pgzdx8xzgt6y Ronney:Foddid 14 56569 396418 2026-11-06T15:34:13Z MacTire02 219 ronney noa 396418 wikitext text/x-wiki [[Ronney:Traa]] lbkjt6npcpz7bibfwobuv7kzigugo6n Ronney:Filmyn bioghit da paitçhyn veih ny 1990yn 14 56570 396419 2026-11-06T15:36:29Z MacTire02 219 ronney noa 396419 wikitext text/x-wiki {{Navseasoncats}} [[Ronney:Filmyn da paitçhyn veih ny 1990yn|*]] [[Ronney:Filmyn bioghit veih ny 1990|*]] [[Ronney:Filmyn bioghit da paitçhyn rere jeihaght| 1990]] [[Ronney:Filmyn bioghit da paitçhyn veih'n 20oo eash|1990]] bcufvaucj7q4ikyxxvz45umq4nvcxp2 396420 396419 2026-11-06T15:37:08Z MacTire02 219 ronney elley 396420 wikitext text/x-wiki {{Navseasoncats}} [[Ronney:Filmyn da paitçhyn veih ny 1990yn|*]] [[Ronney:Filmyn bioghit veih ny 1990yn|*]] [[Ronney:Filmyn bioghit da paitçhyn rere jeihaght| 1990]] [[Ronney:Filmyn bioghit da paitçhyn veih'n 20oo eash|1990]] 4nyzn21yjlrt4kjhmg2hj3om86sbbzw Ronney:Filmyn bioghit da paitçhyn rere jeihaght 14 56571 396421 2026-11-06T15:38:31Z MacTire02 219 ronney noa 396421 wikitext text/x-wiki {{moir-ronney}} [[Ronney:Filmyn bioghit da paitçhyn| Jeihaght]] [[Ronney:Filmyn bioghit rere jeihaght|Paitchyn]] [[Ronney:Filmyn da paitçhyn rere jeihaght|Bioghit]] 2iw8ek4dgdjs5dffch7jsf6lh0uvjv2 Ronney:Filmyn bioghit da paitçhyn veih'n 20oo eash 14 56572 396422 2026-11-06T15:39:49Z MacTire02 219 ronney noa 396422 wikitext text/x-wiki {{Navseasoncats}} [[Ronney:Filmyn bioghit veih'n 20oo eash|Paitchyn]] [[Ronney:Filmyn bioghit da paitçhyn rere eash| 20]] heajlvpg3w0wbi74huv5tjqm35twibz Ronney:Filmyn bioghit da paitçhyn rere eash 14 56573 396423 2026-11-06T15:40:51Z MacTire02 219 ronney noa 396423 wikitext text/x-wiki {{moir-ronney}} [[Ronney:Filmyn bioghit da paitçhyn| Eash]] [[Ronney:Filmyn bioghit rere eash|Paitchyn]] ksgk9qevbetfqmrp20z32v7griplp35 Ronney:Filmyn Germaanagh da paitçhyn 14 56574 396424 2026-11-06T15:41:56Z MacTire02 219 ronney noa 396424 wikitext text/x-wiki [[Ronney:Eunysseyrys Germaanagh da paitçhyn]] [[Ronney:Filmyn Germaanagh rere shaanrey|Paitchyn]] [[Ronney:Filmyn da paitçhyn rere çheer|Germaanagh]] hcoi5ac8zoto5a01j8c9hcr4rlb26jr Ronney:Eunysseyrys Germaanagh da paitçhyn 14 56575 396425 2026-11-06T15:42:54Z MacTire02 219 ronney noa 396425 wikitext text/x-wiki {{Commons category|Children's entertainment in Germany|Eunysseyrys da paitçhyn 'sy Ghermaan}} [[Ronney:Eunysseyrys 'sy Ghermaan|Paitchyn]] [[Ronney:Eunysseyrys da paitçhyn rere çheer|Germaanagh]] [[Ronney:Lambaanid 'sy Ghermaan]] oq6phlskgksab487rr8tursvst0mbgb Ronney:Eunysseyrys 'sy Ghermaan 14 56576 396426 2026-11-06T15:43:56Z MacTire02 219 ronney noa 396426 wikitext text/x-wiki {{commonscat|Entertainment in Germany|Eunysseyrys 'sy Ghermaan}} [[Ronney:Cultoor y Ghermaan]] [[Ronney:Eunysseyrys rere çheer|Ghermaan]] [[Ronney:Eunysseyrys 'syn Oarpey rere çheer|Ghermaan]] d4xwgi75fjesuyy6j380o9xjrybgkc5 Ronney:Lambaanid 'sy Ghermaan 14 56577 396427 2026-11-06T15:44:46Z MacTire02 219 ronney noa 396427 wikitext text/x-wiki [[Ronney:Lambaanid rere çheer|Ghermaan]] [[Ronney:Lambaanid 'syn Oarpey| Ghermaan]] [[Ronney:Aegid 'sy Ghermaan]] [[Ronney:Lught-thie 'sy Ghermaan]] k6ld92pvcsd4satdfrqlohrv1nz9lq0 Ronney:Aegid 'sy Ghermaan 14 56578 396428 2026-11-06T15:45:33Z MacTire02 219 ronney noa 396428 wikitext text/x-wiki {{cat main}} {{CatRel|Shenneraght 'sy Ghermaan|Baase 'sy Ghermaan}} [[Ronney:Aegid rere çheer|Ghermaan]] [[Ronney:Sheshaght y Ghermaan]] [[Ronney:Aegid 'syn Oarpey rere çheer|Ghermaan]] s4zkyegkii46goq7r1u7izrf2vgb8ck Ronney:Lught-thie 'sy Ghermaan 14 56579 396429 2026-11-06T15:46:24Z MacTire02 219 ronney noa 396429 wikitext text/x-wiki [[Ronney:Lught-thie rere çheer|Ghermaan]] [[Ronney:Lught-thie 'syn Oarpey|Ghermaan]] [[Ronney:Sheshaght y Ghermaan]] tdnlict67opzzmqhfxjdcwwhjnc527t Ronney:Filmyn Germaanagh rere shaanrey 14 56580 396430 2026-11-06T15:47:42Z MacTire02 219 ronney noa 396430 wikitext text/x-wiki {{Commonscategory|Films of Germany by genre|Filmyn ass y Ghermaan rere shaanrey}} [[Ronney:Filmyn Germaanagh| Shaanrey]] [[Ronney:Filmyn rere çheer as shaanrey|Germaanagh]] {{moir-ronney}} 7oct6q6nqpkwyo83e4pnp7swnobzhxl Ronney:Filmyn Germaanagh 14 56581 396431 2026-11-06T15:48:31Z MacTire02 219 ronney noa 396431 wikitext text/x-wiki {{CategoryTOC}} {{Commonscat|Films of Germany|Filmyn ass y Ghermaan}} [[Ronney:Filmyn rere çheer|Germaanagh]] [[Ronney:Scannaneaght 'sy Ghermaan]] [[Ronney:Obbraghyn lesh Germaanee|*]] [[Ronney:Filmyn Oarpagh rere çheer|Germaanagh]] s1962qyd59d4l7wvmfhzgc6r1o59crd Ronney:Filmyn bioghit bentyn rish moddee 14 56582 396436 2026-11-06T17:20:37Z MacTire02 219 ronney noa 396436 wikitext text/x-wiki [[Ronney:Filmyn bioghit bentyn rish sheeintee|Moddee]] [[Ronney:Filmyn bentyn rish moddee| Bioghit]] {{CatAutoTOC}} hisaaueppfk7q48tbqgct2yhabxjulu