Wikipiideɛ dgawiki https://dga.wikipedia.org/wiki/A_Gamp%C9%9Bl%C9%9B_zu MediaWiki 1.47.0-wmf.11 first-letter Duoro bimbu zie Be o yoŋ Yeli Toma daana Toma daana yeli Wikipedia Wikipedia yeli Duoro kɔre Duoro kɔre yeli MediaWiki MediaWiki yeli Tɛmpileti Tɛmpileti yeli Sombo Sombo yeli Gbuli Gbuli yeli TimedText TimedText talk Module Module talk Event Event talk Alexander Kodwo Kom Abban 0 148 62597 58327 2026-07-15T22:43:16Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62597 wikitext text/x-wiki {{Databox|item=Q61694539}} '''Alexander Kodwo Kom Abban'''<ref>https://web.archive.org/web/20221205165157/https://www.thepublisheronline.com/internal-auditors-must-be-the-eye-of-the-public-mp/mr-alexander-kodwo-kom-abban/</ref> e la Gaana pɔletesean ane [[begemaale die ayɔpõĩ mɛmba a Ghana republic anaare|begemaale die ayɔpõĩ mɛmba a Gaana republic anaare]] eŋɛ, a are ko [[Gomoa West|Gomoa West Gbandige]] a [[Central Region|central Irigyiŋ]] poɔ, a [[Wɔɔ paati|wɔɔ paate]] [[yuori]] eŋɛ.<ref>https://www.ghanaweb.com/person/Alexander-Kodwo-Kom-Abban-2263</ref> == Nyɔvore Piiluu ane Ganzanne == Ba dɔge la Abban Disembare beri ayoɔbo 1973 ane o baa la [[Gomoa Dawurampong]] a central Irigyiŋ poɔ, [[Ghana|Gaana]]. O taa la Baŋkeŋ Masa lɔɔ degeree ane libi-yɛlɛ lɔɔ yi a [[Boston university school of Law|Boston univeniti sakuuri naŋ kyaare begɛ]] 2008 poɔ.<ref name=":0">https://ghanamps.com/mp/abban-alexander-kodwo-kom/</ref> O nyɛ la o Medical License yi a Medical ane Dental Council. O la taa la o science degeree bakyila Human Biology eŋɛ yi a [[Kwame Nkrumah University of Science and Technology|Kwame Nkrumah Univeniti ko Science ane Technology]], Bakyila Science degeree Medicine ane Surgery eŋɛ yi a sakue ŋa ne o zu. O gaa la niŋe de o Masa degeree Public Health yi a [[Hamburg Sakuuri ko Applied science]]. O la taa la German Sɛtefekate yi a [[Goethe Institut]] [[Accra]] poɔ.<ref name=":1">https://web.archive.org/web/20230924111854/https://www.moh.gov.gh/hon-alexander-kodwo-kom-abban/</ref> == O Toma == Abban da e la [[Merɛ hakelteɛrɛ]] yi 2013 te tɔ 2014 a [[Ghana Stock Exchange|Gaana Stock Exchange]] zie. O meŋ da la e la lɛgekyiraa a [[Ghana Institute Management ane Public Administration|Gaana Institute Management ane Public Administration]] a yi 2009 te tɔ 2010. O meŋ da la e la wagere kyɛlee lɛgekyiraa a [[Ghana School of Law|Gaana School of Law]] a yi 2010 te tɔ 2015. O da e la die Ɔfesa yi 2009 te tɔ 2012 a [[Ghana Health Service|Gaana Health Service]] ane a Medical Ɔfesa ana tontonzie na ne o zu yi 2012 te tɔ 2016.<ref name=":1" /> == Pɔletese Yɛlɛ == Abban e la [[Wɔɔ paati|wɔɔ paate]] mɛmba.<ref name=":1" /> O e la begemaale die mɛmba koroo ko a begemaale die ayɔpõĩ a Gaana republic anaare eŋɛ, ko a Gomoa West Gbandige a [[Central Region|Central Irigyiŋ]] poɔ, Ghana.<ref name=":0" /> === 2016 Nuuri Neɛbo === A [[2016 Ghana zaa gbuli nuuri neɛbo]] eŋɛ, Abban di la Gomoa West Gbandige begemaale die gyongyoŋ kogi. O da die la ne 22,741 nuuri naŋ e 49.6% kɔɔ poɔ a nuuri zaa naŋ neɛ kyɛ ka a [[Kataweɛ Paati|NDC]] begemaale die gyongyoŋ bie Samuel Fletcher nyɛ 21,004 nuuri naŋ e 45.8% kɔɔ poɔ a nuuri zaa naŋ neɛ, ka [[PPP]] begemaale die gyongyoŋ bie Charles Yawson nyɛ 2,086 nuuri naŋ e 4.6% kɔɔ poɔ a nuuri zaa naŋ neɛ ane a [[CPP]] begemaale die gyongyoŋ bie Stephen Afriyie nyɛ 0 nuuri naŋ e 0% kɔɔ poɔ a nuuri zaa naŋ neɛ.<ref>https://web.archive.org/web/20221205161445/https://ghanaelections.peacefmonline.com/pages/2016/parliament/central/gomoa_west/</ref> == Kɔmatee == Abban da e la mɛmba ko a Gɔmenante yeltɔnyaa kɔmatee ane meŋ mɛmba ko a Laanfeeloŋ yɛlɛ kɔmatee.<ref name=":1" /> === Minisa === Ona la Depete Minisa koro ko Laanfeeloŋ yɛlɛ.<ref>https://web.archive.org/web/20230601165426/https://newslinegh.com/2019/03/21/amend-section-37-of-the-ghs-teaching-hospitals-act-to-ensure-effective-functioning-kodwo-abban-appeals/</ref><ref>https://web.archive.org/web/20240610055017/https://presidency.gov.gh/index.php/briefing-room/press-releases/1557-new-deputy-ministerial-appointments</ref> O la e la Deɛpete Minisa koroo ko duori ŋmɛ.<ref>https://web.archive.org/web/20221205170953/https://businessdayghana.com/national-cyber-security-centre-develops-cii-to-ensure-cyber-resilience/deputy-communications-minister-alexander-kodwo-kom-abban/</ref><ref>https://dailyguidenetwork.com/breaking-news-president-sacks-deputy-minister/</ref><ref>https://www.myjoyonline.com/asset-declaration-bawumia-ofori-atta-osafo-maafo-kyei-mensah-bonsu-and-88-others-did-not-fully-comply/</ref> ====== 2020 Nuuri Neɛbo ====== Abban lee la a Gomoa West Gbandige begemaale die gyongyoŋ eŋɛ, a [[2020 Ghana zaa gbuli nuuri neɛbo]] wagere ko a NDC begemaale die gyongyoŋ bie [[Richard Gyan Mensah]]. O lee la ne 25,235 nuuri naŋ e 44.9% kɔɔ poɔ a nuuri zaa naŋ neɛ kyɛ ka Richard nyɛ 29,822 nuuri naŋ e 53.0% kɔɔ poɔ a nuuri zaa naŋ neɛ, ka a [[GUM]] begemaale die gyongyoŋ bie Edmond Panyin Enchill nyɛ 716 nuuri naŋ e 1.3% kɔɔ poɔ a nuuri zaa naŋ neɛ ane a PPP begemaale die gyongyoŋ bie Charles Yawson nyɛ 481 nuuri naŋ e 0.9% kɔɔ poɔ a nuuri zaa naŋ neɛ.<ref>https://mobile.ghanaweb.com/GhanaHomePage/ghanaelection2020/elections.constituency.results.php?mode=parliamentary&ID=90</ref><ref>https://web.archive.org/web/20240313170758/https://ghanaelections.peacefmonline.com/pages/2020/parliament/central/gomoa_west/</ref> == Meŋɛ Yɛlɛ == O e la [[Kiristabie]] (Catholic). O kuli la Mrs Anastasia Antoinette Abban, ba taa la biiri banaare. == Sommo Yizie == [[Category:8th Parliament of the 4th Republic of Ghana]] [[Category:Dagaare]] [[Category:Gampɛlɛ zaa]] [[Category:Dɔɔ]] [[Category:Dɔɔloŋ]] [[Category:Africa]] [[Category:Ghana]] [[Category:West Africa]] [[Category:7th Parliament of the 4th Republic of Ghana]] qykinp1ydkjnbkzm075faki0yh4tt0w Joseph Yieleh Chireh 0 820 62609 57997 2026-07-16T03:00:24Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62609 wikitext text/x-wiki {{Databox|item= Q1708293}} '''Joseph Yieleh Chireh'''(Dɔge o la a 8 Gyuulae 1954 yuoni) o e la teeŋ karakye bege-ŋmaara, gɔvemente gbɛbogi ara a ko paaloŋ zaane yɛlɛ aneŋ pɔleteseɛŋ.<ref>https://web.archive.org/web/20210125034646/https://thebftonline.com/11/08/2020/fbnbanks-board-chair-retires/</ref><ref name=":0">https://web.archive.org/web/20110716172024/http://www.parliament.gh/hon_chireh_joseph_yieleh.html</ref> O da e la begimaala naŋ da are ko a Wa West nu-neɛ lombori. O toŋ la a begemaale toma dire anaare, anuu, ayoɔbo aneŋ ayɔpoi a ko a Republic of Ghana. O e la neɛ naŋ poɔ a Pan-African begemaale die yɛlɛ poɔ.<ref>http://parliamentafrica.com/photos-ghanas-representatives-at-the-pan-african-parliament-2/</ref> == O Nyɔvore Piiluu Aneŋ O Sakuu == Ba dɔge la Chireh teŋa kaŋa ba naŋ boɔla [[Lassia Tuolu]] naŋ be a [[Upper West Irigyin]] paaloŋ a Gaana poɔ. O nyɛ la o sekondire sakuuri zannoo a yi Navrongo sakuuri poɔ, be ka o da zanne a yi neŋ gama mine ayi ba naŋ boɔla GCE ordinary aneŋ Advanced level certificate.<ref name=":1">https://web.archive.org/web/20210107221113/https://ukgcc.com.gh/hon-joseph-yieleh-chireh/</ref> O da leɛ gaa la nimitɔɔre a leɛ zanne a yi sakukpoŋ ŋa ba naŋ boɔla KNUST a 1975 yuoni poɔ a da yi neŋ gama mine ba naŋ boɔla Bachelor degree in pharmacy a 1979 yuoni poɔ. O da leɛ gaa la nimitɔɔre a lɛ te gaa [[begɛ Sakuuri]] ŋa ba naŋ boɔla Ghana School Of Law a 2001 yuoni poɔ a da nyɛ kpeɛŋu a leɛ [[bege-ŋmaara]] a 2006 yuoni poɔ.<ref name=":0" /> == Pͻletese ane Tonsonne Toma == O paale la a Kataweԑ Naa poͻ. Yieleh Chireh da e la a Dakogizusoba ko a Procurement Taskforce a PNDC Gͻbenԑnte deme naŋ da maale a 1991 yuoni poͻ. O naŋ da e Dakogizusoba o da soŋԑԑ kyԑ de weԑŋ ka ba peԑre yelba-erre mine kyaare a procurement Ministries, Departments ane Agencies (MDAs)lamboe mineŋ ba naŋ baŋe kyaare Laafēēloŋ Ministry, a Volta River Authority, Electricity Corporation of Ghana ane a Post & Telecommunications Corporation kore na meŋ.<ref name=":2">https://web.archive.org/web/20210110041159/https://www.fbnbankghana.com/about-us/the-leadership/board-of-directors/joseph-yieleh-chireh/</ref> O da toŋ la vo-yaga poͻ a yi Irigyinale minista, Ambassador, begemaale neԑ a yi gaa Local Gͻbenԑnte ane Korre baabo Minista a la maaleŋ e Laafēēloŋ Minista. === Irgyinale Minista - Amabassador === Chireh da kpԑ a [[Kataweԑ Naa poͻ]] saŋa na ba naŋ da piili maale o a 1992 yuoni poͻ ka ba de Naaŋ pͻletese yԑlԑ a Ghana paaloŋ poͻ. [[Jerry Rawlings]] da iri o la ka o e a [[Upper West Irigyinale]] Minista a o [[gͻbenԑnte]] a 1993 yuoni poͻ. O da toŋ la a vuo ŋa poͻ a yi 1993 a te ta a 1997 yuoni poͻ. Ba da la maale o la ka o e [[Ambassador Extraordinary ane Plenipotentiary]] a ko [[Algeria]] kyԑ la taa toma ane [[Tunisia]] paaloŋ meŋ, a [[Sahrawi Arab Democratic Republic]] ane [[Mauritania]] a yi a yuomo 1997 ane 2001 sogaŋ.<ref name=":0" /> O da e la a begemaale neԑ a ko  a begemaale deri Anaare, Anuu, Ayoͻbo ane Ayopoi soba a yi yuompaalaa kyuu 2005 a te ta yuompaalaa kyuu 2021. === Begemaale Neԑ === ==== 2004 nu-neԑ ==== O da ŋmԑ la kpamkpire ba naŋ da wa ŋmaa a Wa West gbandige paalaa na begemaale kogi eŋԑ a Ghana deme begemaaleba nu-neԑ a borenyԑ kyuu 2004 poͻ, a da di beŋ ka lԑ da taa o kpԑ ne a [[begemaale die Anaare ko a Republic of Ghana Anaare soba]] poͻ.<ref>http://library.fes.de/pdf-files/bueros/ghana/03610.pdf</ref> Ba da iri la Chireh ka o e a begemaale neԑ ko a Wa west gbandige a [[2004 yuoni Ghana deme zaa nu-neԑ]] poͻ.<ref name=":3">https://web.archive.org/web/20231006183443/https://ghanaelections.peacefmonline.com/pages/2004/upperwest/186/index.php</ref><ref name=":4">https://library.fes.de/pdf-files/bueros/ghana/03610.pdf</ref> O paa da are ko la a o gbandige a begemaale die Anaare soba ko a Republic of Ghana Anaare soba poͻ. O da die la ane noba 13,256 a yi neŋ noba 19,980 a noba zaa naŋ neԑ nuuri soŋ poͻ. A ŋaa da te manne la 66.3% a noba zaa naŋ neԑ nuuri soŋ poͻ. O da die la kyԑ ka o dataare Vaari Matthew Saa-hi ko [[People's National Convention]] ane Edward Yirimambo ko a [[Wͻͻ Naa]] le teŋԑ. Ba da nyԑ la noba 653 ane noba 6,071 naŋ tutaa a lԑ ne o zu a noba zaa naŋ wa neԑ nuuri soŋ baare poͻ. A ŋaa te manne ne la 3.3% ane 30.4% naŋ tutaa a lԑ ne o zu a noba zaa naŋ wa neԑ nuuri soŋ baare poͻ. Ba da iri la Chireh a [[Kataweԑ Naa]] yuori eŋԑ.<ref name=":3" /><ref name=":4" /> A nu-neԑ na poͻ, a Kataweԑ Naa da di la kogi-yaga 94 begemaale kogiri a yi ne 230 begemaale kogiri poͻ a begemaale die Anaare soba ko a republic of Ghana Anaare soba poͻ.<ref>https://www.fact-checkghana.com/statistics-presidential-parliamentary-election-results/</ref> === 2008,2012 nu-neԑ === O da la de la o kogi a 2008 poͻ<ref name=":5">http://www.ghanaweb.com/GhanaHomePage/election2008/parliament.constituency.php?ID=280</ref> o naŋ da wa di ane noba 10,468 naŋ te manne ne 50% kyԑ ka o kpamkpir-ŋmeԑrebԑ naŋ da peԑle o Dari Daniel Kuusongno a ko a Wͻͻ Naa, Edward B. Yirimanbo, naŋ da are oyoŋ a ba paale Naa kaŋa zaa poͻ ba da nyԑ la noba 4,455 naŋ te manne ne 21.3% ane noba 5,541 naŋ te manne ne 26.5% naŋ tutaa a lԑ ne o zu.<ref name=":5" /> A begemaale die Anuu soba poͻ, o da toŋ la a Foreign Affairs kͻmtii, Toma nyaabo, Social Welfare ane State Enterprises kͻmatii poͻ.<ref name=":6">https://web.archive.org/web/20110716172024/http://www.parliament.gh/hon_chireh_joseph_yieleh.html</ref> Chireh da la maaeŋ di la o kogi a 2012 <ref>https://web.archive.org/web/20160413203042/http://ghanaelections.peacefmonline.com/pages/2012/constituency/186/</ref> begemaaleba nu-neԑ poͻ o naŋ da wa nyԑ noba 16,368 naŋ te manne ne 57.71% kyԑ ka o kpamkpir-ŋm tͻ ko a Wͻͻ Naa Adams Nuhu Timbile da nyԑ noba 9,918 naŋ te manne ne 34.97%<ref>https://web.archive.org/web/20230206111502/https://ghanaelections.peacefmonline.com/pages/2012/upperwest/wa_west/</ref> === 2016 nu-neԑ === Chireh da la maaleŋ di la a nu-neԑ a are ko a Wa West gbandige a gbԑԑ bonaare soba a begemaale die A yopoi soba poͻ. O da tage la noba 12,658, 42.49% kyԑ ka o dataare bayi Patrick Bandanaa, naŋ da are o yoŋ a ba paale Naa kaŋa zaa poͻ ane Dari Daniel Kuusongno ko a Wͻͻ Naa naŋ saa a 2008 da nyԑԑ noba 8,806, 29.56% ane 7,415%, 24.89% naŋ tutaa a lԑ ne o zu.<ref>https://web.archive.org/web/20231007065850/https://ghanaelections.peacefmonline.com/pages/2016/parliament/upperwest/wa_west/</ref> A begemaale die Ayopoi soba ko a republic of Ghana Anaare soba poͻ, o da toŋ la a Subsidiary Legislation Kͻmatii, Local Gͻbenԑnte ne Korre Baabo Kͻmatii ane Noba iribu Kͻmatii poͻ.<ref name=":1" /> O naŋ da la maale o teԑroŋ ka o la maaleŋ gaa a na poͻ a begemaale die Anii poͻ la ka IGP kore gansԑgerԑ [[Peter Lanchene Toobu]] da daa o lͻͻ a yi ne o naŋ da nyԑ noba 755 kyԑ ka Chireh da nyԑ noba 317 a Kataweԑ Naa meŋԑ kpamkpire ŋmeԑbo poͻ.<ref>https://www.gbcghanaonline.com/news/politics/ex-igp-executive-secretary-beats-yieleh-chireh-in-wa-west/2019/</ref> === Minista ko a paaloŋ === A Gonzeԑ kyuu 2009 poͻ, a [[Ghana Yidaandͻͻ]] paalaa, J[[ohn Atta Mills]] da iri o la ka o e Minista ko Local Gͻbenԑnte ne Korre Baabo.<ref>http://www.ghanaweb.com/GhanaHomePage/NewsArchive/artikel.php?ID=157698</ref> O da toŋԑԑ la a e neԑ naŋ paale John Atta Mills kabinet ministare poͻ.<ref>https://www.myjoyonline.com/president-mills-holds-first-cabinet-meeting/</ref> O da toŋԑԑ la lԑŋ a te tͻ Borenyԑ kyuu beri anaare 2011 poͻ, saŋa na ba naŋ da wa iri o ka o leԑ Minista a ko Laafēēloŋ, Ghana Yidaandͻͻ John Evans Atta Mills naŋ da wa leԑrԑ o kabente ministare.<ref>http://www.ghanaweb.com/GhanaHomePage/NewsArchive/artikel.php?ID=200624</ref> == Toma kpaaroŋ == O yuori kpԑ la Pharmacist ganeŋ a Ghana Pharmacy Council poͻ, o e la neԑ naŋ paale a pharmacy laŋgbuli deme kpaaroŋ a Ghana paaloŋ poͻ ane neԑ naŋ paale a West Africa post graduate college of pharmacist.<ref name=":1" /> O naŋ la e Lͻͻya a ko a kyԑ paale a Ghana Bar Association.<ref>https://web.archive.org/web/20240928151034/https://ghanamps.com/mps/details.php/?id=5409</ref><ref name=":2" /> == Dakogizusoba ko FBNBank Ghana == Chireh da e la lammo Dakogizusoba<ref name=":2" /> ko a FBNBank Ghana, a subsidiary of [[First Bank of Nigeria]] Limited yuomo ayi vuoŋ, yuomo ayoͻbo poͻ o da toŋԑԑ gbԑԑ boyi a yi 2014 a te tͻ 2020 yuoni poͻ.<ref>https://www.fbnbankghana.com/fbnbank-ghana-announces-retirement-of-board-chairman/</ref><ref>https://www.graphic.com.gh/business/business-news/fbnbank-ghana-announces-retirement-of-board-chairman.html</ref> == Meŋԑ == Chireh e la Kristabie a de pͻge ka bat aa biiri banaare.<ref>https://web.archive.org/web/20121009071049/http://www.ghanadistricts.com/mps/?r=9&_=115&mpd=187</ref><ref name=":6" /> == Leԑ kaa kyԑ == Rawlings gͻbenԑnte Mills gͻbenԑnte ministare yoe Wa West gbandige == Sommo Yizie == [[Category:8th Parliament of the 4th Republic of Ghana]] [[Category:Dagaare]] [[Category:Gampɛlɛ zaa]] [[Category:Dɔɔ]] [[Category:Dɔɔloŋ]] [[Category:Africa]] [[Category:Ghana]] [[Category:West Africa]] [[Category:7th Parliament of the 4th Republic of Ghana]] bdvu29q0h6gwcav8phago8vezpb4tw3 Festivity of Saint Blaise, the patron of Dubrovnik 0 1734 62607 54323 2026-07-16T01:31:08Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62607 wikitext text/x-wiki {{Databox|item=Q12630967}} '''Festivity of Saint Blaise, the patron of Dubrovnik''' (Croatian: Festa Svetog Vlaha, zaštitnika Dubrovnika) e la tigiri ba naŋ maŋ di a kyuu Fɛrboɔre 3 zaa a te piili a yuoni 972 AD wa tɔ ŋaaŋ a yi-velaa ŋa ba naŋ boɔla ka [[Dubrovnik]], Croatia a [[Saint Blaise]] bebiri tigiri diibo saŋa. A [[Tigre|tigiri]] ŋa diibo te kyaarɛɛ a gaŋdaa ŋa ba naŋ boɔla St. Blaise, o naŋ da soŋ a Dubrovnik noba a ku ba yiri a yi a Republic of Venice eŋaŋ. Noba yaga da wa la a [[Tigre|tigiri]] zie, a yi naba meŋ zaa da be la be, ziiri mine deme naŋ da peɛleba meŋ da be waɛɛ a tigir, a Croatia deme kyɛlɛɛ meŋ, aneŋ dɔgre paale zaane naŋ da peɛle meŋ da wa la a tigiri, yɔyɔɔreba mine, aneŋ nentegrɛ a yi teŋkponni aneŋ yie nembɛrɛ mine meŋ a yi a [[Roman Catholic Church]].<ref>https://web.archive.org/web/20160304143516/http://tzdubrovnik.hr/lang/en/get/sto_raditi/53036/festa_svetog_vlaha_dan_grada_dubrovnika.html</ref> Ba da nyɛ la o ka o waa UNESCO [[Intangible Cultural Heritage]] a yuoni 2009.<ref>http://www.unesco.org/culture/ich/en/RL/festivity-of-saint-blaise-the-patron-of-dubrovnik-00232</ref><ref>https://registar.kulturnadobra.hr/#/details/Z-3236</ref> == Gaŋdaaloŋ == == Wuloo == [[Duoro kɔre:St._Blaise_-_National_Flag_of_the_Ragusan_Republic.png|thumb|200x200px|Flag of Dubrovnik Republic with Saint Blaise holding City model]] [[Duoro kɔre:FESTA_SV._VLAHA_2014.JPG|thumb|200x200px|Procession held on 3 February 2014]] == Sommo yizie == [[Gbuli:Winter events in Croatia]] [[Gbuli:Tourist attractions in Dubrovnik]] [[Gbuli:History of Dalmatia]] [[Gbuli:Masterpieces of the Oral and Intangible Heritage of H]] [[Gbuli:Culture of Croatia]] [[Gbuli:Annual events in Croatia]] [[Gbuli:Dagaare]] [[Gbuli:Wiki World Heritage Intangible Contest 2023]] bve4h5wleu8c9wcejb9gqt6ktmp752s List of colleges of education in Nigeria 0 3006 62613 55156 2026-07-16T04:25:50Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62613 wikitext text/x-wiki {{Databox|item=Q20715835}} A waa la 205 zannoo kologyiri aneŋ NCE Certificate-Awarding institutions mine naŋ be Nigeria paaloŋ poɔ, ka boma 27 <ref name="auto">"[https://web.archive.org/web/20210602213105/http://www.ncceonline.edu.ng/colleges.php NCCE Abuja]". ''www.ncceonline.edu.ng''. Retrieved 4 September 2021</ref> waa federal, 82 waa sommeŋa sakue kyɛ ka 54 meŋ waa gɔmenante kologyiri.<ref>NCCE, 2013</ref><ref>[http://pointblanknews.com/pbn/exclusive/nigerian-president-appoints-chairmen-for-67-parastatalsagencies/ “Nigerian President Appoints Chairmen For 67 Parastatals/Agencies"]. ''Pointblank News''. 23 April 2013. Retrieved 9 December 2014.</ref> == Federal kologyiri == Federal Kolegyiri naŋ taaa gyeremɛ a Nigeria paaloŋ yoe la ama {| class="wikitable sortable" border="1" style="width:100%; margin:auto; text-align:left" |- !Institution !Location !Type !Host state !Year of establishment !width="25%"|Notes |--valign="top" | [[Federal College of Education (Special), Oyo]]<ref>[https://web.archive.org/web/20141210135943/http://www.thenationonlineng.net/archive2/tblnews_Detail.php?id=50994 "Details – The Nation Archive"]. ''thenationonlineng.net''. Archived from [http://www.thenationonlineng.net/archive2/tblnews_Detail.php?id=50994 the original] on 10 December 2014. Retrieved 9 December 2014.</ref> | [[Oyo, Nigeria|Oyo]] | Federal | [[Oyo State]] | 1977 | |--valign="top" | [[Adeyemi College of Education]] | [[Ondo City|Ondo]] | Federal | [[Ondo State]] | 1964 |--valign="top" | [[Federal College of Education, Iwo]]<ref name="auto"/> | [[Iwo, Osun|Iwo]] | Federal | [[Osun State]] | 2020 | |--valign="top" | [[Federal College of Education (Technical), Asaba]]<ref>[http://www.vanguardngr.com/2010/03/asaba-college-to-commence-noun-programme/ Asaba College to commence NOUN programme]". ''Vanguard News''. 29 March 2010. Retrieved 9 December 2014.</ref> | [[Asaba, Nigeria|Asaba]] | Federal | [[Delta State]] | 1987 | |--valign="top" | [[Federal College of Education, Abeokuta]] | [[Abeokuta|Osiele-Abeokuta]]<ref>https://web.archive.org/web/20141211060940/http://www.punchng.com/news/council-flays-posting-of-corps-members-as-teachers/</ref> | Federal | [[Ogun State]] | 1976 | |--valign="top" | [[Federal College of Education, Kano]]<ref>http://saharareporters.com/2014/09/17/bomb-explosion-kills-10-federal-college-education-kano</ref><ref>http://www.aljazeera.com/news/africa/2014/09/deaths-attack-nigeria-teachers-college-2014917194449334646.html</ref> | Kano City | Federal | [[Kano State]] | 1961 | |--valign="top" | [[Federal College of Education, Eha-Amufu]]<ref>http://m.thenigerianvoice.com/news/89446/1/the-pitiable-state-of-federal-college-of-education.html</ref><ref>http://www.vanguardngr.com/2011/02/the-rot-continues-at-fce-eha-amufu/</ref> | Eha-Amufu |Federal |[[Enugu State]] |1981 | |--valign="top" | [[Federal College of Education, Okene]]<ref>https://web.archive.org/web/20121112170114/http://www.kogireports.com/tag/federal-college-of-education-okene</ref> | [[Okene]] | Federal | [[Kogi State]] | 1974 | |--valign="top" | [[Federal College of Education (Technical), Gombe]]<ref>http://www.vanguardngr.com/2012/06/soldier-kills-one-student-over-girlfriend-in-gombe/</ref> | [[Gombe, Nigeria|Gombe]] | Federal | [[Gombe State]] | 1977 | |--valign="top" | [[Federal College of Education (Technical), Omoku]]<ref>https://web.archive.org/web/20241229231335/https://www.thetidenewsonline.com/2009/11/28/fce-omoku-to-affiliate-with-unn/</ref><ref>https://web.archive.org/web/20150924091431/http://www.riversstate.gov.ng/item/777-fce-omoku-publishes-list-of-candidates-for-admission.html</ref> | [[Omoku]] | Federal | [[Rivers State]] | 1989 | |--valign="top" | [[Federal College of Education, Kontagora]]<ref>https://web.archive.org/web/20141115013454/http://www.thisdaylive.com/articles/explosion-rocks-federal-college-of-education-kontagora/193847</ref><ref>http://saharareporters.com/2014/11/12/female-suicide-bomber-hits-federal-college-education-niger-state</ref> | [[Kontagora]] | Federal | [[Niger State]] | 1958 | |--valign="top" | [[Federal College of Education, Zaria]]<ref>http://allafrica.com/stories/201402100381.html</ref> | [[Zaria]] | Federal | [[Kaduna State]] | 1962 | |--valign="top" | [[Federal College of Education, Pankshin]]<ref>http://www.premiumtimesng.com/news/156275-students-nigerias-colleges-education-lament-lecturers-strike.html</ref> | [[Pankshin]] | Federal | [[Plateau State]] | 1974 | |--valign="top" | [[Alvan Ikoku Federal College of Education]]<ref>https://web.archive.org/web/20160304002545/http://nannewsnigeria.com/provost-wants-alvan-ikoku-college-education-upgraded-university</ref> | [[Owerri]] | Federal | [[Imo State]] | 1963 | |--valign="top" | [[Federal College of Education, Yola]]<ref>https://web.archive.org/web/20160303230142/http://www.dailytrust.com.ng/daily/education/32899-fce-yola-goes-for-degree-programmes</ref> | [[Yola, Nigeria|Yola]] | Federal | [[Adamawa State]] | 1974 | |--valign="top" | [[Federal College of Education (Technical), Potiskum]]<ref>http://www.nigerianmuse.com/20130712021508zg/nm-projects/higher-education-in-nigeria/top-10-most-preferred-universities-polytechnic-and-college-of-education-in-nigeria/</ref> | [[Potiskum]] | Federal | [[Yobe State]] |1976 | |--valign="top" | [[Federal College of Education (Technical), Gusau]]<ref>http://www.vanguardngr.com/2014/10/provost-gets-5-years-jail-dta/</ref> | [[Gusau]] | Federal | [[Zamfara State]] | 1990 | |--valign="top" | [[Federal College of Education (Technical), Akoka]]<ref>https://web.archive.org/web/20141211060937/http://www.punchng.com/news/college-of-education-lecturers-vow-to-continue-month-long-strike/</ref><ref>http://www.premiumtimesng.com/news/155760-lecturers-in-nigerias-colleges-of-education-vow-to-continue-strike-as-meeting-with-fg-deadlocks.html</ref> | [[Akoka]] | Federa | [[Lagos State]] | 1967 | |--valign="top" | [[Federal College of Education, Katsina]]<ref>https://web.archive.org/web/20141127210415/http://leadership.ng/news/391697/fg-may-review-jamb-admission-policy</ref> | [[Katsina]] | Federal | [[Katsina State]] | 1976 | |--valign="top" | [[Federal College of Education (Technical), Bichi]]<ref>http://www.premiumtimesng.com/news/130885-nigerian-president-appoints-chairmen-for-67-parastatalsagencies.html</ref> | [[Bichi]] | Federal | [[Kano State]] | 1987 | |--valign="top" | [[Federal College of Education, Obudu]].<ref>https://www.vanguardngr.com/2013/07/obudu-cult-killings-kkk-leader-arrested/</ref><ref>http://www.vanguardngr.com/2011/09/fce-obudu-gets-provost/</ref> | [[Obudu]] | Federal | [[Cross River State]] | 1983 |--valign="top" | [[Federal College of Education (Technical), Umunze]]<ref>https://web.archive.org/web/20141214141047/http://sunnewsonline.com/new/?p=24710</ref> | [[Umunze]] | Federal | [[Anambra State]] | 1989 | |} ==Sommeŋa Kolegyiri== Sommeŋa Kolegyiri mine naŋ be Nigeria paaloŋ yoe la ama {| class="wikitable sortable" border="1" style="width:100%; margin:auto; text-align:left" |- !Institution !Location !Type !Host state !Year of establishment !width="25%"|Notes |--valign="top" | [[Piaget College of Education]].<ref>https://www.piagetcoe.edu.ng/</ref> | [[Abeokuta]] | Private | [[Ogun State]] | 2015 | |--valign="top" | [[St. Augustine College of Education]]<ref>http://www.informationng.com/2012/10/in-st-augustines-college-of-education-akoka-the-cloud-is-gathering-again.html</ref> | [[Akoka]] | Private | [[Lagos State]] | 1971 | |--valign="top" | [[Our Saviour Institute of Science and Technology]] | [[Enugu]] | Private | [[Enugu State]] | 1989 | |--valign="top" | [[Delar College of Education]]<ref>http://allafrica.com/stories/200407280105.html</ref> | [[Ibadan]] | Private | [[Oyo State]] | 1990 | |--valign="top" | [[Yewa Central College of Education]]<ref>https://web.archive.org/web/20160306014716/https://thedegree.org/2009/06/22/appointment-of-new-professors-at-eau/</ref> | Ayetoro | Private | [[Ogun State]] |2004 | |--valign="top" | [[Institute of Ecumenical Education, (Thinkers Corner), Enugu]]<ref>https://books.google.com/books?id=04VwpwD7R_AC&pg=PA270</ref> | [[Enugu]] | Private | [[Enugu State]] | 190 | |--valign="top" | [[Ansar-Ud-Deen College of Education]] | [[Isolo]]<ref>http://www.orijoreporter.com/fanimokun-calls-for-enrollment-of-more-christian-students-into-ansar-ud-deen-college-of-education/</ref><ref>https://web.archive.org/web/20141213213349/http://www.iconweekly.com/ansar-ud-deen-college-of-education-celebrates-10th-anniversary-in-grand-style/</ref> | Private | [[Lagos State]] | 1953 | |--valign="top" | [[African Thinkers Community of Inquiry College of Education]].<ref>https://www.vanguardngr.com/2014/11/enugu-2015-election-nomination-scandal-top-govt-party-officials-swindled-aspirant-ani/</ref> | [[Enugu]] | Private | [[Enugu State]] | 1990 | |--valign="top" | [[City College of Education, Mararaba]]<ref>https://web.archive.org/web/20140110140258/http://allafrica.com/stories/200803190227.html</ref> | Mararaba Gurku | Private | [[Nasarawa State]] | | |--valign="top" | [[Muftau Olanihun College of Education]]<ref>https://web.archive.org/web/20141216113355/http://www.mynewswatchtimesng.com/man-bags-3-year-jail-forging-ibadan-poly-certificate/</ref> | [[Ibadan]] | Private | [[Oyo State]] | 2003 | |--valign="top" | [[Havard Wilson College of Education]]<ref>https://web.archive.org/web/20141211060944/http://www.punchng.com/metro/septuagenarian-13-others-win-suvs-in-mtns-raffle/</ref> | [[Aba, Abia|Aba]] | Private | [[Abia State]] | 2001 | |--valign="top" | [[College of Education Offa]].<ref>https://www.academia.edu/120076169/Dr_Razaq_Oyewale_The_Man_Who_Made_Money_While_Making_a</ref> | [[Offa]] | Private | [[Kwara State]] | 1987 | |--valign="top" | [[Nigerian Army School of Education (NASE), Ilorin]]<ref>http://thenationonlineng.net/new/nigerian-army-school-may-offer-degrees-2/</ref> | [[Ilorin]] | Federal | [[Kwara State]] | 1970 | |--valign="top" | [[Nana Aishat Memorial College of Education]].<ref>https://web.archive.org/web/20201110174018/http://namcoed.edu.ng/</ref> | [[Ilorin]] | Private | [[Kwara State]] | 2009 | |- |} ==Gɔmenante kolegyiri yoe== * [[Abia State College of Education (Technical)]] * [[Adamawa State College of Education]] * [[Adamu Augie College of Education]] * [[Adamu Tafawa Balewa College of Education]] * [[Adeniran Ogunsanya College of Education]] * [[Akwa Ibom State College of Education]] * [[Aminu Saleh College of Education]] * [[Bilyaminu Othman College of Education]] * [[College of Education and Legal Studies, Nguru]] * [[College Of Education, Akamkpa]] * [[College of Education, Akwanga]] * [[College of Education, Billiri]] * [[College of Education, Ekiadolor]] * [[College of Education, Gindiri]] * [[College of Education, Katsina-Ala]] * [[College Of Education, Lanlate]] * [[College of Education, Oju]] * [[College of Education, Waka-Biu]] * [[College of Education, Warri]]<ref>[https://coewarri.edu.ng/ "College of Education, Warri – College of Education, Warri".]</ref> * [[Ebonyi State College of Education]] * [[Edo State College of Education]] * [[Enugu State College of Education (Technical)]] * [[FCT College of Education]] * [[Imo State College of Education]] * [[Isa Kaita College of Education]] * [[Isaac Jasper Boro College of Education]] * [[Jigawa State College of Education]] * [[Jigawa State College of Education and Legal Studies]] * [[Kano State College of Education and Preliminary Studies]]<ref>[https://web.archive.org/web/20221126153052/http://kasceps.edu.ng/ KANO STATE COLLEGE OF EDUCATION AND PRELIMINARY STUDIES]". ''www.kasceps.edu.ng''.</ref> * [[Kaduna State College of Education]] * [[Kashim Ibrahim College of Education]] * [[Kogi State College of Education, Ankpa]] * [[Kogi State College of Education (Technical), Kabba]]<ref>“[http://www.kscoetechkabba.edu.ng/ Home]". ''kscoetechkabba.edu.ng''.</ref> * [[Kwara State College of Education, Ilorin]]<ref>[https://www.kwcoeilorin.edu.ng/ Kwara State College of Education, Ilorin]". ''www.kwcoeilorin.edu.ng''.</ref> * [[Kwara State College of Education (Technical), Lafiagi]]<ref>https://www.kwcoeilorin.edu.ng/</ref> * [[Kwara State College of Education, Oro]]<ref>https://kwacoetl.edu.ng/</ref> * [[Michael Otedola College of Primary Education]]<ref>https://mocped.edu.ng/</ref> * [[Mohammed Goni College of Legal and Islamic Studies]] * [[Moje College Of Education]] * [[Niger State College of Education]] * [[Nwafor Orizu College of Education]] * [[Osun State College of Education, Ilesa]] * [[Sa'adatu Rimi College of Education]] * [[Shehu Shagari College of Education]] * [[Sikiru Adetona College of Education Science and Technology]], Omu-Ajose, Ogun State * [[Umar Ibn Ibrahim El Kanemi College of Science and Technology]] * [[Umar Suleiman College of Education]] * [[Yusuf Bala Usman College of Legal and General Studies]]<ref>https://web.archive.org/web/20241229000605/http://www.ybuc.edu.ng/</ref> * [[Zamfara State College Of Education]] ==Leɛ kaa kyɛ meŋ== *[[List of polytechnics in Nigeria]] ==Sommo Yizie == [[Category:dga]] [[Category:Lists of universities and colleges in Nigeria|*Education]] [[Category:Teachers colleges by country|Nigeria]] {{Authority control}} 9j1w8xhcl8d11w23qgxq509m2c0js5b Module:Params 828 4820 62615 62364 2026-07-16T06:49:31Z Grufo 1773 Update from [[d:Special:GoToLinkedPage/mediawikiwiki/Q122696746|master]] using [[mw:Synchronizer| #Synchronizer]] 62615 Scribunto text/plain require[[strict]] --- --- --- PRIVATE ENVIRONMENT --- --- ________________________________ --- --- --- --[[ Abstract utilities ]]-- ---------------------------- -- Helper function for `string.gsub()` (for managing zero-padded numbers) local function zero_padded (str) return ('%03d%s'):format(#str, str) end -- Helper function for `table.sort()` (for natural sorting) local function natural_sort (var1, var2) return var1:gsub('%d+', zero_padded) < var2:gsub('%d+', zero_padded) end -- Return a copy or a reference to a table local function copy_or_ref_table (src, refonly) if refonly then return src end local newtab = {} for key, val in pairs(src) do newtab[key] = val end return newtab end -- Copy at most N items (of all kinds) from `src` to `dest` and return `dest` local function copy_table_maxn (dest, src, len) local idx = 1 for key, val in pairs(src) do dest[key], idx = val, idx + 1 if idx > len then break end end return dest end -- Remove some numeric elements from a table, shifting everything to the left local function remove_numeric_keys (tbl, idx, len) local cache, tmp = {}, idx + len - 1 for key, val in pairs(tbl) do if type(key) == 'number' and key >= idx then if key > tmp then cache[key - len] = val end tbl[key] = nil end end for key, val in pairs(cache) do tbl[key] = val end end -- Make a reduced copy of a table (shifting in both directions if necessary) local function copy_table_reduced (tbl, idx, len) local ret, tmp = {}, idx + len - 1 if idx > 0 then for key, val in pairs(tbl) do if type(key) ~= 'number' or key < idx then ret[key] = val elseif key > tmp then ret[key - len] = val end end elseif tmp > 0 then local nshift = 1 - idx for key, val in pairs(tbl) do if type(key) ~= 'number' then ret[key] = val elseif key > tmp then ret[key - tmp] = val elseif key < idx then ret[key + nshift] = val end end else for key, val in pairs(tbl) do if type(key) ~= 'number' or key > tmp then ret[key] = val elseif key < idx then ret[key + len] = val end end end return ret end -- Make an expanded copy of a table (shifting in both directions if necessary) local function copy_table_expanded (tbl, idx, len) local ret, tmp = {}, idx + len - 1 if idx > 0 then for key, val in pairs(tbl) do if type(key) ~= 'number' or key < idx then ret[key] = val else ret[key + len] = val end end elseif tmp > 0 then local nshift = idx - 1 for key, val in pairs(tbl) do if type(key) ~= 'number' then ret[key] = val elseif key > 0 then ret[key + tmp] = val elseif key < 1 then ret[key + nshift] = val end end else for key, val in pairs(tbl) do if type(key) ~= 'number' or key > tmp then ret[key] = val else ret[key - len] = val end end end return ret end -- Given a table, create two new tables containing the sorted list of keys local function get_key_list_sorted (tbl, sort_fn) local nums, words, nn, nw = {}, {}, 0, 0 for key, val in pairs(tbl) do if type(key) == 'number' then nn = nn + 1 nums[nn] = key else nw = nw + 1 words[nw] = key end end table.sort(nums) table.sort(words, sort_fn) return nums, words, nn, nw end -- Parse a parameter name string and return it as a string or a number local function get_parameter_name (par_str) local ret = par_str:match'^%s*(.-)%s*$' if ret ~= '0' and ret:find'^%-?[1-9]%d*$' == nil then return ret end return tonumber(ret) end -- Move a key from a table to another, but only if under a different name and -- always parsing numeric strings as numbers local function steal_if_renamed (val, src, skey, dest, dkey) local realkey = get_parameter_name(dkey) if skey ~= realkey then dest[realkey], src[skey] = val, nil end end --[[ Public strings ]]-- ------------------------ -- Special match keywords (functions and modifiers MUST avoid these names) local mkeywords = { ['or'] = 0, pattern = 1, plain = 2, strict = 3 } -- Sort functions (functions and modifiers MUST avoid these names) local sortfunctions = { alphabetically = false, naturally = natural_sort } -- Callback styles for the `mapping_*` and `renaming_*` class of modifiers -- (functions and modifiers MUST avoid these names) --[[ Meanings of the columns: col[1] = Loop type (0-3) col[2] = Number of module arguments that the style requires (1-3) col[3] = Minimum number of sequential parameters passed to the callback col[4] = Name of the callback parameter where to place each parameter name col[5] = Name of the callback parameter where to place each parameter value col[6] = Argument in the modifier's invocation that will override `col[4]` col[7] = Argument in the modifier's invocation that will override `col[5]` A value of `-1` indicates that no meaningful value is stored (i.e. `nil`) ]]-- local mapping_styles = { names_and_values = { 3, 2, 2, 1, 2, -1, -1 }, values_and_names = { 3, 2, 2, 2, 1, -1, -1 }, values_only = { 1, 2, 1, -1, 1, -1, -1 }, names_only = { 2, 2, 1, 1, -1, -1, -1 }, names_and_values_as = { 3, 4, 0, -1, -1, 2, 3 }, names_only_as = { 2, 3, 0, -1, -1, 2, -1 }, values_only_as = { 1, 3, 0, -1, -1, -1, 2 }, blindly = { 0, 2, 0, -1, -1, -1, -1 } } -- Memory slots (functions and modifiers MUST avoid these names) local memoryslots = { h = 'header', f = 'footer', i = 'itersep', l = 'lastsep', n = 'ifngiven', p = 'pairsep', s = 'oxfordsep' } -- Possible trimming modes for the `parsing` modifier local trim_parse_opts = { trim_none = { false, false }, trim_positional = { false, true }, trim_named = { true, false }, trim_all = { true, true } } -- Possible string modes for the iteration separator in the `parsing` and -- `reinterpreting` modifiers local isep_parse_opts = { splitter_pattern = false, splitter_string = true } -- Possible string modes for the key-value separator in the `parsing` and -- `reinterpreting` modifiers local psep_parse_opts = { setter_pattern = false, setter_string = true } -- Possible position references for the `splicing` modifier local position_references = { add_nothing = 0, add_smallest_number = 1, add_last_of_sequence = 2, add_largest_number = 3 } -- Possible modes for the `reassigning` modifier local a_modes = { duplicate = 0, transfer = 1, provide = 2, spare = 3, sacrifice = 4 } -- Functions and modifiers MUST avoid these names too: `here`, `in_substack`, -- `let`, `expose`, `use`, `with_flushed_glue`, `without_flushed_glue` -- `without_sorting` --[[ Private constants ]]-- --------------------------- -- Hard-coded name of the module (to avoid going through `frame:getTitle()`) local modulename = 'Module:Params' -- The functions listed here declare that they don't need the `frame.args` -- metatable to be copied into a regular table; if they are modifiers they also -- guarantee that they will make their own (modified) copy available local refpipe = { call_for_each_group = true, --coins = true, count = true, evaluating = true, for_each = true, list = true, list_values = true, list_maybe_with_names = true, value_of = true } -- The functions listed here declare that they don't need the -- `frame:getParent().args` metatable to be copied into a regular table; if -- they are modifiers they also guarantee that they will make their own -- (modified) copy available local refparams = { call_for_each_group = true, combining = true, combining_by_calling = true, combining_values = true, concat_and_call = true, concat_and_invoke = true, concat_and_magic = true, count = true, grouping_by_calling = true, mixing_names_and_values = true, keeping_at_most = true, renaming_by_mixing = true, renaming_to_sequence = true, renaming_to_uppercase = true, renaming_to_lowercase = true, --renaming_to_values = true, shifting = true, splicing = true, --swapping_names_and_values = true, value_of = true, with_name_matching = true } -- Maximum number of numeric parameters that can be filled, if missing (we -- chose an arbitrary number for this constant; you can discuss about its -- optimal value at Module talk:Params) local maxfill = 1024 -- The private table of functions local library = {} -- Functions and modifiers that can only be invoked in first position local static_iface = {} --[[ Private functions ]]-- --------------------------- -- Create a new context local function context_new (child_frame) local main_frame = child_frame:getParent() return { frame = main_frame, opipe = child_frame.args, oparams = main_frame.args, firstposonly = static_iface, iterfunc = pairs, sorttype = 0, n_parents = 0, n_children = 0, n_available = maxfill } end -- Move to the next action within the user-given list local function context_iterate (ctx, n_forward) local nextfn if ctx.pipe[n_forward] ~= nil then nextfn = ctx.pipe[n_forward]:match'^%s*(.*%S)' end if nextfn == nil then error(modulename .. ': You must specify a function to call', 0) end if library[nextfn] == nil then if ctx.firstposonly[nextfn] == nil then error(modulename .. ': The function ‘' .. nextfn .. '’ does not exist', 0) else error(modulename .. ': The ‘' .. nextfn .. '’ directive can only appear in first position', 0) end end remove_numeric_keys(ctx.pipe, 1, n_forward) return library[nextfn] end -- Main loop local function main_loop (ctx, start_with) local fn = start_with repeat fn = fn(ctx) until not fn if ctx.n_parents > 0 then error(modulename .. ': One or more ‘merging_substack’ directives are missing', 0) end if ctx.n_children > 0 then error(modulename .. ', For some of the snapshots either the ‘flushing’ directive is missing or a group has not been properly closed with ‘merging_substack’', 0) end end -- Load a `setting`-like directive string into the `dest` table local function set_strings_from_opts (dest, opts, start_from) local cmd if opts[start_from] == nil then return start_from - 1 end cmd = opts[start_from]:gsub('%s+', ''):gsub('/+', '/') :match'^/*(.*[^/])' if cmd == nil then return start_from end local vname, chr local amap, sep, argc = {}, string.byte('/'), start_from + 1 for idx = 1, #cmd do chr = cmd:byte(idx) if chr == sep then for key, val in ipairs(amap) do dest[val], amap[key] = opts[argc], nil end argc = argc + 1 else vname = memoryslots[string.char(chr)] if vname == nil then error(modulename .. ', ‘setting’: Unknown slot ‘' .. string.char(chr) .. '’', 0) end table.insert(amap, vname) end end for key, val in ipairs(amap) do dest[val] = opts[argc] end return argc end -- Add a new stack of parameters to `ctx.children` local function new_substack (ctx) local currsnap, newparams = ctx.n_children + 1, {} if ctx.children == nil then ctx.children = { newparams } else ctx.children[currsnap] = newparams end ctx.n_children = currsnap return newparams end -- Parse a raw argument containing a `sortfunctions` directive, or -- `'without_sorting'`, or `nil` local function load_sort_opt (raw_arg) if raw_arg == nil then return nil, 1, false end local trarg = raw_arg:match'^%s*(.-)%s*$' if trarg == 'without_sorting' then return nil, 2, false, trarg end local tmp = sortfunctions[trarg] if tmp == nil then return nil, 1, false, trarg end return tmp or nil, 2, true, trarg end -- Parse optional user arguments of type `...|[let/use]|[...]|[let/use]|[...]| -- [number of additional parameters]|[parameter 1]|[parameter 2]|[...]` local function load_child_opts (src, start_from, append_after, params) local tnamed, tmp1, tmp2 local pin, tbl, mem = start_from, {}, {} while src[pin] ~= nil and src[pin + 1] ~= nil do tmp1 = src[pin]:match'^%s*(.*%S)' if tmp1 == 'let' and src[pin + 2] ~= nil then tmp1 = get_parameter_name(src[pin + 1]) mem[tmp1], tbl[tmp1], pin = nil, src[pin + 2], pin + 3 --[[ elseif tmp1 == 'expose' then tmp1 = get_parameter_name(src[pin + 1]) tmp2 = params[tmp1] mem[tmp1], tbl[tmp1], pin = tmp2, tmp2, pin + 2 ]]-- elseif tmp1 == 'use' and src[pin + 2] ~= nil then tmp1 = get_parameter_name(src[pin + 2]) tmp2 = params[tmp1] mem[tmp1], tbl[get_parameter_name(src[pin + 1])], pin = tmp2, tmp2, pin + 3 else break end end local tnew = copy_or_ref_table(params, next(mem) == nil) for key in pairs(mem) do tnew[key] = nil end if pin ~= start_from then tnamed, tbl = tbl, {} end tmp1 = tonumber(src[pin]) if tmp1 ~= nil and math.floor(tmp1) == tmp1 then if tmp1 < 0 then tmp1 = -1 end tmp2 = append_after - pin for idx = pin + 1, pin + tmp1 do tbl[idx + tmp2] = src[idx] end pin = pin + tmp1 + 1 end if tnamed ~= nil then for key, val in pairs(tnamed) do tbl[key] = val end end return tbl, pin, tnew, mem end -- Load the optional arguments of some of the `mapping_*` and `renaming_*` -- class of modifiers local function load_callback_opts (src, n_skip, default_style, params) local style, shf local tmp = src[n_skip + 1] if tmp ~= nil then style = mapping_styles[tmp:match'^%s*(.-)%s*$'] end if style == nil then style, shf = default_style, n_skip - 1 else shf = n_skip end local n_exist, karg, varg = style[3], style[4], style[5] tmp = style[6] if tmp > -1 then karg = src[tmp + shf]:match'^%s*(.-)%s*$' if karg == '0' or karg:find'^%-?[1-9]%d*$' ~= nil then karg = tonumber(karg) n_exist = math.max(n_exist, karg) end end tmp = style[7] if tmp > -1 then varg = src[tmp + shf]:match'^%s*(.-)%s*$' if varg == '0' or varg:find'^%-?[1-9]%d*$' ~= nil then varg = tonumber(varg) n_exist = math.max(n_exist, varg) end end local dest, argc, tnew, mem = load_child_opts(src, style[2] + shf, n_exist, params) tmp = style[1] if (tmp == 3 or tmp == 2) and dest[karg] ~= nil then tmp = tmp - 2 end if (tmp == 3 or tmp == 1) and dest[varg] ~= nil then tmp = tmp - 1 end return dest, argc, tmp, karg, varg, tnew, mem end -- Parse the arguments of some of the `mapping_*` and `renaming_*` class of -- modifiers local function load_replace_args (opts, whoami) if opts[1] == nil then error(modulename .. ', ‘' .. whoami .. '’: No pattern string was given', 0) end if opts[2] == nil then error(modulename .. ', ‘' .. whoami .. '’: No replacement string was given', 0) end local ptn, repl, nmax, argc = opts[1], opts[2], tonumber(opts[3]), 3 if nmax ~= nil or (opts[3] or ''):match'^%s*$' ~= nil then argc = 4 end local flg = opts[argc] if flg ~= nil then flg = mkeywords[flg:match'^%s*(.-)%s*$'] end if flg == 0 then flg = nil elseif flg ~= nil then argc = argc + 1 end return ptn, repl, nmax, flg, argc, (nmax ~= nil and nmax < 1) or (flg == 3 and ptn == repl) end -- Parse the arguments of the `with_*_matching` class of modifiers local function load_pattern_args (opts, whoami) local keyw local ptns, state, nptns, cnt = {}, 0, 0, 1 for _, val in ipairs(opts) do if state == 0 then nptns, state = nptns + 1, -1 ptns[nptns] = { val, false, false } else keyw = val:match'^%s*(.*%S)' if keyw == nil or mkeywords[keyw] == nil or ( state > 0 and mkeywords[keyw] > 0 ) then break else state = mkeywords[keyw] if state > 1 then ptns[nptns][2] = true end if state == 3 then ptns[nptns][3] = true end end end cnt = cnt + 1 end if state == 0 then error(modulename .. ', ‘' .. whoami .. '’: No pattern was given', 0) end return ptns, nptns, cnt end -- Load the optional arguments of the `parsing`, `reinterpreting` and -- `evaluating` modifiers local function load_parse_opts (opts, start_from, isp, psp) local tmp local optslots, noptslots, argc, trimn, trimu, iplain, pplain = { true, true, true }, 3, start_from, true, false, true, true repeat noptslots, tmp = noptslots - 1, opts[argc] if tmp == nil then break end tmp = tmp:match'^%s*(.-)%s*$' if optslots[1] ~= nil and trim_parse_opts[tmp] ~= nil then tmp = trim_parse_opts[tmp] trimn, trimu, optslots[1] = tmp[1], tmp[2], nil elseif optslots[2] ~= nil and isep_parse_opts[tmp] ~= nil then argc = argc + 1 iplain, isp, optslots[2] = isep_parse_opts[tmp], opts[argc], nil elseif optslots[3] ~= nil and psep_parse_opts[tmp] ~= nil then argc = argc + 1 pplain, psp, optslots[3] = psep_parse_opts[tmp], opts[argc], nil else break end argc = argc + 1 until noptslots < 1 return isp, iplain, psp, pplain, trimn, trimu, argc end -- Map parameters' values using a custom callback and a referenced table local value_maps = { [0] = function (tbl, margs, karg, varg, fn) for key in pairs(tbl) do tbl[key] = fn() end end, [1] = function (tbl, margs, karg, varg, fn) for key, val in pairs(tbl) do margs[varg] = val tbl[key] = fn() end end, [2] = function (tbl, margs, karg, varg, fn) for key in pairs(tbl) do margs[karg] = key tbl[key] = fn() end end, [3] = function (tbl, margs, karg, varg, fn) for key, val in pairs(tbl) do margs[karg], margs[varg] = key, val tbl[key] = fn() end end } -- Private table for `map_names()` local name_thieves = { [0] = function (cache, tbl, rargs, karg, varg, fn) for key, val in pairs(tbl) do steal_if_renamed(val, tbl, key, cache, fn()) end end, [1] = function (cache, tbl, rargs, karg, varg, fn) for key, val in pairs(tbl) do rargs[varg] = val steal_if_renamed(val, tbl, key, cache, fn()) end end, [2] = function (cache, tbl, rargs, karg, varg, fn) for key, val in pairs(tbl) do rargs[karg] = key steal_if_renamed(val, tbl, key, cache, fn()) end end, [3] = function (cache, tbl, rargs, karg, varg, fn) for key, val in pairs(tbl) do rargs[karg], rargs[varg] = key, val steal_if_renamed(val, tbl, key, cache, fn()) end end } -- Map parameters' names using a custom callback and a referenced table local function map_names (tbl, rargs, karg, varg, looptype, fn) local cache = {} name_thieves[looptype](cache, tbl, rargs, karg, varg, fn) for key, val in pairs(cache) do tbl[key] = val end end -- Return a new table that contains `src` regrouped according to the numeric -- suffixes in its keys local function make_groups (src) -- NOTE: `src` might be the original metatable! local prefix, gid local groups = {} for key, val in pairs(src) do -- `key` must only be a string or a number... if type(key) == 'string' then prefix, gid = key:match'^%s*(.-)%s*(%-?%d*)%s*$' gid = tonumber(gid) or '' else prefix, gid = '', key end if groups[gid] == nil then groups[gid] = {} end if prefix == '0' or prefix:find'^%-?[1-9]%d*$' ~= nil then prefix = tonumber(prefix) if prefix < 1 then prefix = prefix - 1 end end groups[gid][prefix] = val end return groups end -- Split into parts a string containing the `$#` and `$@` placeholders and -- return the information as a skeleton table, a canvas table and a length local function parse_placeholder_string (target) local idx, s_pos, skel, canvas = 1, 1, {}, {} local e_pos = string.find(target, '%$[@#]', 1, false) while e_pos ~= nil do canvas[idx] = target:sub(s_pos, e_pos - 1) skel[idx + 1] = target:sub(e_pos, e_pos + 1) == '$@' idx = idx + 2 s_pos = e_pos + 2 e_pos = string.find(target, '%$[@#]', s_pos, false) end if (s_pos > target:len()) then idx = idx - 1 else canvas[idx] = target:sub(s_pos) end return skel, canvas, idx end -- Populate a table by parsing a parameter string (heavy lifting for `parsing`, -- `reinterpreting` and `evaluating`) local function parse_parameter_string (tbl, str, isp, ipl, psp, ppl, trn, tru) local key, val, spos1, spos2, pos1, pos2 local pos3, idx, lenplone = 0, 1, #str + 1 if isp == nil or isp == '' then if psp == nil or psp == '' then if tru then tbl[idx] = str:match'^%s*(.-)%s*$' else tbl[idx] = str end return idx end spos1, spos2 = str:find(psp, 1, ppl) if spos1 == nil then key = idx if tru then val = str:match'^%s*(.-)%s*$' else val = str end idx = idx + 1 else key = get_parameter_name(str:sub(1, spos1 - 1)) val = str:sub(spos2 + 1) if trn then val = val:match'^%s*(.-)%s*$' end end tbl[key] = val return idx end if psp == nil or psp == '' then repeat pos1 = pos3 + 1 pos2, pos3 = str:find(isp, pos1, ipl) val = str:sub(pos1, (pos2 or lenplone) - 1) if tru then val = val:match'^%s*(.-)%s*$' end tbl[idx], idx = val, idx + 1 until pos2 == nil return idx end repeat pos1 = pos3 + 1 pos2, pos3 = str:find(isp, pos1, ipl) val = str:sub(pos1, (pos2 or lenplone) - 1) spos1, spos2 = val:find(psp, 1, ppl) if spos1 == nil then key = idx if tru then val = val:match'^%s*(.-)%s*$' end idx = idx + 1 else key = get_parameter_name(val:sub(1, spos1 - 1)) val = val:sub(spos2 + 1) if trn then val = val:match'^%s*(.-)%s*$' end end tbl[key] = val until pos2 == nil return idx end -- Heavy lifting for `snapshotting` and `remembering` local function make_child (ctx, src, whoami) local len = tonumber(ctx.pipe[1]) if len == nil or len == 0 then local stack = new_substack(ctx) for key, val in pairs(src) do stack[key] = val end return len == nil and 1 or 2 end if len < 0 or math.floor(len) ~= len then error(modulename .. ', ‘' .. whoami .. '’: The number of parameters to copy must be an integer greater than zero', 0) end copy_table_maxn(new_substack(ctx), src, len) return 2 end -- Heavy lifting for `setting_by_flushing`, `combining` and `combining_values` local function set_strings_from_substack (ctx, dest, whoami) if ctx.n_children < 1 then error(modulename .. ', ‘' .. whoami .. '’: There are no substacks to flush', 0) end local currsnap = ctx.n_children local stack = ctx.children[currsnap] for key, val in pairs(memoryslots) do if stack[key] ~= nil then dest[val] = stack[key] end end ctx.children[currsnap], ctx.n_children = nil, currsnap - 1 end -- Heavy lifting for `combining` and `combining_values` local function combine_parameters (ctx, keyval_fn, whoami) -- NOTE: `ctx.params` might be the original metatable! This function -- MUST create a copy of it before returning local opts = ctx.pipe if ctx.pipe[1] == nil then error(modulename .. ', ‘' .. whoami .. '’: No parameter name was provided', 0) end local argc local tbl, vars = ctx.params, {} local sortfn, varsarg0, do_sort, tmp = load_sort_opt(opts[2]) if varsarg0 == 2 then tmp = opts[3] and opts[3]:match'^%s*(.-)%s*$' end if tmp == 'with_flushed_glue' then varsarg0 = varsarg0 + 1 argc = set_strings_from_opts(vars, opts, varsarg0 + 1) set_strings_from_substack(ctx, vars, whoami) else if tmp == 'without_flushed_glue' then varsarg0 = varsarg0 + 1 end argc = set_strings_from_opts(vars, opts, varsarg0 + 1) end if argc < varsarg0 then error(modulename .. ', ‘' .. whoami .. '’: No setting directive was given', 0) end if next(tbl) == nil then if vars.ifngiven ~= nil then ctx.params = { [get_parameter_name(ctx.pipe[1])] = vars.ifngiven } elseif tbl == ctx.oparams then ctx.params = {} end return argc end local cache, len if do_sort then local words cache, words, len, tmp = get_key_list_sorted(tbl, sortfn) for idx = 1, tmp do cache[len + idx] = words[idx] end len = len + tmp else len, cache = 0, {} for key in pairs(tbl) do len = len + 1 cache[len] = key end end local pmap, nss, kvs, pps = {}, 0, vars.pairsep or '', vars.itersep or '' for idx = 1, len do tmp, pmap[nss + 1] = cache[idx], pps pmap[nss + 2] = keyval_fn(tmp, tbl[tmp], kvs) nss = nss + 2 end tmp = vars.oxfordsep or vars.lastsep if tmp ~= nil and nss > 4 then pmap[nss - 1] = tmp elseif nss > 2 and vars.lastsep ~= nil then pmap[nss - 1] = vars.lastsep end pmap[1] = vars.header or '' if vars.footer ~= nil then pmap[nss + 1] = vars.footer end ctx.params = { [get_parameter_name(ctx.pipe[1])] = table.concat(pmap) } return argc end -- Concatenate the numeric keys from the table of parameters to the numeric -- keys from the table of options; non-numeric keys from the table of options -- will prevail over colliding non-numeric keys from the table of parameters local function concat_params (ctx) local retval, tbl, nmax = {}, ctx.params, table.maxn(ctx.pipe) if ctx.subset == 1 then -- We need only the sequence for key, val in ipairs(tbl) do retval[key + nmax] = val end else if ctx.subset == -1 then for key in ipairs(tbl) do tbl[key] = nil end end for key, val in pairs(tbl) do if type(key) == 'number' and key > 0 then retval[key + nmax] = val else retval[key] = val end end end for key, val in pairs(ctx.pipe) do retval[key] = val end return retval end -- Flush the parameters by calling a custom function for each value (after this -- function has been invoked `ctx.params` will be no longer usable) local function flush_params (ctx, fn) local tbl = ctx.params if ctx.subset == 1 then for key, val in ipairs(tbl) do fn(key, val) end return end if ctx.subset == -1 then for key, val in ipairs(tbl) do tbl[key] = nil end end if ctx.sorttype > 0 then local nums, words, nn, nw = get_key_list_sorted(tbl, natural_sort) if ctx.sorttype == 2 then for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end return end for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end return end if ctx.subset ~= -1 then for key, val in ipairs(tbl) do fn(key, val) tbl[key] = nil end end for key, val in pairs(tbl) do fn(key, val) end end -- Flush the parameters by calling one of two custom functions for each value -- (after this function has been invoked `ctx.params` will be no longer usable) local function mixed_flush_params (ctx, fn_seq, fn_oth) if ctx.subset == 1 then for key, val in ipairs(ctx.params) do fn_seq(key, val) end return end if ctx.subset == -1 then flush_params(ctx, fn_oth) return end local tbl = ctx.params if ctx.sorttype > 0 then local nums, words, nn, nw = get_key_list_sorted(tbl, natural_sort) local sequence = {} for key, val in ipairs(tbl) do sequence[key] = val end if ctx.sorttype == 2 then for idx = 1, nw do fn_oth(words[idx], tbl[words[idx]]) end end for idx = 1, nn do if sequence[nums[idx]] then fn_seq(nums[idx], sequence[nums[idx]]) else fn_oth(nums[idx], tbl[nums[idx]]) end end if ctx.sorttype ~= 2 then for idx = 1, nw do fn_oth(words[idx], tbl[words[idx]]) end end return end for key, val in ipairs(tbl) do fn_seq(key, val) tbl[key] = nil end for key, val in pairs(tbl) do fn_oth(key, val) end end -- Finalize and return a concatenated list local function finalize_and_return_concatenated_list (ctx, lst, len, modsize) if len > 0 then local tmp = ctx.oxfordsep or ctx.lastsep if tmp ~= nil and len > modsize * 2 then lst[len - modsize + 1] = tmp elseif len > modsize and ctx.lastsep ~= nil then lst[len - modsize + 1] = ctx.lastsep end lst[1] = ctx.header or '' if ctx.footer ~= nil then lst[len + 1] = ctx.footer end ctx.text = table.concat(lst) else ctx.text = ctx.ifngiven or '' end end --- --- --- PUBLIC ENVIRONMENT --- --- ________________________________ --- --- --- --[[ Modifiers ]]-- ------------------- -- Syntax: #invoke:params|sequential|pipe to library.sequential = function (ctx) if ctx.subset == 1 then error(modulename .. ': The ‘sequential’ directive has been provided more than once', 0) end if ctx.subset == -1 then error(modulename .. ': The two directives ‘non-sequential’ and ‘sequential’ are in contradiction with each other', 0) end if ctx.sorttype > 0 then error(modulename .. ': The ‘all_sorted’ and ‘reassorted’ directives are redundant when followed by ‘sequential’', 0) end ctx.iterfunc, ctx.subset = ipairs, 1 return context_iterate(ctx, 1) end -- Syntax: #invoke:params|non-sequential|pipe to library['non-sequential'] = function (ctx) if ctx.subset == -1 then error(modulename .. ': The ‘non-sequential’ directive has been provided more than once', 0) end if ctx.subset == 1 then error(modulename .. ': The two directives ‘sequential’ and ‘non-sequential’ are in contradiction with each other', 0) end ctx.iterfunc, ctx.subset = pairs, -1 return context_iterate(ctx, 1) end -- Syntax: #invoke:params|all_sorted|pipe to library.all_sorted = function (ctx) if ctx.sorttype == 1 then error(modulename .. ': The ‘all_sorted’ directive has been provided more than once', 0) end if ctx.subset == 1 then error(modulename .. ': The ‘all_sorted’ directive is redundant after ‘sequential’', 0) end if ctx.sorttype == 2 then error(modulename .. ': The two directives ‘reassorted’ and ‘sequential’ are in contradiction with each other', 0) end ctx.sorttype = 1 return context_iterate(ctx, 1) end -- Syntax: #invoke:params|reassorted|pipe to library.reassorted = function (ctx) if ctx.sorttype == 2 then error(modulename .. ': The ‘reassorted’ directive has been provided more than once', 0) end if ctx.subset == 1 then error(modulename .. ': The ‘reassorted’ directive is redundant after ‘sequential’', 0) end if ctx.sorttype == 1 then error(modulename .. ': The two directives ‘sequential’ and ‘reassorted’ are in contradiction with each other', 0) end ctx.sorttype = 2 return context_iterate(ctx, 1) end -- Syntax: #invoke:params|setting|directives|...|pipe to library.setting = function (ctx) local argc = set_strings_from_opts(ctx, ctx.pipe, 1) if argc < 2 then error(modulename .. ', ‘setting’: No directive was given', 0) end return context_iterate(ctx, argc + 1) end -- Syntax: #invoke:params|scoring|new parameter name|[container]|pipe to library.scoring = function (ctx) if ctx.pipe[1] == nil then error(modulename .. ', ‘scoring’: No parameter name was provided', 0) end local tmp local retval, opts = 0, ctx.pipe for _ in pairs(ctx.params) do retval = retval + 1 end if opts[2] ~= nil then tmp = opts[2]:match'^%s*(.*%S)' end if tmp == 'in_substack' then new_substack(ctx)[get_parameter_name(opts[1])] = tostring(retval) return context_iterate(ctx, 3) end ctx.params[get_parameter_name(opts[1])] = tostring(retval) return context_iterate(ctx, tmp == 'here' and 3 or 2) end -- Syntax: #invoke:params|squeezing|pipe to library.squeezing = function (ctx) local store, indices, tbl, newlen = {}, {}, ctx.params, 0 for key, val in pairs(tbl) do if type(key) == 'number' then newlen = newlen + 1 indices[newlen], store[key], tbl[key] = key, val, nil end end table.sort(indices) for idx = 1, newlen do tbl[idx] = store[indices[idx]] end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|filling_the_gaps|pipe to library.filling_the_gaps = function (ctx) local newval, tbl, tmp, nmin, nmax, nnums = ctx.pipe[1], ctx.params, {}, 1, nil, -1 if newval == nil then error(modulename .. ', ‘filling_the_gaps’: No value was provided', 0) end for key, val in pairs(tbl) do if type(key) == 'number' then if nmax == nil then if key < nmin then nmin = key end nmax = key elseif key > nmax then nmax = key elseif key < nmin then nmin = key end tmp[key], nnums = val, nnums + 1 end end if nmax ~= nil and nmax - nmin > nnums then ctx.n_available = ctx.n_available + nmin + nnums - nmax if ctx.n_available < 0 then error(modulename .. ', ‘filling_the_gaps’: It is possible to fill at most ' .. tostring(maxfill) .. ' parameters', 0) end for idx = nmin, nmax, 1 do tbl[idx] = newval end for key, val in pairs(tmp) do tbl[key] = val end end return context_iterate(ctx, 2) end -- Syntax: #invoke:params|clearing|pipe to library.clearing = function (ctx) local tbl, numerics = ctx.params, {} for key, val in pairs(tbl) do if type(key) == 'number' then numerics[key], tbl[key] = val, nil end end for key, val in ipairs(numerics) do tbl[key] = val end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|cutting|left cut|right cut|pipe to library.cutting = function (ctx) local lcut = tonumber(ctx.pipe[1]) if lcut == nil or math.floor(lcut) ~= lcut then error(modulename .. ', ‘cutting’: Left cut must be an integer number', 0) end local rcut = tonumber(ctx.pipe[2]) if rcut == nil or math.floor(rcut) ~= rcut then error(modulename .. ', ‘cutting’: Right cut must be an integer number', 0) end local tbl = ctx.params local len = #tbl if lcut < 0 then lcut = len + lcut end if rcut < 0 then rcut = len + rcut end local tot = lcut + rcut if tot > 0 then local cache = {} if tot >= len then for key in ipairs(tbl) do tbl[key] = nil end tot = len else for idx = len - rcut + 1, len, 1 do tbl[idx] = nil end for idx = 1, lcut, 1 do tbl[idx] = nil end end for key, val in pairs(tbl) do if type(key) == 'number' and key > 0 then if key > len then cache[key - tot] = val else cache[key - lcut] = val end tbl[key] = nil end end for key, val in pairs(cache) do tbl[key] = val end end return context_iterate(ctx, 3) end -- Syntax: #invoke:params|cropping|left crop|right crop|pipe to library.cropping = function (ctx) local lcut = tonumber(ctx.pipe[1]) if lcut == nil or math.floor(lcut) ~= lcut then error(modulename .. ', ‘cropping’: Left crop must be an integer number', 0) end local rcut = tonumber(ctx.pipe[2]) if rcut == nil or math.floor(rcut) ~= rcut then error(modulename .. ', ‘cropping’: Right crop must be an integer number', 0) end local tbl = ctx.params local nmin, nmax for key in pairs(tbl) do if type(key) == 'number' then if nmin == nil then nmin, nmax = key, key elseif key > nmax then nmax = key elseif key < nmin then nmin = key end end end if nmin ~= nil then local len = nmax - nmin + 1 if lcut < 0 then lcut = len + lcut end if rcut < 0 then rcut = len + rcut end if lcut + rcut - len > -1 then for key in pairs(tbl) do if type(key) == 'number' then tbl[key] = nil end end elseif lcut + rcut > 0 then for idx = nmax - rcut + 1, nmax do tbl[idx] = nil end for idx = nmin, nmin + lcut - 1 do tbl[idx] = nil end local lshift = nmin + lcut - 1 if lshift > 0 then for idx = lshift + 1, nmax, 1 do tbl[idx - lshift], tbl[idx] = tbl[idx], nil end end end end return context_iterate(ctx, 3) end -- Syntax: #invoke:params|purging|start offset|length|pipe to library.purging = function (ctx) local idx = tonumber(ctx.pipe[1]) if idx == nil or math.floor(idx) ~= idx then error(modulename .. ', ‘purging’: Start offset must be an integer number', 0) end local len = tonumber(ctx.pipe[2]) if len == nil or math.floor(len) ~= len then error(modulename .. ', ‘purging’: Length must be an integer number', 0) end local tbl = ctx.params if len < 1 then len = len + table.maxn(tbl) if idx > len then return context_iterate(ctx, 3) end len = len - idx + 1 end ctx.params = copy_table_reduced(tbl, idx, len) return context_iterate(ctx, 3) end -- Syntax: #invoke:params|backpurging|start offset|length|pipe to library.backpurging = function (ctx) local last = tonumber(ctx.pipe[1]) if last == nil or math.floor(last) ~= last then error(modulename .. ', ‘backpurging’: Start offset must be an integer number', 0) end local len = tonumber(ctx.pipe[2]) if len == nil or math.floor(len) ~= len then error(modulename .. ', ‘backpurging’: Length must be an integer number', 0) end local idx local tbl = ctx.params if len > 0 then idx = last - len + 1 else for key in pairs(tbl) do if type(key) == 'number' and (idx == nil or key < idx) then idx = key end end if idx == nil then return context_iterate(ctx, 3) end idx = idx - len if last < idx then return context_iterate(ctx, 3) end len = last - idx + 1 end ctx.params = copy_table_reduced(ctx.params, idx, len) return context_iterate(ctx, 3) end -- Syntax: #invoke:params|shifting|addend|pipe to library.shifting = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local nshift = tonumber(ctx.pipe[1]) if nshift == nil or nshift == 0 or math.floor(nshift) ~= nshift then error(modulename .. ', ‘shifting’: A non-zero integer number must be provided', 0) end local tbl = {} for key, val in pairs(ctx.params) do if type(key) == 'number' then tbl[key + nshift] = val else tbl[key] = val end end ctx.params = tbl return context_iterate(ctx, 2) end -- Syntax: #invoke:params|reversing_numeric_names|pipe to library.reversing_numeric_names = function (ctx) local tbl, numerics, nmax = ctx.params, {}, 0 for key, val in pairs(tbl) do if type(key) == 'number' then numerics[key], tbl[key] = val, nil if key > nmax then nmax = key end end end for key, val in pairs(numerics) do tbl[nmax - key + 1] = val end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|pivoting_numeric_names|pipe to --[[ library.pivoting_numeric_names = function (ctx) local tbl = ctx.params local shift = #tbl + 1 if shift < 2 then return library.reversing_numeric_names(ctx) end local numerics = {} for key, val in pairs(tbl) do if type(key) == 'number' then numerics[key] = val tbl[key] = nil end end for key, val in pairs(numerics) do tbl[shift - key] = val end return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|mirroring_numeric_names|pipe to --[[ library.mirroring_numeric_names = function (ctx) local nmax, nmin local tbl, numerics = ctx.params, {} for key, val in pairs(tbl) do if type(key) == 'number' then numerics[key] = val tbl[key] = nil if nmax == nil then nmin, nmax = key, key elseif key > nmax then nmax = key elseif key < nmin then nmin = key end end end for key, val in pairs(numerics) do tbl[nmax + nmin - key] = val end return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|swapping_numeric_names|pipe to --[[ library.swapping_numeric_names = function (ctx) local tmp local tbl, cache, nsize = ctx.params, {}, 0 for key in pairs(tbl) do if type(key) == 'number' then nsize = nsize + 1 cache[nsize] = key end end table.sort(cache) for idx = math.floor(nsize / 2), 1, -1 do tmp = tbl[cache[idx] ] tbl[cache[idx] ] = tbl[cache[nsize - idx + 1] ] tbl[cache[nsize - idx + 1] ] = tmp end return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|sorting_sequential_values|[criterion]|pipe to library.sorting_sequential_values = function (ctx) local sortfn if ctx.pipe[1] ~= nil then sortfn = sortfunctions[ctx.pipe[1]:match'^%s*(.-)%s*$'] end if sortfn then table.sort(ctx.params, sortfn) else table.sort(ctx.params) end -- i.e. either `false` or `nil` if sortfn == nil then return context_iterate(ctx, 1) end return context_iterate(ctx, 2) end -- Syntax: #invoke:params|splicing|[add to position]|position|increment| -- [number of elements to write]|...|pipe to library.splicing = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local tmp2, argc, pos, refp local opts, tbl = ctx.pipe, ctx.params local tmp1 = opts[1] if tmp1 ~= nil then tmp2 = tonumber(tmp1) if tmp2 == nil or math.floor(tmp2) ~= tmp2 then pos, argc, tmp2 = tonumber(opts[2]), 4, tmp1:match'^%s*(.*%S)' if tmp2 ~= nil then refp = position_references[tmp2] if refp == nil then error(modulename .. ', ‘splicing’: ‘' .. tostring(tmp2) .. '’ is not a valid first argument', 0) end else refp = 0 end else pos, argc, refp = tmp2, 3, 0 end else pos, argc, refp = tonumber(opts[2]), 4, 0 end if pos == nil or math.floor(pos) ~= pos then error(modulename .. ', ‘splicing’: The position must be an integer number', 0) end local len = tonumber(opts[argc - 1]) if len == nil or math.floor(len) ~= len then error(modulename .. ', ‘splicing’: The increment must be an integer number', 0) end if refp == 2 then for _ in ipairs(tbl) do pos = pos + 1 end refp = 0 end tmp1, tmp2 = nil, nil if refp ~= 0 or len ~= 0 then for key, val in pairs(tbl) do if type(key) == 'number' then if tmp1 == nil then tmp1, tmp2 = key, key elseif key < tmp1 then tmp1 = key elseif key > tmp2 then tmp2 = key end end end end if tmp2 == nil then len = 0 elseif refp == 3 then pos = pos + tmp2 elseif refp == 1 then pos = pos + tmp1 end if len > 0 and pos + len > tmp1 and pos <= tmp2 then tbl = copy_table_expanded(tbl, pos, len) elseif len < 0 and pos - len > tmp1 and pos <= tmp2 then tbl = copy_table_reduced(tbl, pos, -len) else tbl = copy_or_ref_table(tbl, tbl ~= ctx.oparams) end ctx.params = tbl tmp1 = tonumber(opts[argc]) if len == 0 and (tmp1 == nil or tmp1 < 1) then error(modulename .. ', ‘splicing’: When the increment is zero the number of elements to add cannot be zero', 0) end if tmp1 == nil or tmp1 < 0 or math.floor(tmp1) ~= tmp1 then return context_iterate(ctx, argc) end tmp2 = argc - pos + 1 for key = pos, pos + tmp1 - 1 do tbl[key] = opts[key + tmp2] end return context_iterate(ctx, argc + tmp1 + 1) end -- Syntax: #invoke:params|imposing|name|value|pipe to library.imposing = function (ctx) if ctx.pipe[1] == nil then error(modulename .. ', ‘imposing’: Missing parameter name to impose', 0) end ctx.params[get_parameter_name(ctx.pipe[1])] = ctx.pipe[2] return context_iterate(ctx, 3) end -- Syntax: #invoke:params|providing|name|value|pipe to library.providing = function (ctx) if ctx.pipe[1] == nil then error(modulename .. ', ‘providing’: Missing parameter name to provide', 0) end local key = get_parameter_name(ctx.pipe[1]) if ctx.params[key] == nil then ctx.params[key] = ctx.pipe[2] end return context_iterate(ctx, 3) end -- Syntax: #invoke:params|reassigning|source|destination|[mode]|pipe to library.reassigning = function (ctx) local opts, tbl = ctx.pipe, ctx.params if opts[1] == nil then error(modulename .. ', ‘reassigning’: Missing source parameter', 0) end if opts[2] == nil then error(modulename .. ', ‘reassigning’: Missing destination parameter', 0) end local mode local src = get_parameter_name(opts[1]) local val = tbl[src] if opts[3] ~= nil then mode = a_modes[opts[3]:match'^%s*(.-)%s*$'] end local argc = mode == nil and 3 or 4 if val == nil then return context_iterate(ctx, argc) end local dest = get_parameter_name(opts[2]) if mode == 1 or mode == 4 or (mode == 3 and tbl[dest] == nil) then tbl[src] = nil end if mode == nil or mode < 2 or tbl[dest] == nil then tbl[dest] = val end return context_iterate(ctx, argc) end -- Syntax: #invoke:params|discarding|name|[how many]|pipe to library.discarding = function (ctx) if ctx.pipe[1] == nil then error(modulename .. ', ‘discarding’: Missing parameter name to discard', 0) end local len = tonumber(ctx.pipe[2]) if len == nil then ctx.params[get_parameter_name(ctx.pipe[1])] = nil return context_iterate(ctx, 2) end local key = tonumber(ctx.pipe[1]) if key == nil or math.floor(key) ~= key then error(modulename .. ', ‘discarding’: A range was provided, but the initial parameter name is not an integer number', 0) end if len < 1 or math.floor(len) ~= len then error(modulename .. ', ‘discarding’: A range can only be an integer number greater than zero', 0) end for idx = key, key + len - 1 do ctx.params[idx] = nil end return context_iterate(ctx, 3) end -- Syntax: #invoke:params|excluding_non-numeric_names|pipe to library['excluding_non-numeric_names'] = function (ctx) local tmp = ctx.params for key, val in pairs(tmp) do if type(key) ~= 'number' then tmp[key] = nil end end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|excluding_numeric_names|pipe to library.excluding_numeric_names = function (ctx) local tmp = ctx.params for key, val in pairs(tmp) do if type(key) == 'number' then tmp[key] = nil end end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|with_name_matching|target 1|[plain flag 1]|[or] -- |[target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag -- N]|pipe to library.with_name_matching = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local tmp, ptn local targets, nptns, argc = load_pattern_args(ctx.pipe, 'with_name_matching') local tbl, newparams = ctx.params, {} for idx = 1, nptns do ptn = targets[idx] if ptn[3] then tmp = ptn[1] if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then tmp = tonumber(tmp) end newparams[tmp] = tbl[tmp] else for key, val in pairs(tbl) do if tostring(key):find(ptn[1], 1, ptn[2]) then newparams[key] = val end end end end ctx.params = newparams return context_iterate(ctx, argc) end -- Syntax: #invoke:params|with_name_not_matching|target 1|[plain flag 1] -- |[and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain -- flag N]|pipe to library.with_name_not_matching = function (ctx) local targets, nptns, argc = load_pattern_args(ctx.pipe, 'with_name_not_matching') local tbl = ctx.params if nptns == 1 and targets[1][3] then local tmp = targets[1][1] if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then tbl[tonumber(tmp)] = nil else tbl[tmp] = nil end return context_iterate(ctx, argc) end local yesmatch, ptn for key in pairs(tbl) do yesmatch = true for idx = 1, nptns do ptn = targets[idx] if ptn[3] then if tostring(key) ~= ptn[1] then yesmatch = false break end elseif not tostring(key):find(ptn[1], 1, ptn[2]) then yesmatch = false break end end if yesmatch then tbl[key] = nil end end return context_iterate(ctx, argc) end -- Syntax: #invoke:params|with_value_matching|target 1|[plain flag 1]|[or] -- |[target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag -- N]|pipe to library.with_value_matching = function (ctx) local nomatch, ptn local tbl = ctx.params local targets, nptns, argc = load_pattern_args(ctx.pipe, 'with_value_matching') for key, val in pairs(tbl) do nomatch = true for idx = 1, nptns do ptn = targets[idx] if ptn[3] then if val == ptn[1] then nomatch = false break end elseif val:find(ptn[1], 1, ptn[2]) then nomatch = false break end end if nomatch then tbl[key] = nil end end return context_iterate(ctx, argc) end -- Syntax: #invoke:params|with_value_not_matching|target 1|[plain flag 1] -- |[and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain -- flag N]|pipe to library.with_value_not_matching = function (ctx) local yesmatch, ptn local tbl = ctx.params local targets, nptns, argc = load_pattern_args(ctx.pipe, 'with_value_not_matching') for key, val in pairs(tbl) do yesmatch = true for idx = 1, nptns do ptn = targets[idx] if ptn[3] then if val ~= ptn[1] then yesmatch = false break end elseif not val:find(ptn[1], 1, ptn[2]) then yesmatch = false break end end if yesmatch then tbl[key] = nil end end return context_iterate(ctx, argc) end -- Syntax: #invoke:params|keeping_at_most|number of parameters to pick|pipe to library.keeping_at_most = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local len = tonumber(ctx.pipe[1]) if len == nil or len < 1 or math.floor(len) ~= len then error(modulename .. ', ‘keeping_at_most’: The number of parameters to keep must be an integer greater than zero', 0) end ctx.params = copy_table_maxn({}, ctx.params, len) return context_iterate(ctx, 2) end -- Syntax: #invoke:params|trimming_values|pipe to library.trimming_values = function (ctx) local tbl = ctx.params for key, val in pairs(tbl) do tbl[key] = val:match'^%s*(.-)%s*$' end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|mapping_to_lowercase|pipe to library.mapping_to_lowercase = function (ctx) local tbl = ctx.params for key, val in pairs(tbl) do tbl[key] = val:lower() end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|mapping_to_uppercase|pipe to library.mapping_to_uppercase = function (ctx) local tbl = ctx.params for key, val in pairs(tbl) do tbl[key] = val:upper() end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|mapping_by_calling|template name|[call -- style]|[let/use]|[...]|[let/use]|[...]|[number of additional -- parameters]|[parameter 1]|[parameter 2]|[...]|[parameter N]|pipe to library.mapping_by_calling = function (ctx) local tname local opts = ctx.pipe if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end if tname == nil then error(modulename .. ', ‘mapping_by_calling’: No template name was provided', 0) end local margs, argc, looptype, karg, varg, tbl, mem = load_callback_opts(opts, 1, mapping_styles.values_only, ctx.params) local model = { title = tname, args = margs } value_maps[looptype](tbl, margs, karg, varg, function () return ctx.frame:expandTemplate(model) end) for key, val in pairs(mem) do tbl[key] = val end ctx.params = tbl return context_iterate(ctx, argc) end -- Syntax: #invoke:params|mapping_by_invoking|module name|function name|[call -- style]|[let/use]|[...]|[let/use]|[...]|[number of additional -- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to library.mapping_by_invoking = function (ctx) local mname, fname local opts = ctx.pipe if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘mapping_by_invoking’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end if fname == nil then error(modulename .. ', ‘mapping_by_invoking’: No function name was provided', 0) end local margs, argc, looptype, karg, varg, tbl, mem = load_callback_opts(opts, 2, mapping_styles.values_only, ctx.params) local model = { title = 'Module:' .. mname, args = margs } local mfunc = require(model.title)[fname] if mfunc == nil then error(modulename .. ', ‘mapping_by_invoking’: The function ‘' .. fname .. '’ does not exist', 0) end value_maps[looptype](tbl, margs, karg, varg, function () return tostring(mfunc(ctx.frame:newChild(model))) end) for key, val in pairs(mem) do tbl[key] = val end ctx.params = tbl return context_iterate(ctx, argc) end -- Syntax: #invoke:params|mapping_by_magic|parser function|[call -- style]|[let/use]|[...]|[let/use]|[...]|[number of additional -- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to library.mapping_by_magic = function (ctx) local magic local opts = ctx.pipe if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end if magic == nil then error(modulename .. ', ‘mapping_by_magic’: No parser function was provided', 0) end local margs, argc, looptype, karg, varg, tbl, mem = load_callback_opts(opts, 1, mapping_styles.values_only, ctx.params) value_maps[looptype](tbl, margs, karg, varg, function () return ctx.frame:callParserFunction(magic, margs) end) for key, val in pairs(mem) do tbl[key] = val end ctx.params = tbl return context_iterate(ctx, argc) end -- Syntax: #invoke:params|mapping_by_replacing|target|replace|[count]|[plain -- flag]|pipe to library.mapping_by_replacing = function (ctx) local ptn, repl, nmax, flg, argc, die = load_replace_args(ctx.pipe, 'mapping_by_replacing') if die then return context_iterate(ctx, argc) end local tbl = ctx.params if flg == 3 then for key, val in pairs(tbl) do if val == ptn then tbl[key] = repl end end else if flg == 2 then -- Copied from Module:String's `str._escapePattern()` ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0') end for key, val in pairs(tbl) do tbl[key] = val:gsub(ptn, repl, nmax) end end return context_iterate(ctx, argc) end -- Syntax: #invoke:params|mapping_by_mixing|mixing string|pipe to library.mapping_by_mixing = function (ctx) if ctx.pipe[1] == nil then error(modulename .. ', ‘mapping_by_mixing’: No mixing string was provided', 0) end local tbl, mix = ctx.params, ctx.pipe[1] if mix == '$#' then for key in pairs(tbl) do tbl[key] = tostring(key) end return context_iterate(ctx, 2) end local skel, cnv, n_parts = parse_placeholder_string(mix) for key, val in pairs(tbl) do for idx = 2, n_parts, 2 do if skel[idx] then cnv[idx] = val else cnv[idx] = tostring(key) end end tbl[key] = table.concat(cnv) end return context_iterate(ctx, 2) end -- Syntax: #invoke:params|mapping_to_names|pipe to --[[ library.mapping_to_names = function (ctx) local tbl = ctx.params for key in pairs(tbl) do tbl[key] = tostring(key) end return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|renaming_to_lowercase|pipe to library.renaming_to_lowercase = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local cache = {} for key, val in pairs(ctx.params) do if type(key) == 'string' then cache[key:lower()] = val else cache[key] = val end end ctx.params = cache return context_iterate(ctx, 1) end -- Syntax: #invoke:params|renaming_to_uppercase|pipe to library.renaming_to_uppercase = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local cache = {} for key, val in pairs(ctx.params) do if type(key) == 'string' then cache[key:upper()] = val else cache[key] = val end end ctx.params = cache return context_iterate(ctx, 1) end -- Syntax: #invoke:params|renaming_to_sequence|[sort order]|pipe to library.renaming_to_sequence = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local cache, len local tbl = ctx.params local sortfn, argc, do_sort = load_sort_opt(ctx.pipe[1]) if do_sort then local words, wl cache, words, len, wl = get_key_list_sorted(tbl, sortfn) for idx = 1, len do cache[idx] = tbl[cache[idx]] end for idx = 1, wl do cache[len + idx] = tbl[words[idx]] end else len, cache = 0, {} for _, val in pairs(tbl) do len = len + 1 cache[len] = val end end ctx.params = cache return context_iterate(ctx, argc) end -- Syntax: #invoke:params|renaming_by_calling|template name|[call -- style]|[let/use]|[...]|[let/use]|[...]|[number of additional -- parameters]|[parameter 1]|[parameter 2]|[...]|[parameter N]|pipe to library.renaming_by_calling = function (ctx) local tname local opts = ctx.pipe if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end if tname == nil then error(modulename .. ', ‘renaming_by_calling’: No template name was provided', 0) end local rargs, argc, looptype, karg, varg, tbl, mem = load_callback_opts(opts, 1, mapping_styles.names_only, ctx.params) local model = { title = tname, args = rargs } map_names(tbl, rargs, karg, varg, looptype, function () return ctx.frame:expandTemplate(model) end) for key, val in pairs(mem) do tbl[key] = val end ctx.params = tbl return context_iterate(ctx, argc) end -- Syntax: #invoke:params|renaming_by_invoking|module name|function -- name|[call style]|[let/use]|[...]|[let/use]|[...]|[number of -- additional arguments]|[argument 1]|[argument 2]|[...]|[argument -- N]|pipe to library.renaming_by_invoking = function (ctx) local mname, fname local opts = ctx.pipe if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘renaming_by_invoking’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end if fname == nil then error(modulename .. ', ‘renaming_by_invoking’: No function name was provided', 0) end local rargs, argc, looptype, karg, varg, tbl, mem = load_callback_opts(opts, 2, mapping_styles.names_only, ctx.params) local model = { title = 'Module:' .. mname, args = rargs } local mfunc = require(model.title)[fname] if mfunc == nil then error(modulename .. ', ‘renaming_by_invoking’: The function ‘' .. fname .. '’ does not exist', 0) end map_names(tbl, rargs, karg, varg, looptype, function () return tostring(mfunc(ctx.frame:newChild(model))) end) for key, val in pairs(mem) do tbl[key] = val end ctx.params = tbl return context_iterate(ctx, argc) end -- Syntax: #invoke:params|renaming_by_magic|parser function|[call -- style]|[let/use]|[...]|[let/use]|[...]|[number of additional -- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to library.renaming_by_magic = function (ctx) local opts = ctx.pipe local magic if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end if magic == nil then error(modulename .. ', ‘renaming_by_magic’: No parser function was provided', 0) end local rargs, argc, looptype, karg, varg, tbl, mem = load_callback_opts(opts, 1, mapping_styles.names_only, ctx.params) map_names(tbl, rargs, karg, varg, looptype, function () return ctx.frame:callParserFunction(magic, rargs) end) for key, val in pairs(mem) do tbl[key] = val end ctx.params = tbl return context_iterate(ctx, argc) end -- Syntax: #invoke:params|renaming_by_replacing|target|replace|[count]|[plain -- flag]|pipe to library.renaming_by_replacing = function (ctx) local ptn, repl, nmax, flg, argc, die = load_replace_args(ctx.pipe, 'renaming_by_replacing') if die then return context_iterate(ctx, argc) end local tbl = ctx.params if flg == 3 then ptn = get_parameter_name(ptn) local val = tbl[ptn] if val ~= nil then tbl[ptn], tbl[get_parameter_name(repl)] = nil, val end else if flg == 2 then -- Copied from Module:String's `str._escapePattern()` ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0') end local cache = {} for key, val in pairs(tbl) do steal_if_renamed(val, tbl, key, cache, tostring(key):gsub(ptn, repl, nmax)) end for key, val in pairs(cache) do tbl[key] = val end end return context_iterate(ctx, argc) end -- Syntax: #invoke:params|renaming_by_mixing|mixing string|pipe to library.renaming_by_mixing = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning if ctx.pipe[1] == nil then error(modulename .. ', ‘renaming_by_mixing’: No mixing string was provided', 0) end local mix = ctx.pipe[1]:match'^%s*(.-)%s*$' local cache = {} if mix == '$@' then for _, val in pairs(ctx.params) do cache[get_parameter_name(val)] = val end else local skel, canvas, n_parts = parse_placeholder_string(mix) for key, val in pairs(ctx.params) do for idx = 2, n_parts, 2 do if skel[idx] then canvas[idx] = val else canvas[idx] = tostring(key) end end cache[get_parameter_name(table.concat(canvas))] = val end end ctx.params = cache return context_iterate(ctx, 2) end -- Syntax: #invoke:params|renaming_to_values|pipe to --[[ library.renaming_to_values = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local cache = {} for _, val in pairs(ctx.params) do cache[val] = val end ctx.params = cache return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|grouping_by_calling|template -- name|[let/use]|[...]|[let/use]|[...]|[number of additional -- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to library.grouping_by_calling = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local tmp, argc, tbl, mem = load_child_opts(ctx.pipe, 2, 0, ctx.params) local gargs = {} for key, val in pairs(tmp) do if type(key) == 'number' and key < 1 then gargs[key - 1] = val else gargs[key] = val end end tmp = ctx.pipe[1] if tmp ~= nil then tmp = tmp:match'^%s*(.*%S)' end if tmp == nil then error(modulename .. ', ‘grouping_by_calling’: No template name was provided', 0) end local model = { title = tmp } local groups = make_groups(tbl) for gid, group in pairs(groups) do for key, val in pairs(gargs) do group[key] = val end group[0], model.args = gid, group groups[gid] = ctx.frame:expandTemplate(model) end for key, val in pairs(mem) do groups[key] = val end ctx.params = groups return context_iterate(ctx, argc) end -- Syntax: #invoke:params|parsing|string to parse|[trim flag]|[iteration -- delimiter setter]|[...]|[key-value delimiter setter]|[...]|pipe to library.parsing = function (ctx) local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘parsing’: No string to parse was provided', 0) end local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc = load_parse_opts(opts, 2, '|', '=') parse_parameter_string(ctx.params, opts[1], isep, iplain, psep, pplain, trimnamed, trimunnamed) return context_iterate(ctx, argc) end -- Syntax: #invoke:params|reinterpreting|parameter to reinterpret|[trim -- flag]|[iteration delimiter setter]|[...]|[key-value delimiter -- setter]|[...]|pipe to library.reinterpreting = function (ctx) local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘reinterpreting’: No parameter to reinterpret was provided', 0) end local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc = load_parse_opts(opts, 2, '|', '=') local tbl, tmp = ctx.params, get_parameter_name(opts[1]) local str = tbl[tmp] if str ~= nil then tbl[tmp] = nil parse_parameter_string(tbl, str, isep, iplain, psep, pplain, trimnamed, trimunnamed) end return context_iterate(ctx, argc) end -- Syntax: #invoke:params|evaluating|string to parse|[trim flag]|[iteration -- delimiter setter]|[...]|[key-value delimiter setter]|[...]|pipe to library.evaluating = function (ctx) -- NOTE: `ctx.pipe` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘evaluating’: No string to parse was provided', 0) end local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc = load_parse_opts(opts, 2, '!', ':') if opts[1]:match'^%s*(.*%S)' == nil then ctx.pipe = copy_or_ref_table(opts, opts ~= ctx.opipe) return context_iterate(ctx, argc) end local new_opts, cache = {}, {} local shift = parse_parameter_string(cache, opts[1], isep, iplain, psep, pplain, trimnamed, trimunnamed) - argc for key, val in pairs(opts) do if type(key) ~= 'number' or key < 1 then new_opts[key] = val elseif key >= argc then new_opts[key + shift] = val end end for key, val in pairs(cache) do new_opts[key] = val end ctx.pipe = new_opts return context_iterate(ctx, 1) end -- Syntax: #invoke:params|mixing_names_and_values|mixing string|pipe to library.mixing_names_and_values = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning if ctx.pipe[1] == nil then error(modulename .. ', ‘mixing_names_and_values’: No mixing string was provided for parameter names', 0) end if ctx.pipe[2] == nil then error(modulename .. ', ‘mixing_names_and_values’: No mixing string was provided for parameter values', 0) end local tmp local mix_k = ctx.pipe[1]:match'^%s*(.-)%s*$' local cache, mix_v = {}, ctx.pipe[2] if mix_k == '$@' and mix_v == '$@' then for _, val in pairs(ctx.params) do cache[get_parameter_name(val)] = val end elseif mix_k == '$@' and mix_v == '$#' then for key, val in pairs(ctx.params) do cache[get_parameter_name(val)] = tostring(key) end elseif mix_k == '$#' and mix_v == '$#' then for key in pairs(ctx.params) do cache[key] = tostring(key) end else local skel_k, cnv_k, n_parts_k = parse_placeholder_string(mix_k) local skel_v, cnv_v, n_parts_v = parse_placeholder_string(mix_v) for key, val in pairs(ctx.params) do tmp = tostring(key) for idx = 2, n_parts_k, 2 do if skel_k[idx] then cnv_k[idx] = val else cnv_k[idx] = tmp end end for idx = 2, n_parts_v, 2 do if skel_v[idx] then cnv_v[idx] = val else cnv_v[idx] = tmp end end cache[get_parameter_name(table.concat(cnv_k))] = table.concat(cnv_v) end end ctx.params = cache return context_iterate(ctx, 3) end -- Syntax: #invoke:params|swapping_names_and_values|pipe to --[[ library.swapping_names_and_values = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local cache = {} for key, val in pairs(ctx.params) do cache[val] = key end ctx.params = cache return context_iterate(ctx, 1) end ]]-- -- Syntax: #invoke:params|combining|new parameter name|[sort -- order]|[with/without flushed glue]|setting directives|...|pipe to library.combining = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning return context_iterate(ctx, combine_parameters( ctx, function (key, val, kvs) return key .. kvs .. val end, 'combining' ) + 1) end -- Syntax: #invoke:params|combining_values|new parameter name|[sort -- order]|[with/without flushed glue]|setting directives|...|pipe to library.combining_values = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning return context_iterate(ctx, combine_parameters( ctx, function (key, val, kvs) return val end, 'combining_values' ) + 1) end -- Syntax: #invoke:params|combining_by_calling|template name|new parameter -- name|pipe to library.combining_by_calling = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local tname = ctx.pipe[1] if tname ~= nil then tname = tname:match'^%s*(.*%S)' else error(modulename .. ', ‘combining_by_calling’: No template name was provided', 0) end if ctx.pipe[2] == nil then error(modulename .. ', ‘combining_by_calling’: No parameter name was provided', 0) end ctx.params = { [get_parameter_name(ctx.pipe[2])] = ctx.frame:expandTemplate{ title = tname, args = ctx.params } } return context_iterate(ctx, 3) end -- Syntax: #invoke:params|combining_by_invoking|module name|function name|new -- parameter name|pipe to library.combining_by_invoking = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local mname = ctx.pipe[1] if mname ~= nil then mname = mname:match'^%s*(.*%S)' else error(modulename .. ', ‘combining_by_invoking’: No module name was provided', 0) end local fname = ctx.pipe[2] if fname ~= nil then fname = fname:match'^%s*(.*%S)' else error(modulename .. ', ‘combining_by_invoking’: No function name was provided', 0) end if ctx.pipe[3] == nil then error(modulename .. ', ‘combining_by_invoking’: No parameter name was provided', 0) end local model = { title = 'Module:' .. mname, args = ctx.params } local mfunc = require(model.title)[fname] if mfunc == nil then error(modulename .. ', ‘mapping_by_invoking’: The function ‘' .. fname .. '’ does not exist', 0) end ctx.params = { [get_parameter_name(ctx.pipe[3])] = tostring(mfunc(ctx.frame:newChild(model))) } return context_iterate(ctx, 4) end -- Syntax: #invoke:params|combining_by_magic|parser function|new parameter -- name|pipe to library.combining_by_magic = function (ctx) -- NOTE: `ctx.params` might be the original metatable! As a modifier, -- this function MUST create a copy of it before returning local magic = ctx.pipe[1] if magic ~= nil then magic = magic:match'^%s*(.*%S)' else error(modulename .. ', ‘combining_by_magic’: No parser function was provided', 0) end if ctx.pipe[2] == nil then error(modulename .. ', ‘combining_by_magic’: No parameter name was provided', 0) end ctx.params = { [get_parameter_name(ctx.pipe[2])] = ctx.frame:callParserFunction(magic, ctx.params) } return context_iterate(ctx, 3) end -- Syntax: #invoke:params|snapshotting|[maximum number]|pipe to library.snapshotting = function (ctx) return context_iterate(ctx, make_child(ctx, ctx.params, 'snapshotting')) end -- Syntax: #invoke:params|remembering|[maximum number]|pipe to library.remembering = function (ctx) return context_iterate(ctx, make_child(ctx, ctx.oparams, 'remembering')) end -- Syntax: #invoke:params|entering_substack|[new]|pipe to library.entering_substack = function (ctx) local tbl, ncurrparent = ctx.params, ctx.n_parents + 1 if ctx.parents == nil then ctx.parents = { tbl } else ctx.parents[ncurrparent] = tbl end ctx.n_parents = ncurrparent if ctx.pipe[1] ~= nil and ctx.pipe[1]:match'^%s*new%s*$' then ctx.params = {} return context_iterate(ctx, 2) end local currsnap = ctx.n_children if currsnap > 0 then ctx.params, ctx.children[currsnap], ctx.n_children = ctx.children[currsnap], nil, currsnap - 1 else local newparams = {} for key, val in pairs(tbl) do newparams[key] = val end ctx.params = newparams end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|pulling|parameter name|pipe to library.pulling = function (ctx) local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘pulling’: No parameter to pull was provided', 0) end local tmp = ctx.n_parents local parent = tmp < 1 and ctx.oparams or ctx.parents[tmp] tmp = get_parameter_name(opts[1]) if parent[tmp] ~= nil then ctx.params[tmp] = parent[tmp] end return context_iterate(ctx, 2) end -- Syntax: #invoke:params|recalling|parameter name|pipe to library.recalling = function (ctx) local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘recalling’: No parameter to recall was provided', 0) end local arg = get_parameter_name(opts[1]) if ctx.oparams[arg] ~= nil then ctx.params[arg] = ctx.oparams[arg] end return context_iterate(ctx, 2) end -- Syntax: #invoke:params|finding|parameter name|pipe to --[[ library.finding = function (ctx) local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘finding’: No parameter to find was provided', 0) end local arg = get_parameter_name(opts[1]) local parent for idx = ctx.n_parents, 1, -1 do parent = ctx.parents[idx] if parent[arg] ~= nil then ctx.params[arg] = parent[arg] return context_iterate(ctx, 2) end end if ctx.oparams[arg] ~= nil then ctx.params[arg] = ctx.oparams[arg] end return context_iterate(ctx, 2) end ]]-- -- Syntax: #invoke:params|picking|number of parameters to pick|pipe to --[[ library.picking = function (ctx) local len = tonumber(ctx.pipe[1]) if len == nil or len < 1 or math.floor(len) ~= len then error(modulename .. ', ‘picking’: The number of parameters to pick must be an integer greater than zero', 0) end if ctx.n_parents < 1 then copy_table_maxn(ctx.params, ctx.oparams, len) else copy_table_maxn(ctx.params, ctx.parents[ctx.n_parents], len) end return context_iterate(ctx, 2) end ]]-- -- Syntax: #invoke:params|detaching_substack|pipe to library.detaching_substack = function (ctx) local ncurrparent = ctx.n_parents if ncurrparent < 1 then error(modulename .. ', ‘detaching_substack’: No substack has been created', 0) end local parent = ctx.parents[ncurrparent] for key in pairs(ctx.params) do parent[key] = nil end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|dropping_substack|pipe to library.dropping_substack = function (ctx) local ncurrparent = ctx.n_parents if ncurrparent < 1 then error(modulename .. ', ‘dropping_substack’: No substack has been created', 0) end ctx.params, ctx.parents[ncurrparent], ctx.n_parents = ctx.parents[ncurrparent], nil, ncurrparent - 1 return context_iterate(ctx, 1) end -- Syntax: #invoke:params|leaving_substack|pipe to library.leaving_substack = function (ctx) local ncurrparent = ctx.n_parents if ncurrparent < 1 then error(modulename .. ', ‘leaving_substack’: No substack has been created', 0) end local currsnap = ctx.n_children + 1 if ctx.children == nil then ctx.children = { ctx.params } else ctx.children[currsnap] = ctx.params end ctx.params, ctx.parents[ncurrparent], ctx.n_parents, ctx.n_children = ctx.parents[ncurrparent], nil, ncurrparent - 1, currsnap return context_iterate(ctx, 1) end -- Syntax: #invoke:params|merging_substack|pipe to library.merging_substack = function (ctx) local ncurrparent = ctx.n_parents if ncurrparent < 1 then error(modulename .. ', ‘merging_substack’: No substack has been created', 0) end local parent, child = ctx.parents[ncurrparent], ctx.params ctx.params, ctx.parents[ncurrparent], ctx.n_parents = parent, nil, ncurrparent - 1 for key, val in pairs(child) do parent[key] = val end return context_iterate(ctx, 1) end -- Syntax: #invoke:params|flushing|pipe to library.flushing = function (ctx) if ctx.n_children < 1 then error(modulename .. ', ‘flushing’: There are no substacks to flush', 0) end local parent, currsnap = ctx.params, ctx.n_children for key, val in pairs(ctx.children[currsnap]) do parent[key] = val end ctx.children[currsnap], ctx.n_children = nil, currsnap - 1 return context_iterate(ctx, 1) end -- Syntax: #invoke:params|setting_by_flushing|pipe to library.setting_by_flushing = function (ctx) set_strings_from_substack(ctx, ctx, 'setting_by_flushing') return context_iterate(ctx, 1) end --[[ Functions ]]-- ----------------------------- -- Syntax: #invoke:params|count library.count = function (ctx) -- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables! local retval = 0 for _ in ctx.iterfunc(ctx.params) do retval = retval + 1 end if ctx.subset == -1 then retval = retval - #ctx.params end ctx.text = retval return false end -- Syntax: #invoke:args|concat_and_call|template name|[prepend 1]|[prepend 2] -- |[...]|[item n]|[named item 1=value 1]|[...]|[named item n=value -- n]|[...] library.concat_and_call = function (ctx) -- NOTE: `ctx.params` might be the original metatable! local tname local opts = ctx.pipe if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end if tname == nil then error(modulename .. ', ‘concat_and_call’: No template name was provided', 0) end remove_numeric_keys(opts, 1, 1) ctx.text = ctx.frame:expandTemplate{ title = tname, args = concat_params(ctx) } return false end -- Syntax: #invoke:args|concat_and_invoke|module name|function name|[prepend -- 1]|[prepend 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named -- item n=value n]|[...] library.concat_and_invoke = function (ctx) -- NOTE: `ctx.params` might be the original metatable! local mname, fname local opts = ctx.pipe if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘concat_and_invoke’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end if fname == nil then error(modulename .. ', ‘concat_and_invoke’: No function name was provided', 0) end remove_numeric_keys(opts, 1, 2) local mfunc = require('Module:' .. mname)[fname] if mfunc == nil then error(modulename .. ', ‘concat_and_invoke’: The function ‘' .. fname .. '’ does not exist', 0) end ctx.text = mfunc(ctx.frame:newChild{ title = 'Module:' .. mname, args = concat_params(ctx) }) return false end -- Syntax: #invoke:args|concat_and_magic|parser function|[prepend 1]|[prepend -- 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named item n= -- value n]|[...] library.concat_and_magic = function (ctx) -- NOTE: `ctx.params` might be the original metatable! local magic local opts = ctx.pipe if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end if magic == nil then error(modulename .. ', ‘concat_and_magic’: No parser function was provided', 0) end remove_numeric_keys(opts, 1, 1) ctx.text = ctx.frame:callParserFunction(magic, concat_params(ctx)) return false end -- Syntax: #invoke:params|value_of|parameter name library.value_of = function (ctx) -- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables! local opts = ctx.pipe if opts[1] == nil then error(modulename .. ', ‘value_of’: No parameter name was provided', 0) end local val local key = opts[1]:match'^%s*(.-)%s*$' if key == '0' or key:find'^%-?[1-9]%d*$' ~= nil then key = tonumber(key) val = ctx.params[key] -- No worries: #ctx.params is unused when the modifier is in -- first position (and therefore `ctx.params` is a metatable) if val ~= nil and ( ctx.subset ~= -1 or key > #ctx.params or key < 1 ) and ( ctx.subset ~= 1 or (key <= #ctx.params and key > 0) ) then ctx.text = (ctx.header or '') .. val .. (ctx.footer or '') else ctx.text = ctx.ifngiven or '' end else val = ctx.params[key] if ctx.subset ~= 1 and val ~= nil then ctx.text = (ctx.header or '') .. val .. (ctx.footer or '') else ctx.text = ctx.ifngiven or '' end end return false end -- Syntax: #invoke:params|list library.list = function (ctx) -- NOTE: `ctx.pipe` might be the original metatable! local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or '' flush_params(ctx, function (key, val) ret[nss + 1], ret[nss + 2], ret[nss + 3], ret[nss + 4], nss = pps, key, kvs, val, nss + 4 end) finalize_and_return_concatenated_list(ctx, ret, nss, 4) return false end -- Syntax: #invoke:params|list_values library.list_values = function (ctx) -- NOTE: `ctx.pipe` might be the original metatable! -- NOTE: `library.coins()` and `library.unique_coins()` rely on us local ret, nss, pps = {}, 0, ctx.itersep or '' flush_params(ctx, function (key, val) ret[nss + 1], ret[nss + 2], nss = pps, val, nss + 2 end) finalize_and_return_concatenated_list(ctx, ret, nss, 2) return false end -- Syntax: #invoke:params|list_maybe_with_names library.list_maybe_with_names = function (ctx) -- NOTE: `ctx.pipe` might be the original metatable! local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or '' mixed_flush_params( ctx, function (key, val) ret[nss + 1], ret[nss + 2], ret[nss + 3], ret[nss + 4], nss = pps, '', '', val, nss + 4 end, function (key, val) ret[nss + 1], ret[nss + 2], ret[nss + 3], ret[nss + 4], nss = pps, key, kvs, val, nss + 4 end ) finalize_and_return_concatenated_list(ctx, ret, nss, 4) return false end -- Syntax: #invoke:params|coins|[first coin = value 1]|[second coin = value -- 2]|[...]|[last coin = value N] --[[ library.coins = function (ctx) -- NOTE: `ctx.pipe` might be the original metatable! local opts, tbl = ctx.pipe, ctx.params for key, val in pairs(tbl) do tbl[key] = opts[get_parameter_name(val)] end return library.list_values(ctx) end ]]-- -- Syntax: #invoke:params|unique_coins|[first coin = value 1]|[second coin = -- value 2]|[...]|[last coin = value N] --[[ library.unique_coins = function (ctx) local tmp local opts, tbl = ctx.pipe, ctx.params for key, val in pairs(tbl) do tmp = get_parameter_name(val) tbl[key], opts[tmp] = opts[tmp], nil end return library.list_values(ctx) end ]] -- Syntax: #invoke:params|for_each|wikitext library.for_each = function (ctx) -- NOTE: `ctx.pipe` might be the original metatable! local ret, nss, pps, txt = {}, 0, ctx.itersep or '', ctx.pipe[1] or '' local skel, cnv, n_parts = parse_placeholder_string(txt) flush_params(ctx, function (key, val) for idx = 2, n_parts, 2 do if skel[idx] then cnv[idx] = val else cnv[idx] = tostring(key) end end ret[nss + 1], nss = pps, nss + 2 ret[nss] = table.concat(cnv) end) finalize_and_return_concatenated_list(ctx, ret, nss, 2) return false end -- Syntax: #invoke:params|call_for_each|template name|[append 1]|[append 2] -- |[...]|[append n]|[named param 1=value 1]|[...]|[named param -- n=value n]|[...] library.call_for_each = function (ctx) local tname local opts = ctx.pipe if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end if tname == nil then error(modulename .. ', ‘call_for_each’: No template name was provided', 0) end local model = { title = tname, args = opts } local ret, nss, ccs = {}, 0, ctx.itersep or '' table.insert(opts, 1, true) flush_params(ctx, function (key, val) opts[1], opts[2], ret[nss + 1], nss = key, val, ccs, nss + 2 ret[nss] = ctx.frame:expandTemplate(model) end) finalize_and_return_concatenated_list(ctx, ret, nss, 2) return false end -- Syntax: #invoke:params|invoke_for_each|module name|module function|[append -- 1]|[append 2]|[...]|[append n]|[named param 1=value 1]|[...] -- |[named param n=value n]|[...] library.invoke_for_each = function (ctx) local mname, fname local opts = ctx.pipe if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘invoke_for_each’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end if fname == nil then error(modulename .. ', ‘invoke_for_each’: No function name was provided', 0) end local model = { title = 'Module:' .. mname, args = opts } local mfunc = require(model.title)[fname] local ret, nss, ccs = {}, 0, ctx.itersep or '' flush_params(ctx, function (key, val) opts[1], opts[2], ret[nss + 1], nss = key, val, ccs, nss + 2 ret[nss] = mfunc(ctx.frame:newChild(model)) end) finalize_and_return_concatenated_list(ctx, ret, nss, 2) return false end -- Syntax: #invoke:params|magic_for_each|parser function|[append 1]|[append 2] -- |[...]|[append n]|[named param 1=value 1]|[...]|[named param -- n=value n]|[...] library.magic_for_each = function (ctx) local magic local opts = ctx.pipe if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end if magic == nil then error(modulename .. ', ‘magic_for_each’: No parser function was provided', 0) end local ret, nss, ccs = {}, 0, ctx.itersep or '' table.insert(opts, 1, true) flush_params(ctx, function (key, val) opts[1], opts[2], ret[nss + 1], nss = key, val, ccs, nss + 2 ret[nss] = ctx.frame:callParserFunction(magic, opts) end) finalize_and_return_concatenated_list(ctx, ret, nss, 2) return false end -- Syntax: #invoke:params|call_for_each_value|template name|[append 1]|[append -- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param -- n=value n]|[...] library.call_for_each_value = function (ctx) local tname local opts = ctx.pipe if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end if tname == nil then error(modulename .. ', ‘call_for_each_value’: No template name was provided', 0) end local model = { title = tname, args = opts } local ret, nss, ccs = {}, 0, ctx.itersep or '' flush_params(ctx, function (key, val) opts[1], ret[nss + 1], nss = val, ccs, nss + 2 ret[nss] = ctx.frame:expandTemplate(model) end) finalize_and_return_concatenated_list(ctx, ret, nss, 2) return false end -- Syntax: #invoke:params|invoke_for_each_value|module name|[append 1]|[append -- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param -- n=value n]|[...] library.invoke_for_each_value = function (ctx) local opts = ctx.pipe local mname, fname if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end if mname == nil then error(modulename .. ', ‘invoke_for_each_value’: No module name was provided', 0) end if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end if fname == nil then error(modulename .. ', ‘invoke_for_each_value’: No function name was provided', 0) end local model = { title = 'Module:' .. mname, args = opts } local mfunc = require(model.title)[fname] local ret, nss, ccs = {}, 0, ctx.itersep or '' remove_numeric_keys(opts, 1, 1) flush_params(ctx, function (key, val) opts[1], ret[nss + 1], nss = val, ccs, nss + 2 ret[nss] = mfunc(ctx.frame:newChild(model)) end) finalize_and_return_concatenated_list(ctx, ret, nss, 2) return false end -- Syntax: #invoke:params|magic_for_each_value|parser function|[append 1] -- |[append 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named -- param n=value n]|[...] library.magic_for_each_value = function (ctx) local opts = ctx.pipe local magic if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end if magic == nil then error(modulename .. ', ‘magic_for_each_value’: No parser function was provided', 0) end local ret, nss, ccs = {}, 0, ctx.itersep or '' flush_params(ctx, function (key, val) opts[1], ret[nss + 1], nss = val, ccs, nss + 2 ret[nss] = ctx.frame:callParserFunction(magic, opts) end) finalize_and_return_concatenated_list(ctx, ret, nss, 2) return false end -- Syntax: #invoke:params|call_for_each_group|template name|[append 1]|[append -- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param -- n=value n]|[...] library.call_for_each_group = function (ctx) -- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables! local tmp if ctx.pipe[1] ~= nil then tmp = ctx.pipe[1]:match'^%s*(.*%S)' end if tmp == nil then error(modulename .. ', ‘call_for_each_group’: No template name was provided', 0) end local model = { title = tmp } local opts, ret, nss, ccs = {}, {}, 0, ctx.itersep or '' for key, val in pairs(ctx.pipe) do if type(key) == 'number' then opts[key - 1] = val else opts[key] = val end end ctx.pipe = opts ctx.params = make_groups(ctx.params) flush_params(ctx, function (gid, group) for key, val in pairs(opts) do group[key] = val end group[0], model.args, ret[nss + 1], nss = gid, group, ccs, nss + 2 ret[nss] = ctx.frame:expandTemplate(model) end) finalize_and_return_concatenated_list(ctx, ret, nss, 2) return false end --[[ First-position-only modifiers ]]-- --------------------------------------- -- Syntax: #invoke:params|new|pipe to static_iface.new = function (child_frame) local ctx = context_new(child_frame) ctx.pipe = copy_or_ref_table(ctx.opipe, false) ctx.params = {} main_loop(ctx, context_iterate(ctx, 1)) return ctx.text end --[[ First-position-only functions ]]-- --------------------------------------- -- Syntax: #invoke:params|self static_iface.self = function (frame) return frame:getParent():getTitle() end --[[ Public metatable of functions ]]-- --------------------------------------- return setmetatable({}, { __index = function (_, query) local fname = query:match'^%s*(.*%S)' if fname == nil then error(modulename .. ': You must specify a function to call', 0) end local func = static_iface[fname] if func ~= nil then return func end func = library[fname] if func == nil then error(modulename .. ': The function ‘' .. fname .. '’ does not exist', 0) end return function (child_frame) local ctx = context_new(child_frame) ctx.pipe = copy_or_ref_table(ctx.opipe, refpipe[fname]) ctx.params = copy_or_ref_table(ctx.oparams, refparams[fname]) main_loop(ctx, func) return ctx.text end end }) jm8x5ug81bre69dpt2csm0n3owsmu2i Kofi Setordji 0 5424 62611 48860 2026-07-16T03:30:44Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62611 wikitext text/x-wiki {{Databox|item=Q3816136}} '''Kofi Setordji''' (dɔgebo yuoni la 1957) e la nu de maale boŋveɛle soba naŋ be a [[Ghana|Gaana]] paaloo poɔ. O toma kyaare ne fotori maaloo, boŋsuuri maaloo, boma maaloo aneŋ pentuu.<ref>[https://artzuid.nl/en/artzuid-artists/kofi-setordji/ "Kofi Setordji artist profile"]. ''ARTZUID''. Tage 2025-05-22.</ref><ref>[https://smocontemporaryart.com/artists/285-kofi-setordji/biography/ "Kofi Setordji - Biography"]. ''SMO Contemporary Art''. Tage 2025-05-22.</ref><ref name=":0">[https://web.archive.org/web/20241127012820/https://www.nubukefoundation.org/artist.php?artist=S2xtM2dkY2lWRkVGS3Z2YzRsOGJ6Zz09 "Kofi Setordji"]. ''Nubuke Foundation''. Tage 2025-05-22.</ref> == O sakuuri ane o toma == Ba dɔge la Setordji a yuoni 1957 a [[Accra|Aŋkaraa]] paaloo.<ref>Fall, N'Goné; Pivin, Jean Loup (2002). ''[https://books.google.com/books?id=aqZQAAAAMAAJ&q=kofi+setordji An Anthology of African Art: The Twentieth Century]''. D.A.P./Distributed Art Publishers. [[:en:Special:BookSources/978-1-891024-38-2|ISBN <bdi>978-1-891024-38-2</bdi>]].</ref><ref name=":1">''[https://books.google.com/books?id=n3TrAAAAMAAJ&q=kofi+setordji Revue noire]'' (in French). Publications Editions Bleu Outremer. 1999.</ref> O da gaayɛ a Mɛtɔdeese Sɛkɔndere Sakuuri a Aŋkaraa paaloo kyɛ leɛ gaa zanne nu toma bomaale. O da e la a Gaana deme bibiiri sini maala Ghanatta Yaw Boakye karɩmabie.<ref name=":2">[[doi:10.1162/AFAR_r_00125|"Kofi Setordji: Retrospective, 1997–2012"]]. ''African Arts''. '''47''' (1): 85–87. 2014-03-01. [[doi:10.1162/AFAR_r_00125]]. [[:en:ISSN_(identifier)|ISSN]] [https://search.worldcat.org/issn/0001-9933 0001-9933]. [[:en:S2CID_(identifier)|S2CID]] [https://api.semanticscholar.org/CorpusID:192974398 192974398].</ref> A yi yuomo 1984 wa tɔ 1987, Setordji da la e a Gaana deme boŋmaala aneŋ dɛndeɛnɛ ŋa baŋ naŋ boɔla Saka Acquaye.<ref name=":0" /><ref name=":1" /> O da piili tona la sandstone paaloo a yuoni 1985, kyɛ piili wuoro o boŋmaale waana a Accra paaloo wulo. O toma ŋa wuloo nyɛ la gyeremɛ yi paaloo mine, aŋa [[France|Farehe]], [[Italy|Itali]], [[Denmark|Dɛmak]], [[Germany|Gyaamani]], [[Austria|Ɔstoroleɛ]], [[South Africa|Saaf Afereka]] aneŋ a [[United States|Amɛreka]].<ref name=":0" /><ref name=":2" /> A yi o bomaale puoriŋ, Setordji e la nentegroo ko baapaaba naŋ be Accra paaloo. Ona la soba na naŋ waaneŋ ''Arthaus'', kpɛzie ko nu bʋomaale deme.<ref>Council, Ghana Studies (2008). ''[https://books.google.com/books?id=WQMOAQAAMAAJ&q=kofi+setordji Newsletter]''. Ghana Studies Council.</ref> A la yi lɛ ŋa puoriŋ, o la e la soba na naŋ paare maale [[Nubuke Foundation]] kyɛ la e a daarɛta koroo, bomaale zikpoŋ naŋ be a Accra paaloo.<ref>''[https://books.google.com/books?id=gJYnAQAAIAAJ&q=kofi+setordji African Business]''. IC Magazines. 2007.</ref><ref>[https://smocontemporaryart.com/artists/285-kofi-setordji/biography/ "Kofi Setordji - Biography"]. ''SMO Contemporary Art''. Retrieved 2022-04-02.</ref><ref>Lauer, Helen; Amfo, Nana Aba Appiah; Anderson, Jemima Asabea (2011). [https://books.google.com/books?id=uTUZ1y4HWocC&dq=kofi+setordji&pg=PA243 ''Identity Meets Nationality: Voices from the Humanities''.] African Books Collective. [[:en:ISBN_(identifier)|ISBN]] [[:en:Special:BookSources/978-9988-647-96-4|<bdi>978-9988-647-96-4</bdi>.]]</ref> == O toma mine == Setordji toŋ kpoŋ kaŋa la ''Genocide'', zikpoŋ ba naŋ maŋ biŋne boma (daare, kue, boŋzagele leɛ de maale ane pentiŋ) oŋ maale kyaare a 1994 [[Rwandan Genocide]].<ref>''[https://books.google.com/books?id=VD7rAAAAMAAJ&q=kofi+setordji African Arts]''. African Studies Center, University of California, Los Angeles. 2007.</ref><ref>''[https://books.google.com/books?id=enJDQwAACAAJ&q=kofi+setordji Genocide: Painting, Sculpture Installation : Kofi Setordji : National Museum, Barnes Road, Accra]''. National Museum. 1999.</ref><ref>Kidenda, Mary Clare; Kriel, Lize; Wagner, Ernst (2022-04-06). ''[https://books.google.com/books?id=pVZuEAAAQBAJ&dq=kofi+setordji&pg=PA250 Visual Cultures of Africa]''. Waxmann Verlag. [[:en:ISBN_(identifier)|ISBN]] <bdi>[[:en:Special:BookSources/978-3-8309-4523-9|978-3-8309-4523-9]]</bdi>.</ref><ref>Gatore, Gilbert (2012-10-04). ''[https://books.google.com/books?id=NH3MZK55ttMC&dq=kofi+setordji&pg=PR14 The Past Ahead]''. Indiana University Press. [[:en:ISBN_(identifier)|ISBN]] <bdi>[[:en:Special:BookSources/978-0-253-00950-0|978-0-253-00950-0]]</bdi>.</ref><ref>Baderoon, Gabeba (2006). ''[https://books.google.com/books?id=OohPAAAAMAAJ&q=kofi+setordji Contemporary Commonwealth]''. Council of Trustees of the National Gallery of Victoria. [[:en:ISBN_(identifier)|ISBN]] <bdi>[[:en:Special:BookSources/978-0-7241-0266-2|978-0-7241-0266-2]]</bdi>.</ref> O da maale la a toma a yi a yuomo 1998 aneŋ 2000 puoŋ. A toma te kyaare la bomaale gyamaa ta 300 ka zɔɔre zie zaa paare a toma poɔŋ. Ka a lomboriŋ ka lɔɔyɛre ku a dambo be.<ref>Woets, Rhoda (2010). [https://www.jstor.org/stable/20744863 "Comprehend the Incomprehensible: Kofi Setordji's Travelling Memorial of the Rwanda Genocide"]. ''African Arts''. '''43''' (3): [[doi:10.1162/afar.2010.43.3.52|52–63. doi:10.1162/afar.2010.43.3.52]]. [[:en:ISSN_(identifier)|ISSN]] [https://search.worldcat.org/issn/0001-9933 0001-9933]. [[:en:JSTOR_(identifier)|JSTOR]] [https://www.jstor.org/stable/20744863 20744863]. [[:en:S2CID_(identifier)|S2CID]] [https://api.semanticscholar.org/CorpusID:57572395 57572395]</ref> A Dakar [[Biennale]] yuoni 2000 poɔ la ka o toma ŋa da yi.<ref>[[doi:10.1080/09528820108576892|Silva, Bisi (December 2000). "Dak'Art 2000: The millennium biennale?"]]. ''Third Text''. '''14''' (53): 103–106. [[doi:10.1080/09528820108576892]]. [[:en:ISSN_(identifier)|ISSN]] [https://search.worldcat.org/issn/0952-8822 0952-8822]. [[:en:S2CID_(identifier)|S2CID]] [https://api.semanticscholar.org/CorpusID:147101662 147101662].</ref> Setordji bomaale kpoŋ kaŋa are la a [[National Theatre of Ghana]] a [[Accra|Accra]] paaloo poɔ. Yelizu ba naŋ ko a o toma ŋa la ''Entre Amies''.<ref>[https://www.modernghana.com/entertainment/23532/kofi-setordji-the-black-stars-of-ghana-art-district.html Dickersbach, Safia. "Kofi Setordji: The Black Stars of Ghana - Art District"]. ''Modern Ghana''. Retrieved 2025-05-22.</ref> == Kyɔɔtaare == Setordji nyɛ a Kyɔɔtaa kpoŋ ŋa baŋ boɔla ka Leisure Award Sculptor a yuoni 1990 Kyɔɔtaa poɔŋ.<ref name=":0" /> A yuoni 2018 poɔ, o da la nyɛ la a [[Rockefeller Foundation]]'s Bellagio Creative Arts Fellowship Kyɔɔtaa.<ref>[https://books.google.com/books?id=WrYzAQAAIAAJ&q=kofi+setordji Gordon, Mark (2009). ''Contemporary Europe Art Guide'']. Distributed Art Pub Incorporated. [[:en:ISBN_(identifier)|ISBN]] <bdi>[[:en:Special:BookSources/978-3-7757-2336-7|978-3-7757-2336-7]]</bdi>.</ref><ref>"[https://www.artforum.com/news/rockefeller-foundation-s-bellagio-fellowship-recipients-announced-21288 Artforum.com]". ''www.artforum.com''. Retrieved 2025-05-22.</ref> Setordji da la a yɛlɩju a [[Nubuke Foundation]] toma gbielibo a yuoni 2012.<ref name=":2" /> == Toma ŋmeyaare mine == * Prête-moi ton Rêve (Lend me your dream) 2019-2020<ref>"[https://artssummary.com/2019/07/11/the-travelling-exhibition-prete-moi-ton-reve-lend-me-your-dream-opened-in-casablanca-on-june-18-2019-and-closes-in-marrakesh-in-2020/ The travelling exhibition "Prête-moi ton rêve" (Lend me Your Dream) opened in Casablanca on June 18, 2019 and closes in Marrakesh in 2020]". ''Arts Summary''. 2019-07-11. Retrieved 2025-05-22.</ref><ref>Momentum, The Art (2020-12-02). [https://theartmomentum.com/kofi-setordji-telling-our-own-stories/ "Kofi Setordji: Telling Our Own Stories"]. ''The Art Momentum''. Retrieved 2025-05-22.</ref> * New Threads 2016<ref>[https://smocontemporaryart.com/exhibitions/34-new-threads/overview/ "New Threads | 10 October - 17 November 2016 - Overview".] ''SMO Contemporary Art''. Retrieved 2025-05-22.</ref> * Kunsthalle Wien Museumsquartier 2004-2005<ref>[https://kunsthallewien.at/en/exhibition/africa-screams/ "Africa Screams"]. ''Kunsthalle Wien''. Retrieved 2025-05-22.</ref> * [[Art Cologne]] 1996, [[Koelnmesse GmbH]] naŋ be [[Cologne]] a yuoni 1996<ref>ArtFacts. [https://artfacts.net/artist/kofi-setordji/7429 "Kofi Setordji | Artist"]. ''ArtFacts''. Retrieved 2025-05-22.</ref> == Sommo yizie == [[Category:Dagaare]] [[Category:Gaana deme bomaana]] [[Category:1957 dɔgebo]] [[Category:Nenvoe]] [[Category:Bomaana naŋ yi Accra]] 8utzc3t6cmr4fag7vmx63grnyqo295z Akyempem Tigiri 0 6153 62596 55646 2026-07-15T22:36:57Z InternetArchiveBot 38 Rescuing 2 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62596 wikitext text/x-wiki {{Databox|item=Q98608881}} '''Akyempem''' '''Tigiri''' e la yuoni gbuli zaa [[Tigre|tigiri]] [[Agona]] Traditional Area namine ane noba naŋ maŋ di a [[Ashanti Region|Ashanti Irigyiŋ]] poɔ, [[Ghana]].<ref>https://web.archive.org/web/20200922063251/https://www.ghana.travel/events-festivals/festivals/</ref> Gbɛɛ yaga ba maŋ di o la Sentɔmbare kyuu poɔ.<ref>https://www.easytrackghana.com/cultural-overview-ghana_festivals.php</ref><ref>https://web.archive.org/web/20210120100250/http://ghanaculturepolitics.com/list-of-festivals-in-ghana/</ref><ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref><ref>http://ghanareview.com/festivals2.html</ref> Wagere kaŋa meŋ o maŋ di la Ɔɔtoore poɔ.<ref>https://touringghana.com/festivals/</ref> == A tigiri diibu == A tigiri wagere, ba maŋ tuori de la sããba naŋ wa ka ba poŋ bondirii ne bonnyuuri ne ba. A noba maŋ su la sããkoŋ bonsuuri ane namine kpaaroŋ maŋ bebe la. Seɛre ane gaŋgarre ŋmeɛbo meŋ maŋ bebe la.<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> A tigiri wagere, ba maŋ maale la a bonfolo a tu sããkoŋ lesiri. [[Kaaloo]] meŋ maŋ bebe la ka ba naŋ puori a ŋmemɛ bareka ne zenlaanfeɛ ane ba baabo.<ref>https://tourghana.com/ghana-festivals/</ref> == Sommo Yizie == [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Mainpage]] [[Gbuli:Ghana]] [[Gbuli:Tigiri]] [[Gbuli:Africa]] [[Gbuli:West Africa]] [[Gbuli:Dagaare]] ic52qnen36k4nc348xs9hl4tja40xkw Marufatu Abiola Bawuah 0 6177 62614 60336 2026-07-16T04:46:42Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62614 wikitext text/x-wiki {{Databox|item=Q69625990}}'''Marufatu Abiola Bawuah''' (dɔgebo bebiri la 25 September 1968) eɛ Ghanaian ‘libi-yela ning-kpong ane yaagu daana . A yuoni 2014, o saa eɛ toma neŋkpong /‘karichi-kpong nang kaara a United Bank ko Africa, O da nyɛɛ kyɔɔtaare gyamaa yi o toma poɔ ka a mine e a 2016 Chartered Institute of Marketing Ghana Marketing Woman of the Year ane a Finance Personality ko a yuoni kyɔɔtaare .ang be a Ghana Accountancy ane Finance<ref>https://web.archive.org/web/20190905091933/https://www.myjoyonline.com/news/2019/january-14th/from-table-top-groundnut-seller-to-regional-ceo-of-uba-story-of-abiolambawuah.php</ref><ref>https://web.archive.org/web/20220406065438/https://www.pulse.com.gh/bi/lifestyle/meet-marufatu-abiola-bawuah-the-woman-who-went-from-being-a-table-top-groundnut/8fm7g7q</ref><ref>https://www.theafricareport.com/520/abiola-bawuah-people-power/</ref><ref>https://web.archive.org/web/20250222110017/https://thevaultzmag.com/profiles/as-with-the-butterfly-adversity-is-necessary-to-build-character-in-people-says-american-businessman-joseph-b-wirthlin/</ref><ref>https://www.ghanaweb.com/GhanaHomePage/business/UBA-Ghana-MD-Named-CIMG-Marketing-Woman-of-the-Year-2016-584097</ref>. == Karemmo Yeltare == Bawuah guolibu zie eɛ Aflao kyɛ o naŋ da gaa senia Haai Sakuuri a Achimota School<ref>https://yen.com.gh/121252-from-table-top-groundnut-seller-regional-ceo-uba-story-abiola-m-bawuah.html</ref>. A bezie ko a ‘wederoŋ toma , o taree daanhibu taabu jemaa yi a Harvard Business School, Columbia, University of New York, INSEAD ane Institut Villa Pierrefeu ang be Switzerland<ref>https://web.archive.org/web/20200519034037/https://thebftonline.com/2018/business/uba-appoints-abiola-bawuah-as-regional-ceo/</ref><ref>https://thecfomag.com/ubas-abiola-bawuah-now-cross-border-regional-ceo/</ref><ref>https://africaneyereport.com/uba-appoints-abiola-bawuah-as-regional-ceo-for-6-west-african-countries/</ref>. == maalebo == Pampana o iye a paaluu chief executive officer (CEO) ku United Bank for Africa, ung kaara paalihi ayuobe (6)a paahi Ghana, Benin, Burkina Faso, Côte d'Ivoire, Liberia ane Sierra Leone<ref>https://www.pulse.com.gh/ece-frontpage/international-womens-day-2018-50fromghana-a-celebration-of-50-awesome-ghanaian-women/7jxf2yl</ref>. == Toma == * Bawuah authored ''Chosen from the Darkness'' which is a memoir * She founded a non-profit organization called Aboala Bawuah Foundation == Yelsonne ane Kyɔɔtaare == * 1n 2016, she was honoured the Chartered Institute of Marketing Ghana (CIMG) Marketing Woman of the Year Award<ref>https://africaneyereport.com/uba-appoints-abiola-bawuah-as-regional-ceo-for-6-west-african-countries/</ref><ref>https://en.wikipedia.org/wiki/Marufatu_Abiola_Bawuah#cite_note-13</ref><ref>https://web.archive.org/web/20220406065435/https://kasapafmonline.com/2017/09/mtn-uba-ceos-crowned-2016-cimg-marketing-man-woman-of-the-year/</ref><ref>https://www.graphic.com.gh/business/business-news/mtn-uba-ceo-s-named-2016-cimg-marketing-personalities-of-the-year.html</ref> * She won the 2016 Finance Personality of the Year Award at the Ghana Accountancy and Finance. * Named as one of Africa's 50 Influential Women in business by the African Report in July 2018 * She awarded the EMY Awards Woman of the Year 2020<ref>https://web.archive.org/web/20200726053438/https://www.emyafrica.com/emyafrica-2020-winners/</ref> == Meŋɛ Nyɔvore == O kulee sie a dogi biihi bata <ref>https://www.graphic.com.gh/news/general-news/marufatu-abiola-bawuah-a-journey-of-perseverance-to-the-top.html</ref>. == Sommo Yizie == 3s69d8vugsr9x0wdvqnjq7vozo0bpp0 Emmanuel Addai (footballer) 0 6247 62606 58586 2026-07-16T01:12:50Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62606 wikitext text/x-wiki {{Databox|item=Q118867746}}'''Emmanuel Addai''' (dɔgebo daare la Aŋjelɩŋje bebe fara a yuoni 1 2001) [[Gaana]] bole ŋmɛla a ko [[Azerbaijan Premier League club Qarabağ.]]<ref>https://web.archive.org/web/20230814182244/https://www.adalcorcon.com/jugador/addai</ref> == Toma == [[Kumasi]] naŋ be a Gaana Paaluu poɔ la baŋ da dɔge o.<ref>https://web.archive.org/web/20230529070559/https://www.adalcorcon.com/noticia/el-extremo-emmanuel-addai-nuevo-refuerzo-para-el-alcorcon</ref> [[JMG Academy]] naŋ be [[Accra]] la ka Addai da di piili o toma. <ref>https://web.archive.org/web/20230814182245/https://as.com/futbol/emmanuel-addai-vestira-de-alfarero-tras-el-mercado-de-invierno-n/</ref> A poɔriŋ o da leɛ kpɛ [[French]] side FC 93 Bobigny a Aŋjelɩŋje kyuu yuoni 2021 poɔ.<ref>https://ghanasoccernet.com/ghanaian-youngster-emmanuel-addai-makes-ad-alcorcon-debut-in-win-over-deportivo-la-coruna</ref> O bole fara o da ŋmɛ la [[Championnat National]] naŋ paale ayi. O da die a goliri ayoɔbo.<ref>https://ghanasoccernet.com/ghanaian-forward-emmanuel-addai-delighted-with-promotion-to-la-liga-2-with-ad-alcorcon</ref> A 12 July 2022, Addai da maale nɔdegere ne [[Spanish Primera Federación side AD Alcorcón.]] <ref>https://web.archive.org/web/20230814182244/https://www.adalcorcon.com/noticia/emmanuel-addai-seguira-en-la-ad-alcorcon-una-temporada-mas-con-opcion-de-una-segunda-adicional</ref> O da die [[Deportivo de La Coruna]] goliri ata a Jɩmbete kyuu beri pie aneŋ anaare daare a yuoni 2023. <ref>https://www.marca.com/futbol/segunda-division/cronica/2023/08/14/64da5ed922601d7b0c8b45a3.html</ref> A 2024 Aŋjeleŋje kyuu a beri lezare aneŋ ata daare ka Addai da maale yuomo ayi nɔdegere ne [[Qarabag]].<ref>https://qarabagh.com/az/news/komandamizda-qanali-yarimmuedafieci/12919</ref> == Sommo Yuomo == rublf4eem04djzz3evw9l4mz41tcoxa Joburg Film Festival 0 6309 62608 56721 2026-07-16T02:46:21Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62608 wikitext text/x-wiki {{Databox|item=Q125601608}} A '''Joburg Film Festival''' ('''JFF''') e la a tendaa zaa tigiri naŋ taa diibu ko a tenne naŋ kɔlaage a Johannesburg, Gauteng, South Africa. == Yelkorɔ == Joburg Film Festival was naŋ da taa eebo a 2016.<ref>https://africultures.com/evenements/?no=50593</ref> Neŋ a COVID-19 baaloŋ zuiŋ, a 2021 and 2022 da ba tõɔ taa eebo.<ref>https://thecreativesnote.substack.com/p/the-joburg-film-festival-jff-returns-for-2024</ref> A 5th edition da nyɛ la eebo yi January 31 - February 5, 2023.<ref>https://africultures.com/evenements/?no=50593</ref> == Bigruu == Joburg Film Festival (JFF) e la a international annual film festival naŋ da taa eebo ko a tenne naŋ kɔlage a Johannesburg ("Joburg"), Gauteng, South Africa<ref>https://joburgfilmfestival.co.za/</ref>.<ref>https://www.imdb.com/event/ev0054485/2024</ref><ref>https://filmfreeway.com/joburgfilmfestival</ref> A tigiri nyɛ la sommbo yi South African satellite television broadcast company MultiChoice.<ref>https://web.archive.org/web/20161029091935/www.thebioscope.co.za/2016/10/21/the-joburg-film-festival-2016/</ref><ref>https://web.archive.org/web/20250823103621/https://joburg.co.za/joburg-film-festival-2019/</ref> == Kpaaroŋ sere == A tigiri da taa la a film screening schedule, naŋ e industry program neŋ panel discussions, yelyellee ane masterclasses, meŋ maŋ e educational youth program, a social event, ane a commercial content market JBX. == Kyɔɔtaɛ == A kyɛɔtaɛ da taa la mannoo a 2025 da la a Best Feature Film, Best African Film, Best Documentary ane Best Joburg Produced Film (a Joburg-based filmmakers yoŋ la da naŋ baŋ nyɛ a kyɔɔtaare ŋa).<ref>https://www.imdb.com/event/evJoburg</ref> == Dasaŋa kyɔɔtaa diribe == * Independent Feature 2023 - ''The Cloud and the Man'' (Manikbabur Megh) by Abhinandan Banerjee - Fiction 97 minutes. == Sommo Yizie == [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] ==Ziiri mine liŋkiri== * {{official website|joburgfilmfestival.co.za}} {{Authority control}} [[Category:Festivals in Johannesburg]] [[Category:Film festivals established in 2016]] [[Category:Film festivals in South Africa]] {{Africa-film-festival-stub}} nspzkvm1osyea5077c9zklwpdhjzt2s Apatwa Tigiri 0 6316 62598 57336 2026-07-15T23:00:02Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62598 wikitext text/x-wiki {{Databox|item=Q98558461}}'''Apatwa tigiri''' e la yuoni la yuoni zaa tigiri a namine naŋ be a Dixcove naŋ peɛle a Busua naŋ be a Western Region a Ghana paaloŋ poɔ. gbɛɛ yaga kyuure anii poɔ la ka ba maŋ di o.<ref>{{Cite web|title=Festivals Ghana - Easy Track Ghana|url=https://www.easytrackghana.com/cultural-overview-ghana_festivals.php|access-date=2020-08-22|website=www.easytrackghana.com}}</ref><ref>{{Cite web|date=2016-02-24|title=Festivals in Ghana|url=https://touringghana.com/festivals/|access-date=2020-08-22|website=touringghana.com|language=dga-GH}}</ref><ref>{{Cite web|title=The Consulate General Of The Republic of GHANA in The United Arab Emirates (Dubai)|url=https://www.ghanaconsulatedubai.com/tourism.html|access-date=2020-08-22|website=www.ghanaconsulatedubai.com}}</ref><ref>{{Cite web|title=GhanaReview International--- Ghana Tourism|url=http://ghanareview.com/festivals2.html|access-date=2020-08-22|website=ghanareview.com}}</ref><ref>{{Cite web|title=Ghana Festivals – Tour Ghana|url=https://tourghana.com/ghana-festivals/|access-date=2020-08-22|language=dga-GH}}{{bot=InternetArchiveBot |fix-attempted=yes }}</ref> == A tigiri diibu == A tigiri ŋa diibo poɔ saama naŋ maŋ wa bondirii ane daa la ka ba maŋ de tuori ne a saama. A noba maŋ su saakomboma. A tigiri ŋa zie seɛre ane gaŋga ŋmɛ maŋ bebe.<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> == Tɔna == A tigiri ŋa maŋ di la, ka ka ba leɛ teɛre yelkoro naŋ e pare.<ref>https://web.archive.org/web/20200815054207/https://ghanaconsulatedubai.com/tourism.html</ref> ==Sommo Yizie== [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] jm43zk7r6h163vt28iwn0ef17oek87c Ahobaa Tigiri 0 6394 62595 56751 2026-07-15T22:26:36Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62595 wikitext text/x-wiki {{Databox|item=Q98557763}} '''Ahobaa Tigiri''' e la yuoni zaa tigiri Enyan-Kakraba naa ne o noba naŋ dire a zɛŋ peɛle yaaroŋ zie a Centra Region paaloŋ a Gaana poɔ. Doɔbo kyuu poɔ la ka ba maŋ di a tigiri ŋa.<ref>{{Cite web|title=How Well Do You Know The Festivals In Ghana?|url=https://www.businessghana.com/|access-date=2020-08-22|website=BusinessGhana}}</ref><ref>{{Cite web|title=The Consulate General Of The Republic of GHANA in The United Arab Emirates (Dubai)|url=https://www.ghanaconsulatedubai.com/tourism.html|access-date=2020-08-22|website=www.ghanaconsulatedubai.com}}</ref><ref>{{Cite web|title=GhanaReview International--- Ghana Tourism|url=https://ghanareview.com/festivals2.html|access-date=2020-08-22|website=ghanareview.com}}</ref><ref>{{Cite web|title=Ghana Festivals – Tour Ghana|url=https://tourghana.com/ghana-festivals/|access-date=2020-08-22|language=dga-GH}}{{|bot=InternetArchiveBot |fix-attempted=yes }}</ref><ref>{{Cite web|title=Festivals – Slutchtours|url=http://www.slutchtours.com/?page_id=21|access-date=2020-08-22|language=dga-GH|archive-date=2021-01-18|archive-url=https://web.archive.org/web/20210118192700/http://www.slutchtours.com/?page_id=21}}</ref> == A Tigiri Daare == A tigiri bebiri, tuori de la a saama a poŋ ba daa ane bondirii. A naa ne o noba maŋ su la ba saaŋkompare bonsuuri kyɛ seɛrɛ ane boŋŋmɛrɛ lelaare a ziezaa<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> == A tigiri tɔnɔ == A tigiri ŋa maŋ di la ka ba naa nyɛ a ba kpeemɛ ane a teŋɛ bonfolo tɔnɔ.<ref>https://touringghana.com/festivals/</ref> ==Sommo Yizie== [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] 166yf5ngb91w6hij1ad5rvu8ls9xjvb Adikanfo Tigiri 0 6395 62593 57364 2026-07-15T22:14:23Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62593 wikitext text/x-wiki {{Databox|item=Q98608849}} Adikanfo tigiri e la yuoni la yuoni zaa tigiri '''Hwidiem''' Naa ne o noba naŋ maŋ di '''[[Ahafo Region|Ahafo Irigyiŋ]]''' be la ka ba da boɔlɔ ka '''Bronŋ Ahafo''' paaloŋ a '''[[Ghana|Gaana]]''' poɔ.<ref>http://ghanastatebook.com/hwidiem-stake-book.html</ref> Gbɛɛ yaga Kpankyaa kyuu<ref>https://www.easytrackghana.com/cultural-overview-ghana_festivals.php</ref> poɔ la ka ba maŋ di a tigiri ŋa kyɛ nobamine meŋ yeli ka Toloŋ kyuu bee kɛkɛŋmɛ kyuu poɔ la ka ba maŋ di o.<ref name=":0">http://www.s158663955.websitehome.co.uk/ghanaculture/mod_print.php?sectionid=532</ref> == A Tigiri Bebiri == A tigiri ŋa bebiri maŋ tuori de la a saama naŋ wa a tigiri a poŋ ba bondirii ane daa. A Naa ne o noba maŋ su la saaŋkompare bonsuuri, a yi be meŋ seɛrɛ ne gaŋgaɛ yɔre la a ziezaa.<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> A lɛ puoriŋ ba maŋ ko la donne a maale bɔgere a ko a ba ŋmemɛ ane a kpeemɛ.<ref name=":0" /> == A Tigiri Tɔnɔ == A tigiri ŋa maŋ di la ka ba leɛ teɛre yɛlɛ naŋ e pare.<ref>https://web.archive.org/web/20200815054207/https://ghanaconsulatedubai.com/tourism.html</ref> A tigiri ŋa diibu maŋ wuli lɛ ana ta ka Hwidiem noba zo bee wuo yi Denkyira Ntomu a wa zɛŋ a be baŋ naŋ zɛŋ pampana.<ref name=":0" /> ==Sommo Yizie== [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] 9pcf17zaa96pryj3na89iqcb05ilw50 Afringi Tigiri 0 6398 62594 57365 2026-07-15T22:19:54Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62594 wikitext text/x-wiki {{Databox|item=Q98683535}} Afringi tigiri e la tigiri '''Yeji paaloŋ''' naa ne o noba naŋ maŋ di '''[[Bono East Region|Bono East rigion]]''' be la ka da boɔlɔ ka '''Brong Ahafo Region a Gaana''' poɔ. A tigiri ŋa a teŋɛ Ŋmemɛ ane Kpeemɛ la maŋ wuli daare na a tigiri naŋ na di.<ref>http://www.s158663955.websitehome.co.uk/ghanaculture/mod_print.php?sectionid=532</ref> <ref>https://www.blastours.com/west-africa-travel-destinations/regions-of-ghana/ghana-festivals/52-afringi-festival</ref> == A Tigiri Bebiri == A tigiri ŋa diibu daare bee bebiri, ba maŋ tuori de la a saama naŋ maŋ wa a tigiri zie, a poŋ ba bondirii ane daa. A noba maŋ su la saaŋkompare bonsuuri, seɛre ane gaŋgaa ŋmeɛbo maŋ bebe.<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> == A Tigiri Tɔnɔ == A tigiri ŋa diibu maŋ di la ka o wuli yɛlɛ naŋ da e pare.<ref>https://web.archive.org/web/20200815054207/https://ghanaconsulatedubai.com/tourism.html</ref> A tigiri maŋ wa ne la nɔlaŋ ko a teŋɛ noba. A tigiri ŋa diibu wagere maŋ wuli la saaŋpare yeltuuri a yuoni poɔ, kyɛ meŋ lɛ wuli lɛ a teŋyuobu yeltuuri.<ref>https://blastoursghana.com/ghana-festivals/</ref> ==Sommo Yizie== [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] nxcwb8jmfdiyzpo242y9hcu2imnv58p Bombei Tigiri 0 6439 62604 57344 2026-07-15T23:49:42Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62604 wikitext text/x-wiki {{Databox|item=Q98558338}} '''Bombei''' '''Tigiri''' (Yam Festival) e la yuoni gbuli zaa bonde tigiri Ekyem Kofi naŋ peɛle Sekondi a [[Western Region|Western Irigyiŋ]] poɔ, [[Ghana]], namine ane noba naŋ maŋ di. Gbɛɛ yaga o maŋ di la Gyoonnoɔre kyuu poɔ.<ref>{{Cite web|date=2016-02-24|title=Festivals in Ghana|url=https://touringghana.com/festivals/|access-date=2020-08-22|website=touringghana.com|language=dga-GH}}</ref><ref>{{Cite web|title=The Consulate General Of The Republic of GHANA in The United Arab Emirates (Dubai)|url=https://www.ghanaconsulatedubai.com/tourism.html|access-date=2020-08-22|website=www.ghanaconsulatedubai.com}}</ref><ref>{{Cite web|title=GhanaReview International--- Ghana Tourism|url=http://ghanareview.com/festivals2.html|access-date=2020-08-22|website=ghanareview.com}}</ref><ref>{{Cite web|title=Ghana Festivals – Tour Ghana|url=https://tourghana.com/ghana-festivals/|access-date=2020-08-22|language=dga-GH}}{{bot=InternetArchiveBot |fix-attempted=yes }}</ref><ref>{{Cite web|title=Festivals – Slutchtours|url=http://www.slutchtours.com/?page_id=21|access-date=2020-08-22|language=dga-GH|archive-date=2021-01-18|archive-url=https://web.archive.org/web/20210118192700/http://www.slutchtours.com/?page_id=21}}</ref> == A tigiri Diibu == A tigiri diibu wagere, sori maŋ yuo la ko saamba ka ba na wa poŋ bondirii ane bonnyuuri ko taa. A noba maŋ su la sããkoŋ bonsuuri ane namine kpaaroŋ vinviŋ maŋ bebe la. Seɛre ane gaŋgarre ŋmeɛbo meŋ maŋ bebe la.<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> == Tɔna == A tigiri ŋa maŋ di la na teɛre yɛlɛ naŋ daŋ e pare.<ref>https://web.archive.org/web/20200815054207/https://ghanaconsulatedubai.com/tourism.html</ref> == Sommo Yizie == [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] 5l7z7ua9qvji2wmb07697fd39234ci6 Ayerye Tigiri 0 6440 62602 57341 2026-07-15T23:23:52Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62602 wikitext text/x-wiki {{Databox|item=Q98704484}} '''Ayerye''' '''Tigiri''' e la yuoni gbuli zaa tigiri Akyemfo Nankesedo noba a Nkusukum Traditional Area naŋ be [[Saltpond]] a [[Central Region|Central Irigyiŋ]] poɔ, [[Ghana]], namine ane noba naŋ maŋ di.<ref name=":0">https://allafrica.com/stories/201310301419.html</ref><ref>http://ghheadlines.com/agency/all-africanews--ghana/20131030/558452/akyemfo-nankesedo-ayerye-festival-</ref><ref>https://www.businessghana.com/</ref> Gbɛɛ yaga o maŋ di la Nyɔgevenne kyuu poɔ.<ref>https://www.ghanaweb.com/GhanaHomePage/NewsArchive/Saltpond-Bakado-To-Celebrate-Ayerye-Festival-223561</ref><ref>https://blastoursghana.com/ghana-festivals/</ref><ref>http://www.s158663955.websitehome.co.uk/ghanaculture/mod_print.php?sectionid=534</ref> A Ekumfi Narkwa noba meŋ dire la a tigiri ŋa.<ref>https://web.archive.org/web/20240626120404/https://m.peacefmonline.com/pages/politics/politics/201112/83255.php</ref> A Enyam-Maim noba meŋ dire la a tigiri ŋa.<ref>https://web.archive.org/web/20210118192700/http://www.slutchtours.com/?page_id=21</ref> == A tigiri diibu == A tigiri diibu wagere, sori maŋ yuo la ko saamba ka ba na wa poŋ bondirii ane bonnyuuri ko taa. A noba maŋ su la sããkoŋ bonsuuri ane namine kpaaroŋ vinviŋ maŋ bebe la.<ref>https://www.myjoyonline.com/news/nduom-expresses-worry-about-the-pace-of-development-in-the-central-region/</ref><ref>https://www.graphic.com.gh/news/politics/use-freedom-of-speech-responsibly-mfantseman-mp.html</ref> Seɛre ane gaŋgarre ŋmeɛbo meŋ maŋ bebe la.<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> == Tɔna == A tigiri ŋa maŋ di la na teɛre yɛlɛ naŋ daŋ e pare.<ref>https://web.archive.org/web/20200815054207/https://ghanaconsulatedubai.com/tourism.html</ref> O meŋ maŋ la di la na eŋ ba sããkommine naŋ zɔɔ ko ba a yi Ghana Empire te tɔ Techiman ane a puoriŋ zie ba naŋ ziŋ pampana saŋa na ba naŋ wa di dɔgɛɛ nyu ba zu kõɔ.<ref name=":0" /> O meŋ maŋ la leɛ teɛre la a noba kyaare ba laŋyiri ka o e la forifori yi nembeɛ eŋɛ ane ka a seŋ ka ba kaara velaa.<ref>https://www.ghanaweb.com/GhanaHomePage/entertainment/Saltpond-Bakado-Ayerye-Festival-slated-for-November-30-223658</ref> == Sommo Yizie == [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] 7x0dhey2i6xhipc5bjaljd7fr5ay27l Awubia Tigiri 0 6441 62601 57340 2026-07-15T23:19:47Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62601 wikitext text/x-wiki {{Databox|item=Q98801407}} '''Awubia''' '''Tigiri''' e la yuoni gbuli zaa tigiri Awutu Traditional Area a Awutu Bereku naŋ be [[Central Region|Central Irigyiŋ]] poɔ, [[Ghana]], namine ane noba naŋ maŋ di.<ref>https://www.graphic.com.gh/news/general-news/the-awubia-festival-a-celebration-of-history-and-identity.html</ref><ref>https://web.archive.org/web/20220626014247/https://skyypowerfm.com/mtn-ghana-supports-awutu-awubia-festival-assures-of-supporting-30-more-traditional-festivities/</ref><ref>https://www.ghanaweb.com/GhanaHomePage/NewsArchive/Awutus-Mark-Awubia-Festival-1735</ref><ref>https://citinewsroom.com/2019/09/awutu-traditional-council-rebukes-ndc-communicator/</ref> A teŋɛ be la a [[Awutu Senya desekyere]] poɔ. Gbɛɛ yaga o maŋ di la Ɔɔgore te tɔ Sentɔmbare kyuu.<ref>https://blastoursghana.com/ghana-festivals/</ref><ref>https://www.graphic.com.gh/news/general-news/people-of-awutu-celebrate-awubia-festival-2.html</ref> A tigiri meŋ e la Awutu Awubia Tigiri.<ref>https://web.archive.org/web/20200114231307/http://24news.news/2018/09/08/awutu-awubia-festival-scenes/</ref> == A tigiri diibu == A tigiri diibu wagere, sori maŋ yuo la ko saamba ka ba na wa poŋ bondirii ane bonnyuuri ko taa. A noba maŋ su la sããkoŋ bonsuuri ane namine kpaaroŋ vinviŋ maŋ bebe la. Seɛre ane gaŋgarre ŋmeɛbo meŋ maŋ bebe la.<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> == Tɔna == A tigiri ŋa maŋ di la na teɛre yɛlɛ naŋ daŋ e pare.<ref>https://web.archive.org/web/20200815054207/https://ghanaconsulatedubai.com/tourism.html</ref> O duoro la dagerekɔlkya kyakya soŋ a noba laŋkpeɛbo poɔ ane korɔ ba noɔreyeni. O meŋ manna la a koɔbo vuo baaroo ane dagerekɔlkya boŋkoɔre deebo wagere vuo.<ref>https://web.archive.org/web/20181007081554/http://www.blastours.com/west-africa-travel-destinations/regions-of-ghana/ghana-festivals/66-awubia-festival</ref> Ba la yeli ka o meŋ maŋ di la na leɛ teɛre kũũni yɛlɛ.<ref>https://www.modernghana.com/news/485996/the-awubia-festival-a-celebration-of-history.html</ref><ref>https://tourghana.com/ghana-festivals/</ref> == Sommo Yizie == [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] g7jnpz0razzjvov46qw85yggw4qw707 Apour Tigiri 0 6442 62600 57338 2026-07-15T23:01:22Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62600 wikitext text/x-wiki {{Databox|item=Q98802078}} '''Apoo''' '''Tigiri''' e la yuoni gbuli zaa tigiri Nwoase ane Wenchi Traditional Area, a Nwoase ane Nsawkwa naŋ be [[Bono Region|Bono Irigyiŋ]], naŋ da daŋ e Brong Ahafo irigyiŋ, [[Ghana]], namine ane noba naŋ maŋ di.<ref>https://web.archive.org/web/20210811153900/https://www.nhoc.gov.gh/festivals</ref> Gbɛɛ yaga o maŋ di la Mɛnoɔre bee Gyoone kyuu Nsawkaw poɔ, Nyɔgevenne bee Disembare kyuu Nwoase teŋɛ poɔ ane Mɛnoɔre bee Gyoone kyuu Wenchi poɔ.<ref>https://blastoursghana.com/ghana-festivals/</ref> == A tigiri diibu == A tigiri diibu wagere, sori maŋ yuo la ko saamba ka ba na wa poŋ bondirii ane bonnyuuri ko taa.<ref>https://web.archive.org/web/20200815054207/https://ghanaconsulatedubai.com/tourism.html</ref> A noba maŋ su la sããkoŋ bonsuuri ane namine kpaaroŋ vinviŋ maŋ bebe la. Seɛre ane gaŋgarre ŋmeɛbo meŋ maŋ bebe la.<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> == Tɔna == A tigiri ŋa maŋ di la na teɛre yɛlɛ naŋ daŋ e pare. O maŋ di la na leɛ teɛre a noba yelfaare korɔ eebo zageroo.<ref>http://www.s158663955.websitehome.co.uk/ghanaculture/mod_print.php?sectionid=532</ref><ref>https://web.archive.org/web/20180520124122/http://www.blastours.com/west-africa-travel-destinations/regions-of-ghana/ghana-festivals/63-apour-festival</ref> == Sommo Yizie == [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] tigl6rxdt2zztgu5x1n04in5a9k2717 Apiba Tigiri 0 6443 62599 57337 2026-07-15T23:00:32Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62599 wikitext text/x-wiki {{Databox|item=Q98557799}} '''Apiriba''' '''Tigiri''' e la yuoni gbuli zaa tigiri Senya Beraku, Guan teŋɛ koroo kaŋa naŋ be a [[Central Region|Central Irigyiŋ]] poɔ, [[Ghana]], namine ane noba naŋ maŋ di. Gbɛɛ yaga o maŋ di la Gyoone kyuu poɔ. O maŋ wullo la kamaana fɔrɔ deebo piiluu ba naŋ bore Mɛnoɔre poɔ.<ref>https://www.easytrackghana.com/cultural-overview-ghana_festivals.php</ref><ref>https://touringghana.com/festivals/</ref><ref>https://tourghana.com/ghana-festivals/</ref><ref>https://web.archive.org/web/20210118192700/http://www.slutchtours.com/?page_id=21</ref><ref>https://www.businessghana.com/</ref> == A tigiri diibu == A tigiri diibu wagere, lesiri seemaa naŋ maŋ be o toɔraa ka ba boɔlɔ mpotoroba maŋ maale la yi unleaven kamaana mɔle ne abɛ kãã. O maŋ di la yi ba gbɛre baloŋ ba naŋ boɔlɔ Seye bee prama, gaa o tɔ. Sori maŋ yuo la ko saamba ka ba na wa poŋ bondirii ane bonnyuuri ko taa. A noba maŋ su la sããkoŋ bonsuuri ane baloŋ mɛmbare ane nemberɛ lambo maŋ bebe la. Seɛre ane gaŋgarre ŋmeɛbo meŋ maŋ bebe la.<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> == Tɔna == A tigiri ŋa maŋ di la na teɛre yɛlɛ naŋ daŋ e pare.<ref>https://web.archive.org/web/20200815054207/https://ghanaconsulatedubai.com/tourism.html</ref> == Sommo Yizie == [[Gbuli:Dagaare]] [[Gbuli:Ghana]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:mainpage]] [[Gbuli:West Africa]] [[Gbuli:tigiri]] [[Gbuli:Afirika tige]] 5nhl85oddu4r9e0teujrzw0ykp07b0k Bagri Tigiri 0 7025 62603 61701 2026-07-15T23:29:33Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62603 wikitext text/x-wiki {{databox|item=Q98684579}} '''Bagri Tigri''' e la yuoni zaa tigri ŋa namine neŋ noba naŋ yi Jirapa, Lawra ne Nandom naŋ maŋ dire a Upper West irigyin naŋ be a Gaana poɔ. Ba maŋ di la a tigri ŋa April kyuu poɔ te ta January kyuu poɔ.<ref>[https://web.archive.org/web/20180520125734/http://www.blastours.com/west-africa-travel-destinations/regions-of-ghana/ghana-festivals/68-bagri-festival "Bagri Festival"] www.blastours.com. Archived from [https://www.blastours.com/west-africa-travel-destinations/regions-of-ghana/ghana-festivals/68-bagri-festival the original] on 2018-05-20. Retrieved 2020-08-27.</ref><ref>[http://www.s158663955.websitehome.co.uk/ghanaculture/mod_print.php?sectionid=530 "National Commission on Culture - Ghana - Upper West Region"]. ''www.s158663955.websitehome.co.uk''. Retrieved 2020-08-27.</ref> == Diibu == A Tigri ŋa wagre, saamma maŋ nyɛ la bondirii neŋ bonnyuurii. A noba maŋ su la lesiri kparre ka namine meŋ laŋ. Boŋŋmeɛre neŋ seɛre maŋ be be la.<ref>[https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals "Major Festivals"] www.ghanaembassyiran.com. Retrieved 2020-08-21</ref> == Tɔna == A tigri diibu maŋ wullo la yele naŋ e yuomo naŋ pare.<ref>[https://web.archive.org/web/20200815054207/https://ghanaconsulatedubai.com/tourism.html "The Consulate General Of The Republic of GHANA in The United Arab Emirates (Dubai)"]. ''www.ghanaconsulatedubai.com''. Archived from [https://www.ghanaconsulatedubai.com/tourism.html the original] on 2020-08-15. Retrieved 2020-08-21.</ref> A tigri maŋ la wullo la yele ne a Bagri deme naŋ maŋ e. A Bagri ŋa e la yuori a ko noba mine naŋ laŋ taa a taa sagediibu kaŋa naŋ vɛŋ ka ba yeni. A Bagri meŋ maŋ pɛge la o noba a yi yelfaarre poɔ.<ref>[https://blastours.com/home/2-uncategorised/68-bagri-festival "Bagri Festival"] blastours.com. Retrieved 2020-08-27</ref> == Sommo Yizie == [[Gbuli:Culture connect Africa 2026]] [[Gbuli:Dagaare]] [[Gbuli:Tigiri]] [[Gbuli:west Africa]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:Mainpage]] [[Gbuli:Ghana]] [[Gbuli:Tige]] dxj7v4ee9jtf5d7fjhf6u7tytqnvqyo Daa Tigiri 0 7057 62605 62382 2026-07-16T00:21:25Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62605 wikitext text/x-wiki {{databox|item=Q98636636}} '''Daa Tigiri''' e la yuoni zaa tigiri Talensi noba gaŋ a zaa a Baare ane Tong Nayiri naŋ peɛle [[Bolgatanga]] a [[Upper East Region|Ɔpa Isi irigyin]] poɔ naŋ maŋ di [[Ghana]] poɔ<ref name=":0">https://www.a1radioonline.com/5552/daa-festival-celebration-hits-a-climax-with-tampana-dance/index.html</ref>. Ba maŋ di o la Ɔɔtoore kyuu poɔ<ref>https://www.easytrackghana.com/cultural-overview-ghana_festivals.php</ref><ref>https://www.ghanaweb.com/GhanaHomePage/entertainment/Citizens-of-Baare-celebrate-Daa-festival-93313</ref><ref>https://www.graphic.com.gh/entertainment/citizens-of-baare-celebrate-daa-festival.html</ref> == Diibu == A tigiri diibu saŋa, ba maŋ tuori de la saama ka ba pɔŋ bondirii ane dãã. A noba maŋ su la lisire bonsuuri kyɛ ka namine lantaa. Tamana seɛre ne gaŋga ŋmɛ<ref>https://web.archive.org/web/20200926072838/http://ghanaembassyiran.com/en/page/majorfestivals</ref> meŋ maŋ bebe. Ba taa la lɛ ba naŋ maŋ su ba bonsuuri naŋ wulo ba lisiri ane lɛ ba saakommine naŋ yi ziiri kyɛ wa zeŋ zie na ba naŋ be pampana<ref name=":0" />. == Tɔna == A tigiri maŋ de la ka ba wuli lɛ ba bonkɔɔre naŋ maale seŋ lɛ a yuoni zaa poɔ kyɛ la puori a ŋmɛmɛ bareka ne a teŋɛ emmaaroŋ<ref>https://www.modernghana.com/entertainment/1426/citizens-of-baare-celebrate-daa-festival.html</ref>. == Sommo Yizie == [[Gbuli:Culture connect Africa 2026]] [[Gbuli:Dagaare]] [[Gbuli:Tigiri]] [[Gbuli:west Africa]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:Mainpage]] [[Gbuli:Ghana]] [[Gbuli:Tige]] q1nv9elxezfrylowgfg6qwmbv3e1ulc Kamyshin Watermelon Festival 0 7236 62610 62246 2026-07-16T03:10:08Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62610 wikitext text/x-wiki {{databox|item=Q4211938}} A '''Kamyshin Watermelon''' '''tigiri''' (Russian: Камышинский арбузный фестиваль) e la yuoni zaa Russian nimipɛle tigiri naŋ maŋ di Kamyshin teŋɛ a Volgograd Oblast poɔ. O naŋ yi ne a Moscow teŋɛ bebiri tigiri, a tigiri maŋ di la a teŋɛ dogebo bebiri a August kyuu baaraa saga a Watermelons, ka noba baŋ ne o ka o e a teŋɛ watermelon tenkpoŋ. <ref>http://eventsinrussia.com/en/event/20384</ref> <ref>https://www.rbth.com/document/5a2a553f85600a6f9410ddd3/amp</ref>Lamaale, dewulibo ane boma kɔɔroo maŋ be la a tenne zaa poɔ a bebiri na zaa a lane maakyio, ane sori zu seɛbo. == Dakoroŋ == A tigiri bebe a yi a dakoroŋ mannoo na naŋ da e a yuoni 1722 poɔ, be ka Peter naŋ da gaa a teŋɛ a wagere na a Dmitrievsk yuori saga. A o be gaabo poɔ, o gaabo da yi la tɔna yaga o naŋ da wa di a ba teŋɛ wɔɔtamɛlɔ baare.<ref>https://volgaland.volsu.ru/en/object/81</ref> A yuoni 2007 poɔ,a wɔɔtamɛlɔɔ tigiri dɛndɛnsoba, Business System Group ko a tontnoɔre la da maale o a Kamyshinka River a Borodino baa nimitɔɔre. Ka a tigiri tage noba naŋ pare kɔɔ lantaa ane saama a teŋɛ zaa. A yi 2008, a Administration ko a teŋɛ Kamyshin la da maŋ maale a tigiri. Kyakya paaleba ba naŋ la eŋ la kultaa deme a yuoni poɔ, ka ba da piili a kyakya ŋa a yuoni 2017<ref>https://web.archive.org/web/20221205215919/https://arbuzfest.ru/o_festivale/istorija_festivalja.aspx</ref>.<ref>http://www.admkamyshin.info/2011/09/14/itogi-iv-kamyshinskogo-arbuznogo-festivalya-zelo-otmennyj-plod.html</ref><ref>https://web.archive.org/web/20231116222210/http://kamyshinstar.ru/?p=171</ref><ref>https://web.archive.org/web/20140202092000/http://www.volgograd-trv.ru/news.aspx?id=16422</ref> == Organization == A yelnyɔgeraa ko a tigiri maŋ kyille la yuoni zaa, a yi a yelnyɔgeraa poɔ ko a tigiri.<ref>https://web.archive.org/web/20230223124814/https://arbuzfest.ru/o_festivale/predydushhie_festivali.aspx</ref> Nimipɛle noba maŋ poɔ la a Kamyshin Watermelon tigiri. A yi lɛ na noba naŋ maŋanne a yi 20 te ta 30 noba kɔɔ la maŋ gaa a tigiri, ka saama maŋ yi la Saratov, Moscow, Astrakhan, Krasnodar, ane tenne naŋ peɛle ane anaŋ naŋ e tɔbo (Ukraine, Kazakhstan, Germany, France). A saategeroŋ ko a tigiri la Governor ko Volgograd Oblast. A lantaa zie,a wɔɔtamɛlɔɔ arebo maŋ bene, ka noba naŋ ta 4,000 maŋ poɔ ka yaako boma maŋ ta 20 a maŋ wa wuli ba yaako ka noba da. Wɔɔtamɛlɔɔ naŋ baagere 60 ka ba.maŋ di wane a tigiri zie. A neɛ na naŋ maŋ benne a tigiri yelkɔrɔ la yeli ka wɔɔtamɛlɔɔ tegeroŋ da ta la 21.7 kg, ka o na la da nyɛ a a kyɔɔtaare a yuoni 2014 poɔ.<ref>https://web.archive.org/web/20260626170400/https://dacha.help/frukty-i-yagody/arbuznyy-festival-v-kamyshine-2019</ref> == Sommo yizie == [[Gbuli:Culture connect Africa 2026]] [[Gbuli:Dagaare]] [[Gbuli:Tigiri]] [[Gbuli:west Africa]] [[Gbuli:Gampɛlɛ zaa]] [[Gbuli:Africa]] [[Gbuli:Mainpage]] [[Gbuli:Ghana]] [[Gbuli:Tige]] 1g6tbsz73cn31f70h1lni538dgc6qs6 La Binerie Mont-Royal 0 7266 62612 62273 2026-07-16T04:11:39Z InternetArchiveBot 38 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 62612 wikitext text/x-wiki '''La Binerie Mont-Royal''' e la ŋmenaa bondimaali zie a Montreal, Quebec, Canada poɔ, ka ba maŋ maala Quebec saakonnoo bondirii a lanne bɛŋɛ.<ref>https://web.archive.org/web/20120314153817/http://www2.canada.com/montrealgazette/news/story.html?id=3868f345-f51b-4b2a-908f-5bba9639df6c</ref><ref name="Gazette" /> A bondirii ŋa da bebe a yuoni 1938 poɔ a Léonide Lussier, a bondimaale zie ŋa da e la Yves Beauchemin's selloo ane sini ka ba boɔlɔ ''The Alley Cat (Le Matou)'', ka ba da maale o sini a toma ŋa zie.<ref>http://www2.canoe.com/cgi-bin/imprimer.cgi?id=374184</ref><ref name="Canoe" /> A Jocelyne ane Philippe Brunet da da a yaako toma ŋa zie a yuoni 2005 poɔ, kyɛ ka o yaga zie ba kyilli. A lanne o bɛŋɛ kɔɔroo, a bondimaale zie ŋa maŋ poɔ la lisiri bondirii mine ka ana la tourtières, Pâté chinois, pouding chômeur, pea zeɛre ane spruce dãã .<ref>https://web.archive.org/web/20250123175129/https://ici.radio-canada.ca/info/videos/media-8168462/binerie-mont-royal-demenage</ref><ref name="voir" /> A bondimaale zie ŋa da be la a 367 east, Avenue du Mont-Royal, a Plateau Mont-Royal teŋkpoŋ poɔ kyɛ kaara a {{date|2019-08-31|MDY}}. O da leɛ wa yaare la a yuoni 2019 poɔ a Saint-Denis sori naŋ peɛle Rachel street.<ref>https://www.journaldemontreal.com/2019/07/28/une-institution-de-la-gastronomie-quebecoise-demenage</ref> == Sommo yizie == 0gxs81rovzy1d6524dpcgt24ph8yvyt