Wikipedia cebwiki https://ceb.wikipedia.org/wiki/Unang_Panid MediaWiki 1.47.0-wmf.12 first-letter Medya Espesyal Hisgot Gumagamit Hisgot sa Gumagamit Wikipedia Hisgot sa Wikipedia Payl Hisgot sa Payl MediaWiki Hisgot sa MediaWiki Plantilya Hisgot sa Plantilya Tabang Hisgot sa Tabang Kategoriya Hisgot sa Kategoriya TimedText TimedText talk Module Module talk Event Event talk Bukidnon 0 1499 37024650 37024042 2026-07-24T08:15:57Z ~2026-40891-54 146565 /* Pisikal */ 37024650 wikitext text/x-wiki {{ihubad}} {{Infobox lalawigan sa Pilipinas| infoboxtitle=Lalawigan sa Bukidnon| sealfile=[[Payl:Ph_seal_bukidnon.png]]| rehiyon=[[Amihanang Mindanao]] (Region X)| capital=[[Dakbayan sa Malaybalay]]| founded=[[Marso 10]], [[1917]]| pop2000=1,060,265| pop2000rank=ika-24 sa kinadak-an| popden2000=128| popden2000rank=ika-22 sa kinagamay| areakm2=8,293.8| arearank=ika-6 sa kinadak-an| mga dakbayang kina-urbanisado=0| mga nahisakpang dakbayan=2| mga lungsod=20| mga barangay=464| mga distrito=3| mga pinulongan=[[Binisaya]], [[Tinagalog]], [[Inilonggo]], [[Binukid]], [[Inilokano]]| gobernador='''[[Jose Ma. R. Zubiri]]'''| locatormapfile=[[Image:Ph_locator_map_bukidnon.png]]}} Ang '''Bukidnon''' usa sa mga lalawigan sa [[Amihanang Mindanao]] sa [[Pilipinas]]. Ang ulohan o kapital niini maoy ang [[Dakbayan sa Malaybalay]]. ==Kataw'han ug Kultura ==Heyograpiya== ===Politikal=== Kaluhaan (20) ka lungsod ug duha (2) ka dakbayan ang nahisakpan sa Bukidnon. <center> {| class="wikitable sortable" cellpadding=2 cellspacing=2 |- bgcolor=#cccccc ! colspan=1 | [[Dakbayan]]/[[Lungsod]] !! Date of Creation !! Arya(km²) !! Populasyon(</br>[[2000]]) !! Pop. Density</br>(per km²) |- || [[Baungon, Bukidnon|Baungon]] || July 1, 1956 || 175.86 || 26,695 || 152 |- || [[Cabanglasan, Bukidnon|Cabanglasan]] || August 13, 1979 || 209.00 || 32,305 || 154 |- || [[Damulog, Bukidnon|Damulog]] || August 16, 1971 || 245.66 || 20,332 || 83 |- || [[Dangcagan, Bukidnon|Dangcagan]] || August 29, 1961] || 115.15 || 18,857 || 164 |- || [[Don Carlos, Bukidnon|Don Carlos]] || June 18, 1966 || 157.02 || 55,495 || 353 |- || [[Impasug-Ong, Bukidnon|Impasug-ong]] || Sept. 1, 1914 || 1,071.67 || 31,173 || 29 |- || [[Kadingilan, Bukidnon|Kadingilan]] || August 16, 1971 || 172.06 || 25,858 || 150 |- || [[Kalilangan, Bukidnon|Kalilangan]] || June 18, 1966 || 153.59 || 30,592 || 199 |- || [[Kibawe, Bukidnon|Kibawe]] || July 1, 1956 || 214.35 || 32,955 || 154 |- || [[Kitaotao, Bukidnon|Kitaotao]] || June 18, 1966 || 150.74 || 37,733 || 250 |- || [[Lantapan, Bukidnon|Lantapan]] || June 18, 1966 || 240.76 || 42,383 || 176 |- || [[Libona, Bukidnon|Libona]] || July 1, 1956 || 244.95 || 33,273 || 136 |--style="background:#ccccff" || [[Dakbayan sa Malaybalay]] || March 23, 1998 || 984.38 || 123,672 || 126 |- || [[Malitbog, Bukidnon|Malitbog]] || June 25,1963 || 260.53 || 19,315 || 74 |- || [[Manolo Fortich, Bukidnon|Manolo Fortich]] || June 21, 1957 || 506.64 || 74,252 || 146 |- || [[Maramag, Bukidnon|Maramag]] || July 1, 1956 || 351.72 || 75,233 || 214 |- || [[Pangantucan, Bukidnon|Pangantucan]] || June 25, 1963 || 343.34 || 43,202 || 126 |- || [[Quezon, Bukidnon|Quezon]] || June 18, 1966 || 409.41 || 82,567 || 20 |- || [[San Fernando, Bukidnon|San Fernando]] || June 18, 1966 || 638.63 || 40,165 || 63 |- || [[Sumilao, Bukidnon|Sumilao]] || July 1, 1956 || 207.49 || 17,958 || 86 |- || [[Talakag, Bukidnon|Talakag]] || 1917 || 833.70 || 48,326 || 58 |- || [[Dakbayan sa Valencia, Bukidnon|Dakbayan sa Valencia]] || January 12, 2001 || 607.13 || 147,924 || 244 |} </center> Gigikanan: ''Provincial Planning & Development Office, Province of Bukidnon'', ''National Statistics Office, 2000 Census of Population'', ''Department of Finance (DOF)'' ====Mga Dakbayan==== *[[Dakbayan sa Malaybalay]] *[[Dakbayan sa Valencia, Bukidnon|Dakbayan sa Valencia]] ====Mga Lungsod==== <table border="0"><tr> <td valign="top"> *[[Baungon, Bukidnon|Baungon]] *[[Cabanglasan, Bukidnon|Cabanglasan]] *[[Damulog, Bukidnon|Damulog]] *[[Dangcagan, Bukidnon|Dangcagan]] *[[Don Carlos, Bukidnon|Don Carlos]] *[[Impasug-Ong, Bukidnon|Impasug-Ong]] *[[Kadingilan, Bukidnon|Kadingilan]] *[[Kalilangan, Bukidnon|Kalilangan]] *[[Kibawe, Bukidnon|Kibawe]] *[[Kitaotao, Bukidnon|Kitaotao]] </td><td valign="top"> *[[Lantapan, Bukidnon|Lantapan]] *[[Libona, Bukidnon|Libona]] *[[Malitbog, Bukidnon|Malitbog]] *[[Manolo Fortich, Bukidnon|Manolo Fortich]] *[[Maramag, Bukidnon|Maramag]] *[[Pangantucan, Bukidnon|Pangantucan]] *[[Quezon, Bukidnon|Quezon]] *[[San Fernando, Bukidnon|San Fernando]] *[[Sumilao, Bukidnon|Sumilao]] *[[Talakag, Bukidnon|Talakag]] </td></tr></table> ===Pisikal=== ==Mga Medya== *HH Radio 1233 kHz [[Valencia, Bukidnon]] (DXHH-AM; ABJ Broadcasting Services) ==Impormasyon sa Gawas== * [http://www.bukidnon.gov.ph/ Gobyerno sa Probinsya sa Bukidnon] == Mga Reperensya == {{reflist|2}} {{Bukidnon}} {{Amihanang Mindanao}} [[Kategoriya:Mga Lalawigan sa Pilipinas]] {{pilipinas-saha}} ch6kd3v69dhaeuzzpoowomhp40a6phc 37024651 37024650 2026-07-24T08:53:10Z Font8388608 138245 Fix 37024651 wikitext text/x-wiki {{ihubad}} {{Infobox lalawigan sa Pilipinas| infoboxtitle=Lalawigan sa Bukidnon| sealfile=[[Payl:Ph_seal_bukidnon.png]]| rehiyon=[[Amihanang Mindanao]] (Region X)| capital=[[Dakbayan sa Malaybalay]]| founded=[[Marso 10]], [[1917]]| pop2000=1,060,265| pop2000rank=ika-24 sa kinadak-an| popden2000=128| popden2000rank=ika-22 sa kinagamay| areakm2=8,293.8| arearank=ika-6 sa kinadak-an| mga dakbayang kina-urbanisado=0| mga nahisakpang dakbayan=2| mga lungsod=20| mga barangay=464| mga distrito=3| mga pinulongan=[[Binisaya]], [[Tinagalog]], [[Inilonggo]], [[Binukid]], [[Inilokano]]| gobernador='''[[Jose Ma. R. Zubiri]]'''| locatormapfile=[[Image:Ph_locator_map_bukidnon.png]]}} Ang '''Bukidnon''' usa sa mga lalawigan sa [[Amihanang Mindanao]] sa [[Pilipinas]]. Ang ulohan o kapital niini maoy ang [[Dakbayan sa Malaybalay]]. ==Kataw'han ug Kultura== ==Heyograpiya== ===Politikal=== Kaluhaan (20) ka lungsod ug duha (2) ka dakbayan ang nahisakpan sa Bukidnon. <center> {| class="wikitable sortable" cellpadding=2 cellspacing=2 |- bgcolor=#cccccc ! colspan=1 | [[Dakbayan]]/[[Lungsod]] !! Date of Creation !! Arya(km²) !! Populasyon(</br>[[2000]]) !! Pop. Density</br>(per km²) |- || [[Baungon, Bukidnon|Baungon]] || July 1, 1956 || 175.86 || 26,695 || 152 |- || [[Cabanglasan, Bukidnon|Cabanglasan]] || August 13, 1979 || 209.00 || 32,305 || 154 |- || [[Damulog, Bukidnon|Damulog]] || August 16, 1971 || 245.66 || 20,332 || 83 |- || [[Dangcagan, Bukidnon|Dangcagan]] || August 29, 1961] || 115.15 || 18,857 || 164 |- || [[Don Carlos, Bukidnon|Don Carlos]] || June 18, 1966 || 157.02 || 55,495 || 353 |- || [[Impasug-Ong, Bukidnon|Impasug-ong]] || Sept. 1, 1914 || 1,071.67 || 31,173 || 29 |- || [[Kadingilan, Bukidnon|Kadingilan]] || August 16, 1971 || 172.06 || 25,858 || 150 |- || [[Kalilangan, Bukidnon|Kalilangan]] || June 18, 1966 || 153.59 || 30,592 || 199 |- || [[Kibawe, Bukidnon|Kibawe]] || July 1, 1956 || 214.35 || 32,955 || 154 |- || [[Kitaotao, Bukidnon|Kitaotao]] || June 18, 1966 || 150.74 || 37,733 || 250 |- || [[Lantapan, Bukidnon|Lantapan]] || June 18, 1966 || 240.76 || 42,383 || 176 |- || [[Libona, Bukidnon|Libona]] || July 1, 1956 || 244.95 || 33,273 || 136 |--style="background:#ccccff" || [[Dakbayan sa Malaybalay]] || March 23, 1998 || 984.38 || 123,672 || 126 |- || [[Malitbog, Bukidnon|Malitbog]] || June 25,1963 || 260.53 || 19,315 || 74 |- || [[Manolo Fortich, Bukidnon|Manolo Fortich]] || June 21, 1957 || 506.64 || 74,252 || 146 |- || [[Maramag, Bukidnon|Maramag]] || July 1, 1956 || 351.72 || 75,233 || 214 |- || [[Pangantucan, Bukidnon|Pangantucan]] || June 25, 1963 || 343.34 || 43,202 || 126 |- || [[Quezon, Bukidnon|Quezon]] || June 18, 1966 || 409.41 || 82,567 || 20 |- || [[San Fernando, Bukidnon|San Fernando]] || June 18, 1966 || 638.63 || 40,165 || 63 |- || [[Sumilao, Bukidnon|Sumilao]] || July 1, 1956 || 207.49 || 17,958 || 86 |- || [[Talakag, Bukidnon|Talakag]] || 1917 || 833.70 || 48,326 || 58 |- || [[Dakbayan sa Valencia, Bukidnon|Dakbayan sa Valencia]] || January 12, 2001 || 607.13 || 147,924 || 244 |} </center> Gigikanan: ''Provincial Planning & Development Office, Province of Bukidnon'', ''National Statistics Office, 2000 Census of Population'', ''Department of Finance (DOF)'' ====Mga Dakbayan==== *[[Dakbayan sa Malaybalay]] *[[Dakbayan sa Valencia, Bukidnon|Dakbayan sa Valencia]] ====Mga Lungsod==== <table border="0"><tr> <td valign="top"> *[[Baungon, Bukidnon|Baungon]] *[[Cabanglasan, Bukidnon|Cabanglasan]] *[[Damulog, Bukidnon|Damulog]] *[[Dangcagan, Bukidnon|Dangcagan]] *[[Don Carlos, Bukidnon|Don Carlos]] *[[Impasug-Ong, Bukidnon|Impasug-Ong]] *[[Kadingilan, Bukidnon|Kadingilan]] *[[Kalilangan, Bukidnon|Kalilangan]] *[[Kibawe, Bukidnon|Kibawe]] *[[Kitaotao, Bukidnon|Kitaotao]] </td><td valign="top"> *[[Lantapan, Bukidnon|Lantapan]] *[[Libona, Bukidnon|Libona]] *[[Malitbog, Bukidnon|Malitbog]] *[[Manolo Fortich, Bukidnon|Manolo Fortich]] *[[Maramag, Bukidnon|Maramag]] *[[Pangantucan, Bukidnon|Pangantucan]] *[[Quezon, Bukidnon|Quezon]] *[[San Fernando, Bukidnon|San Fernando]] *[[Sumilao, Bukidnon|Sumilao]] *[[Talakag, Bukidnon|Talakag]] </td></tr></table> ===Pisikal=== ==Mga Medya== *HH Radio 1233 kHz [[Valencia, Bukidnon]] (DXHH-AM; ABJ Broadcasting Services) ==Impormasyon sa Gawas== * [http://www.bukidnon.gov.ph/ Gobyerno sa Probinsya sa Bukidnon] == Mga Reperensya == {{reflist|2}} {{Bukidnon}} {{Amihanang Mindanao}} [[Kategoriya:Mga Lalawigan sa Pilipinas]] {{pilipinas-saha}} 6s9zefc0tijlcpprfs3jb0y32fuumps Arbus, Pransiya 0 8976 37024645 36047273 2026-07-24T03:51:58Z Ziv 111351 ([[c:GR|GR]]) [[c:COM:Duplicate|Duplicate]]: [[File:Arbus.jpg]] → [[File:Arbus (1024x768).jpg]] Exact or scaled-down duplicate: [[c::File:Arbus (1024x768).jpg]] 37024645 wikitext text/x-wiki {{Komyun sa Pransiya |ngalan=Arbus |ngalang_pranses=Arbus |rehiyon=[[Nouvelle-Aquitaine]] |departamento=[[Pyrénées-Atlantiques]] |latityud=43° 20' N |longhitud=0° 30' O |gihabogon=&nbsp; |langyab=13,99 |molupyo=965 |tuig=1999 |densidad=69 |insee=64037 |cap=64230 |nahimutangan=&nbsp;}} Ang '''Arbus''' usa ka [[komyun]] sa [[Pransiya]]. Kini may 965 ka molupyo ug nahimutang sa departamento sa [[Pyrénées-Atlantiques]] sa rehiyon sa [[Nouvelle-Aquitaine]]. == Galeriya sa hulagway == <gallery> Arbus (1024x768).jpg Arbus_vue_4.JPG Eglise_d'Arbus_vue_3.JPG </gallery> [[Kategoriya:Mga komyun sa departamento sa Pyrénées-Atlantiques]] [[Kategoriya:Mga komyun sa rehiyon sa Nouvelle-Aquitaine]] irv9hnyhbavl60gvuwx80rzk1fmc2ix Nasod nga Swiss 0 35989 37024595 29565663 2026-07-23T19:43:00Z Fixer88 28406 new key for [[Category:Nasod nga Swiss]]: " " using [[Help:Gadget-HotCat|HotCat]] 37024595 wikitext text/x-wiki [[Payl:Coat of Arms of Switzerland (Pantone).svg|right|150px]] [[Payl:Flag of Switzerland (Pantone).svg|right|200px]] Nasod ang '''Panaghugpong nga Swiss''' ([[Kinatsila]]: ''Con·fe·de·ra·ción sui·za''; [[Ininggles]]: ''Swiss Confederation''; [[Inaleman]]: ''Schweizerische Eidgenossenschaft''; [[Prinanses]]: ''Confédération suisse''; [[Initalyano]]: ''Confederazione Svizzera'', [[Rinomantse]]: ''Confederaziun svizra''; [[Linatin]]: ''Confoederatio Helvetica'') o '''Helvetiya''' (Kinatsila: ''Sui·za'') nga adunay 7.5 ka milyon nga populasyon sa sentral nga rehiyon sa Kasadpang [[Uropa]]. Kini gitaliwad-an sa [[Alemanya]], [[Pransiya]], [[Italya]], [[Austriya]] ug [[Liechtenstein]]. Daghag-lenggwahe ang Nasod nga Swiss — upat ang opsiyal niyang lenggwahe: [[Inaleman]], [[Prinanses]], [[Initalyano]] ug [[Romansh]]. Ang Helvetiya nabahin ngadto sa 26 ka kanton, unom niini usahay tawagon nga "''katungang-kanton''" tungod kay mas gamay ang ilang representasyon sa Konseho sa mga Estado. Nailhan ang Helvetiya sa iyang kasaysayan sa iyang pagka-way-gidapigan (wala ni maapil o moapil og gubat sugod niadtong 1815) mao nga daghang kapunungang internasyonal, sama sa [[Hiniusang mga Nasod]] o ''United Nations'', nga bisa'g naka-sentro sa [[Dakbayan sa New York|New York]] adunay mga departamento sa Helvetiya. [[Berna|Bern]] ang iyang kasamtangan nga dakbayan nga nahimutangan sa mga ulohang sanga sa iyang kagamhanan apan wala kini ilhang ''de jure'' nga kaulohan kundili ''de facto'' lang sanglit giisip man ang nasod nga panaghugpong sa nagkadaiyang kanton nga iya-iya og kaulohang dakbayan. Dili miyembro sa [[Unyon sa Uropa]] ang Helvetiya. {{Nasod-saha}} [[Kategoriya:Nasod nga Swiss| ]] pzxpy8lhwdh0n3s88dsbpw1597bqr1u Kategoriya:Mga subdibisyon sa Pransiya 14 37311 37024599 2013496 2026-07-23T19:51:08Z Fixer88 28406 +[[Kategoriya:Mga subdibisyon sa nasud]]; ±[[Kategoriya:Pransiya]]→[[Kategoriya:Heyograpiya sa Pransiya]] using [[Help:Gadget-HotCat|HotCat]] 37024599 wikitext text/x-wiki [[Kategoriya:Heyograpiya sa Pransiya]] [[Kategoriya:Mga subdibisyon sa nasud|Pransiya]] trahulo614zk00ohunzps8ijz2v7ozs Kategoriya:Mga subdibisyon sa Pilipinas 14 37671 37024582 34840698 2026-07-23T19:17:51Z Fixer88 28406 new key for [[Category:Mga subdibisyon sa nasud]]: "Pilipinas" using [[Help:Gadget-HotCat|HotCat]] 37024582 wikitext text/x-wiki {{Commons|Category:Subdivisions of the Philippines|Mga subdibisyon sa Pilipinas}} [[category:Pilipinas|Subdibisyon]] [[Kategoriya:Mga subdibisyon sa nasud|Pilipinas]] 8boal72v2jtrrgofghq1e2xt31jbcis Kategoriya:Anime 14 38946 37024556 37020269 2026-07-23T13:45:07Z Shrekiolous 144427 added [[Category:Haponng karton nga pelikula]] using [[Help:Gadget-HotCat|HotCat]] 37024556 wikitext text/x-wiki {{Commons|Category:Anime|Anime}} {{catmore}} [[Kategoriya:Kultura sa Hapon]] [[Kategoriya:Animasyon]] [[Kategoriya:Haponng karton nga pelikula]] n4udc027zev21y3tr2omdq7ornw7lbz 37024558 37024556 2026-07-23T13:46:57Z Shrekiolous 144427 added [[Category:Haponng karton nga seryeng pantelebisyon]] using [[Help:Gadget-HotCat|HotCat]] 37024558 wikitext text/x-wiki {{Commons|Category:Anime|Anime}} {{catmore}} [[Kategoriya:Animasyon]] [[Kategoriya:Kultura sa Hapon]] [[Kategoriya:Haponng karton nga pelikula]] [[Kategoriya:Haponng karton nga seryeng pantelebisyon]] pvrw64oi72bj4tp8m2gbxtmx7nuv9oc Kategoriya:Mga subdibisyon sa Italya 14 44727 37024581 34840695 2026-07-23T19:17:21Z Fixer88 28406 new key for [[Category:Mga subdibisyon sa nasud]]: "Italya" using [[Help:Gadget-HotCat|HotCat]] 37024581 wikitext text/x-wiki {{Commons|Category:Subdivisions of Italy|Mga subdibisyon sa Italya}} [[Kategoriya:Italya|Subdibisyon]] [[Kategoriya:Mga subdibisyon sa nasud|Italya]] phhgotzyzpxqij8chqjs3kpoqs7jb5a Inglatera 0 56845 37024628 32568516 2026-07-23T20:23:02Z Fixer88 28406 +[[Kategoriya:Mga subdibisyon sa Hiniusang Gingharian]]; +[[Kategoriya:Inglatera]] using [[Help:Gadget-HotCat|HotCat]] 37024628 wikitext text/x-wiki [[Payl:Flag_of_England.svg|thumb|right|]] Aipak-nasd ang '''Inglatera''' kun '''England''' sa [[Hiniusang Gingharian]] (''United Kingdom''). May kayutaanong utlanan kini sa [[Eskotya]] (''Scotland'') sa amihanan ug sa [[Gales]] (''Wales'') sa kasadpan; [[Dagat Irlandanhon]] sa norweste, [[Dagat Seltiko|Dagat Keltinhon]] sa surweste ug sa [[Dagat Amihanan]] sa sidlakan ug ang [[Kanal La Mancha]] sa habagatan. [[Kategoriya:Inglatera| ]] [[Kategoriya:Hiniusang Gingharian]] [[Kategoriya:Mga subdibisyon sa Hiniusang Gingharian]] trrdk3ddhwhnmzgn2r69gf2ixzz1u0q Tokyo 0 2794204 37024564 23455227 2026-07-23T13:57:46Z Fixer88 28406 /* Ang mga gi basihan niini */ 37024564 wikitext text/x-wiki {{geobox | 1 = Settlement <!-- *** Header *** --> | name = Tokyo | native_name = 東京 | other_name = 东京 | category = Ulohang dakbayan | etymology = | official_name = 東京都 | motto = | nickname = <!-- *** Image *** --> | image = | image_caption = <!-- *** Symbols *** --> | flag = | symbol = | symbol_type = <!-- *** Admin *** --> | country = {{flag|Hapon}} | country_flag = | state = [[Tōkyō-to]] | state_type = Prepektura | region = [[Shinjuku-ku]] | region_type = Distrito | district = | district_type = | municipality = | municipality_type = <!-- *** Associated with *** --> | part = | landmark = | river = <!-- *** Location *** --> | location = | elevation = 44 | lat_d = 35.6895 | lat_m = | lat_s = | lat_NS = | long_d = 139.69171 | long_m = | long_s = | long_EW = | highest = | highest_note = | highest_elevation = | highest_elevation_note = | lowest = | lowest_note = | lowest_elevation = | lowest_elevation_note = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | area = | area_decimals = | area_land = | area_land_decimals = | area_water = | area_water_decimals = | area_urban = | area_urban_decimals = | area_metro = | area_metro_decimals = | area_municipal = | area_municipal_decimals = <!-- *** Population *** --> | population = 8336599 | population_date = 2016-06-22 | population_note = <ref name = "gn1850147"/> | population_urban = | population_urban_date = | population_urban_note = | population_metro = | population_metro_date = | population_metro_note = | population_municipal = | population_municipal_date = | population_municipal_note = | population_density = | population_density_note = | population_urban_density = | population_urban_density_note = | population_metro_density = | population_metro_density_note = | population_municipal_density = | population_municipal_density_note = <!-- *** People *** --> | population1 = | population1_type = | population2 = | population2_type = | population3 = | population3_type = <!-- *** History and politics *** --> | established = | established_type = | date = | date_type = | government = | government_location = | government_region = | government_state = | mayor = | mayor_party = | leader = | leader_type = <!-- *** Codes *** --> | timezone = [[Japan Standard Time|JST]] | utc_offset = +9 | timezone_DST = | utc_offset_DST = | postal_code = | postal_code_type = | area_code = | area_code_type = | code = | code_type = | code1 = | code1_type = <!-- *** Free *** --> | free = TYO | free_type = [[IATA]] | free1 = | free1_type = <!-- *** Maps *** --> | map = | map_caption = | map_locator = | map_locator_x = | map_locator_y = <!-- *** Website *** --> | website = <!-- *** Notes *** --> | footnotes = | timezone_label = Asia/Tokyo | geonames = 1850147 }} Ang '''Tokyo''' ([[Hinapones]]: 東京 ''Tōkyō'') sa usa prepektura sa [[Hapon]] mga iyang [[kapital]] ka kapopud-ang [[nasod]] sa [[Sidlakang Asya]]. Ang Tokyo nahimutang sa distrito sa <!--ADM2-->[[Shinjuku-ku]] ug prepektura sa <!--ADM1-->[[Tōkyō-to]], sa habagatan-sidlakang bahin sa nasod. {{formatnum:44}} metros ibabaw sa dagat kahaboga ang nahimutangan sa Tokyo<ref name = "gn1850147"/>, ug adunay <!--pop-->{{formatnum:8336599}} ka molupyo.<ref name = "gn1850147"/> Ang yuta palibot sa Tokyo kay patag.{{efn|group=saysay|Kalkulado gikan sa pakigbingkil sa tanan nga gitas-on data (DEM 3") gikan sa Viewfinder Panoramas, sa sulod sa 10 ka kilometro radius.<ref name = "vp"/> Ang bug-os nga algoritmo anaa [https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framework/Lsjbot/Make-Geonames dinhi].}} Ang kinahabogang dapit sa palibot dunay gihabogon nga {{formatnum:146}} ka metro ug {{formatnum:20.0 }} km sa kasadpan sa Tokyo.{{efn|group=saysay|Kalkulado gikan sa gitas-on data (DEM 3") gikan sa Viewfinder Panoramas.<ref name = "vp"/> Ang bug-os nga algoritmo anaa [https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framework/Lsjbot/Make-Geonames dinhi].}} Dunay mga {{formatnum:8650}} ka tawo kada kilometro kwadrado sa palibot sa Tokyo may kaayo hilabihan populasyon.<ref name = "nasapop"/> Tokyo ang kinadak-ang lungsod sa maong dapit. Hapit nalukop sa [[kabalayan]] ang palibot sa Tokyo.<ref name = "nasalandcover"/> Sa rehiyon palibot sa Tokyo, mga kanal talagsaon komon.{{efn|group=saysay|Mas sulod sa 20 ka kilometro gilay-on itandi sa average nga densidad sa Yuta, sumala sa GeoNames.<ref name = "gn1850147"/>}} Ang klima [[umogon]] ug [[subtropikal]].<ref name = "koppen"/> Ang kasarangang giiniton {{formatnum:17}} [[°C]]. Ang kinainitan nga bulan Agosto, sa {{formatnum:26}}&nbsp;[[°C]], ug ang kinabugnawan Enero, sa {{formatnum:7}}&nbsp;°C.<ref name = "nasa"/> Ang kasarangang pag-ulan {{formatnum:1861}} milimetro matag tuig. Ang kinabasaan nga bulan Oktubre, sa {{formatnum:304}} milimetro nga ulan, ug ang kinaugahan Enero, sa {{formatnum:69}} milimetro.<ref name = "nasarain"/> {| |- |{{climate chart | Tokyo | 4| 10| 69 | 2| 12| 132 | 6| 16| 93 | 9| 21| 175 | 15| 28| 179 | 16| 28| 297 | 21| 29| 140 | 25| 27| 85 | 19| 29| 186 | 14| 22| 304 | 11| 17| 104 | 6| 12| 98 |float=left |clear=left |source = <ref name = "nasa"/> }} |} {{Location map|Japan |float = right |width=300 | caption = Nahimutangan sa Tokyo sa Hapon. | label = Tokyo|position=right|background=white|lat=35.6895|long=139.69171}} == Saysay == <references group="saysay"/> == Ang mga gi basihan niini == <references> <ref name = "gn1850147">[{{Geonameslink|gnid=1850147|name=tokyo}} Tokyo] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2016-06-22; database download sa 2017-02-07</ref> <ref name = "vp">{{Cite web |url= {{Viewfinderlink}}|title= Viewfinder Panoramas Digital elevation Model|date= 2015-06-21|format= }}</ref> <ref name = "nasapop">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/view.php?datasetId=SEDAC_POP|title= NASA Earth Observations: Population Density|access-date = 30 Enero 2016 |publisher= NASA/SEDAC}}</ref> <ref name = "nasalandcover">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/view.php?datasetId=MCD12C1_T1|title= NASA Earth Observations: Land Cover Classification|access-date = 30 Enero 2016 |publisher= NASA/MODIS}}</ref> <ref name = "koppen">{{cite journal |last= Peel|first= M C|last2= Finlayson|first2= B L|date= |title= Updated world map of the Köppen-Geiger climate classification| url = http://www.hydrol-earth-syst-sci.net/11/1633/2007/hess-11-1633-2007.html |journal= Hydrology and Earth System Sciences|publisher= |volume= 11|issue= |pages= 1633-1644|doi= 10.5194/hess-11-1633-2007|access-date=30 Enero 2016}}</ref> <ref name = "nasa">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/dataset_index.php|title= NASA Earth Observations Data Set Index|access-date = 30 Enero 2016 |publisher= NASA}}</ref> <ref name = "nasarain">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/view.php?datasetId=TRMM_3B43M|title= NASA Earth Observations: Rainfall (1 month - TRMM)|access-date = 30 Enero 2016 |publisher= NASA/Tropical Rainfall Monitoring Mission}}</ref> </references> [[Kategoriya:Tokyo| ]] [[Kategoriya:Mga lungsod sa Tōkyō-to]] [[Kategoriya:Mga lungsod sa Hapon nga mas dako pa kay sa 1,000,000 ka mga tawo]] 5e1mw8u076wwncalsdo2uh9t0ca3jxf Minecraft 0 2796421 37024575 34922879 2026-07-23T15:42:40Z Shrekiolous 144427 added [[Category:2011 nga mga dula]] using [[Help:Gadget-HotCat|HotCat]] 37024575 wikitext text/x-wiki Ang '''Minecraft''' mao ang usa ka duwa nga blokeng paguba ug pabutangan. Ang kini usa ka dagitabnong dula nga makinaugalingon nga gimugna sa Siniwedish programmer nga si Markus "Notch" Persson ug sa ulahi ug gipatik sa Swedish nga kompanya Mojang sukad [[2009]]. Ang mamugnaon ug sa pagtukod sa mga bahin sa Minecraft motugot sa mga magdudula sa pagtukod konstruksyon sa grano cubes sa usa ka 3D procedurally namugna nga kalibutan. Uban nga mga kalihokan sa duwa naglakip sa exploration, sa pagpundok sa mga kapanguhaan, paghimo, ug combat. Multiple gameplay paagi anaa na, lakip ang survival paagi diin ang mga magdudula kinahanglan sa pagbaton sa mga kapanguhaan sa pagtukod sa kalibutan ug sa pagpadayon sa panglawas, usa ka creative nga paagi diin ang mga players nga adunay walay kutub nga mga kapanguhaan sa pagtukod ug sa abilidad sa molupad, ug sa usa ka adventure mode diin ang mga players play batasan maps nga gimugna sa sa uban nga mga players. Minecraft story mode. {{dagitabnong-dula-saha}} [[Kategoriya:Mga dagitabnong dula]] [[Kategoriya:2011 nga mga dula]] 7klr8qwr74udl1ru70cy6joz2ycp5z4 Kategoriya:Heyograpiya sa Barheyn 14 2810512 37024583 24726755 2026-07-23T19:18:25Z Fixer88 28406 added [[Category:Heyograpiya sa Asya]] using [[Help:Gadget-HotCat|HotCat]] 37024583 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Barheyn]] [[Kategoriya:Barheyn]] [[Kategoriya:Heyograpiya sa Asya|Barheyn]] e5a86jm1xqryms4v34w1gfs2uhs26qn Kategoriya:Heyograpiya sa Amihanang Makedoniya 14 2817920 37024600 34797276 2026-07-23T19:52:59Z Fixer88 28406 new key for [[Category:Heyograpiya sa nasud]]: "Amihanang Makedoniya" using [[Help:Gadget-HotCat|HotCat]] 37024600 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Amihanang Makedoniya]] [[Kategoriya:Amihanang Makedoniya]] 3o9v9f622vbau0l3o0klzlg8n3ddczr 37024609 37024600 2026-07-23T20:03:15Z Fixer88 28406 added [[Category:Heyograpiya sa Uropa]] using [[Help:Gadget-HotCat|HotCat]] 37024609 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Amihanang Makedoniya]] [[Kategoriya:Amihanang Makedoniya]] [[Kategoriya:Heyograpiya sa Uropa|Amihanang Makedoniya]] d5cifvbqrrsicp0xy8gahl7hfg7m1rs Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo 14 2817969 37024601 34794856 2026-07-23T19:53:31Z Fixer88 28406 Fixer88 moved page [[Kategoriya:Heyograpiya sa Makedoniya sa munisipyo]] to [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] 34794856 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya]] e6lxcvopm8k2v18frsip94f3u0gt3ys Kategoriya:Heyograpiya sa Demir Hisar 14 2817976 37024619 25650823 2026-07-23T20:11:54Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024619 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] tgmgtpismw5cdb5xbtncxr6gtxp5kio Kategoriya:Heyograpiya sa Dolneni 14 2817992 37024623 25650830 2026-07-23T20:16:24Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024623 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] tgmgtpismw5cdb5xbtncxr6gtxp5kio Kategoriya:Heyograpiya sa Demir Kapija 14 2818120 37024621 25650827 2026-07-23T20:13:51Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024621 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] tgmgtpismw5cdb5xbtncxr6gtxp5kio Kategoriya:Heyograpiya sa Bogdanci 14 2818707 37024612 25650808 2026-07-23T20:06:29Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024612 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] tgmgtpismw5cdb5xbtncxr6gtxp5kio Kategoriya:Heyograpiya sa Ilinden 14 2820385 37024636 25650837 2026-07-23T20:29:50Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024636 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] tgmgtpismw5cdb5xbtncxr6gtxp5kio Kategoriya:Amerikanong pelikula 14 2843066 37024551 27714173 2026-07-23T13:38:21Z Shrekiolous 144427 ±[[Kategoriya:Tinipong Bansa]]→[[Kategoriya:Kultura sa Hiniusang mga Estado]]; ±[[Kategoriya:Pelikula]]→[[Kategoriya:Mga pelikula sa nasud]] using [[Help:Gadget-HotCat|HotCat]] 37024551 wikitext text/x-wiki [[Kategoriya:Kultura sa Hiniusang mga Estado]] [[Kategoriya:Mga pelikula sa nasud]] eoq0r1bqc9v7mzdhx42lrtar5k61p0v 37024553 37024551 2026-07-23T13:40:04Z Shrekiolous 144427 new key for [[Category:Kultura sa Hiniusang mga Estado]]: "Pelikula" using [[Help:Gadget-HotCat|HotCat]] 37024553 wikitext text/x-wiki [[Kategoriya:Kultura sa Hiniusang mga Estado|Pelikula]] [[Kategoriya:Mga pelikula sa nasud]] thz2bv0efj5o5evdhak1g3pkzc50r2n Kategoriya:Heyograpiya sa Demir Hisar (munisipyo) 14 2845548 37024620 34862777 2026-07-23T20:13:06Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024620 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Demir Hisar]] [[Kategoriya:Demir Hisar (munisipyo)]] in6nygbpduekojrcg64nzsal1vp69o9 Kategoriya:Heyograpiya sa Dolneni (munisipyo sa Makedoniya) 14 2845555 37024624 34862779 2026-07-23T20:17:26Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024624 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Dolneni]] [[Kategoriya:Dolneni (munisipyo sa Makedoniya)]] lpizkjul995bil0m0yx8x14jzn81drq Kategoriya:Heyograpiya sa Gostivar (munisipyo) 14 2845587 37024634 34862783 2026-07-23T20:28:31Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024634 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Gostivar]] [[Kategoriya:Gostivar (munisipyo)]] 9135esxa1rxhk8kt6i0oc22wndak68u Kategoriya:Heyograpiya sa Demir Kapija (munisipyo) 14 2845616 37024622 34862778 2026-07-23T20:14:33Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024622 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Demir Kapija]] [[Kategoriya:Demir Kapija (munisipyo)]] p7y5ina5vq3u49rwxzwo7fp51lowc45 Kategoriya:Heyograpiya sa Bitola (munisipyo) 14 2845626 37024605 34862769 2026-07-23T19:58:53Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024605 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Bitola]] [[Kategoriya:Bitola (munisipyo)]] ms39spqk5i17kzl6uz0g0wbvxlttva1 Kategoriya:Heyograpiya sa Brvenica (munisipyo) 14 2845653 37024615 34862773 2026-07-23T20:08:37Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024615 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Brvenica]] [[Kategoriya:Brvenica (munisipyo)]] e5tlj0vh7ova5kvejascmmjs8z0gl2o Kategoriya:Heyograpiya sa Gradsko (munisipyo) 14 2845663 37024635 34862784 2026-07-23T20:29:00Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024635 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Gradsko]] [[Kategoriya:Gradsko (munisipyo)]] qj4yj0m94re3g75dn8ogat72frp33l2 Kategoriya:Heyograpiya sa Debarca (munisipyo sa Makedoniya) 14 2845710 37024618 34862776 2026-07-23T20:11:30Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024618 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Debarca]] [[Kategoriya:Debarca (munisipyo sa Makedoniya)]] f5briz3i8k694718o0lz14uvr08quq9 Kategoriya:Heyograpiya sa Bogovinje (munisipyo) 14 2845757 37024613 34862771 2026-07-23T20:07:02Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024613 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Bogovinje]] [[Kategoriya:Bogovinje (munisipyo)]] o7atq2qicyl6f7rhrumgspj2uyc3dun Kategoriya:Heyograpiya sa Gevgelija (munisipyo) 14 2845865 37024626 34862782 2026-07-23T20:20:36Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024626 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Gevgelija]] [[Kategoriya:Gevgelija (munisipyo)]] szxmmz7khwlq1pnyzu57oqx9ppfi0f0 Kategoriya:Heyograpiya sa Bogdanci (munisipyo) 14 2845867 37024608 34862770 2026-07-23T20:00:59Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024608 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Bogdanci]] [[Kategoriya:Bogdanci (munisipyo)]] lsooci25o6snd0q0nr276dq8uwru8hp Kategoriya:Heyograpiya sa Bosilovo (munisipyo) 14 2845967 37024614 34862772 2026-07-23T20:07:49Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024614 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Bosilovo]] [[Kategoriya:Bosilovo (munisipyo)]] sgz2gvnn7flpapo70yimvikxxstthuc Kategoriya:Heyograpiya sa Berovo (munisipyo) 14 2845995 37024604 34862768 2026-07-23T19:58:13Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024604 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Berovo]] [[Kategoriya:Berovo (munisipyo)]] 8647x9a8nu4js7zh4k3okqglsb4ebtw Kategoriya:Heyograpiya sa Aerodrom (munisipyo sa Makedoniya) 14 2846270 37024603 34862767 2026-07-23T19:54:23Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024603 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Aerodrom]] [[Kategoriya:Aerodrom (munisipyo sa Makedoniya)]] frrkokzxpa0lzo037iiebi013zg0w4n Kategoriya:Heyograpiya sa Ilinden (munisipyo) 14 2846272 37024637 34862785 2026-07-23T20:30:35Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024637 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Ilinden]] [[Kategoriya:Ilinden (munisipyo)]] 2lgowquku9oiak9tgqix1jb98v1uclh Kategoriya:Heyograpiya sa Debar (munisipyo) 14 2846473 37024617 34862775 2026-07-23T20:10:51Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024617 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Debar]] [[Kategoriya:Debar (munisipyo)]] s4fgn646wrd5gir7b7wtksrb14t27f9 Kategoriya:Heyograpiya sa Drugovo (munisipyo sa Makedoniya) 14 2846612 37024625 34862780 2026-07-23T20:18:12Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024625 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Drugovo]] [[Kategoriya:Drugovo (munisipyo sa Makedoniya)]] tfzfusnvs0l68ec8grcuo9u6cx00lmy Kategoriya:Heyograpiya sa Butel (munisipyo) 14 2847017 37024616 34862774 2026-07-23T20:10:17Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024616 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Butel]] [[Kategoriya:Butel (munisipyo)]] qhjza8bh8n8mzpencqmq2gjuckxp75z Kategoriya:Heyograpiya sa Gazi Baba (munisipyo sa Makedoniya) 14 2847499 37024606 34862781 2026-07-23T20:00:02Z Fixer88 28406 removed [[Category:Heyograpiya sa Makedoniya sa munisipyo]]; added [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] using [[Help:Gadget-HotCat|HotCat]] 37024606 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] [[Kategoriya:Gazi Baba (munisipyo sa Makedoniya)]] c41rk5f90birbcyobswepyja9y5uj8i 37024607 37024606 2026-07-23T20:00:12Z Fixer88 28406 new key for [[Category:Heyograpiya sa Amihanang Makedoniya sa munisipyo]]: "Gazi Baba" using [[Help:Gadget-HotCat|HotCat]] 37024607 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo|Gazi Baba]] [[Kategoriya:Gazi Baba (munisipyo sa Makedoniya)]] 0507zdfx89b2ukeckkax1ckx3zhwuc7 Kategoriya:Heyograpiya sa Nasod nga Afghano 14 3387920 37024585 25842606 2026-07-23T19:25:58Z Fixer88 28406 +[[Kategoriya:Heyograpiya sa nasud]]; +[[Kategoriya:Heyograpiya sa Asya]] using [[Help:Gadget-HotCat|HotCat]] 37024585 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Nasod nga Afghano]] [[Kategoriya:Heyograpiya sa nasud|Nasod nga Afghano]] [[Kategoriya:Heyograpiya sa Asya|Nasod nga Afghano]] iv6m0eq3tvf3gyh7eczj2l7kceb9yyf Kategoriya:Heyograpiya sa Alemanya 14 3782732 37024598 7308025 2026-07-23T19:48:06Z Fixer88 28406 added [[Category:Heyograpiya sa Uropa]] using [[Help:Gadget-HotCat|HotCat]] 37024598 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Alemanya]] [[Kategoriya:Alemanya]] [[Kategoriya:Heyograpiya sa Uropa|Alemanya]] evkzbxccandxlr9wh2tb49w7kgu9mwv Kategoriya:Heyograpiya sa Nasod nga Swiss 14 4061997 37024594 27671785 2026-07-23T19:41:52Z Fixer88 28406 added [[Category:Heyograpiya sa Uropa]] using [[Help:Gadget-HotCat|HotCat]] 37024594 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Nasod nga Swiss]] [[Kategoriya:Nasod nga Swiss]] [[Kategoriya:Heyograpiya sa Uropa|Nasod nga Swiss]] s8yykzsunvcrvj0cwehefgafryonr57 Kategoriya:Heyograpiya sa Nasod nga Czech 14 4198423 37024586 16753959 2026-07-23T19:27:09Z Fixer88 28406 new key for [[Category:Heyograpiya sa nasud]]: "Nasod nga Czech" using [[Help:Gadget-HotCat|HotCat]] 37024586 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Nasod nga Czech]] [[Kategoriya:Nasod nga Czech]] lfsv8brxc23peqdfsa4fh546xv9i8uu 37024588 37024586 2026-07-23T19:28:50Z Fixer88 28406 added [[Category:Heyograpiya sa Uropa]] using [[Help:Gadget-HotCat|HotCat]] 37024588 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Nasod nga Czech]] [[Kategoriya:Nasod nga Czech]] [[Kategoriya:Heyograpiya sa Uropa|Nasod nga Czech]] r0cxyrrqnxe6n05vu7jzj3wapzjlwzz Kategoriya:Heyograpiya sa Comunitat Autònoma de les Illes Balears 14 4278688 37024590 8289783 2026-07-23T19:35:58Z Fixer88 28406 added [[Category:Balearic Islands]] using [[Help:Gadget-HotCat|HotCat]] 37024590 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Espanya sa rehiyon]] [[Kategoriya:Balearic Islands]] j8ct3c3dqk42brx8v8vyv5n1hqxzsfx Balearic Islands 0 4288412 37024589 34251940 2026-07-23T19:35:07Z Fixer88 28406 /* Ang mga gi basihan niini */ 37024589 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Espanya|date=2016-05}} {{geobox | 1 = Island <!-- *** Header *** --> | name = Balearic Islands | native_name = Islas Baleares | other_name = Ballerics | category = Kapuloan | etymology = | nickname = <!-- *** Image *** --> | image = | image_caption = <!-- *** Admin *** --> | country = {{flag|Espanya}} | country_flag = true | state = [[Comunitat Autònoma de les Illes Balears]] | state_type = Rehiyon | region = | region_type = | district = | district_type = | municipality = | municipality_type = <!-- *** Associated with *** --> | parent = | range = | range_type = Kapuloan | border = | part = | city = | capital = | landmark = | river = <!-- *** Location *** --> | location = | lat_d = 39.18969 | lat_m = | lat_s = | lat_NS = | long_d = 2.52136 | long_m = | long_s = | long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | height = | area = <!-- *** Population *** --> | population = | population_date = | population_note = | population_density = | population_density_note = <!-- *** Access *** --> | public = | access = <!-- *** Codes *** --> | timezone = | utc_offset = | timezone_DST = | utc_offset_DST = | postal_code = | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Notes *** --> | footnotes = | other_name1 = Illes Balears | other_name2 = Balear Uharteak | other_name3 = Iles Balèares | other_name4 = Illas Baleares - Illes Balears | other_name5 = Illas Balearas | geonames = 2521384 }} <!--T.ISLS-->[[Kapuloan]] ang '''Balearic Islands''' ([[Kinatsila]]: '''Islas Baleares''', [[Basque]]: '''Balear Uharteak''', [[Galician]]: '''Illas Baleares - Illes Balears''', [[Inutsitan]]: '''Illas Balearas''') sa [[Espanya]].<ref name = "gn2521384"/> Nahimutang ni sa rehiyon sa <!--ADM1-->[[Comunitat Autònoma de les Illes Balears]], sa sidlakang bahin sa nasod, {{formatnum:600}} km sa sidlakan sa [[Madrid (ulohang dakbayan)|Madrid]] ang ulohan sa nasod. {{Location map|Spain |float = right |width=300 | caption = Nahimutangan sa Balearic Islands sa Espanya. | label = Balearic Islands|position=left|background=white|lat=39.18969|long=2.52136}} == Ang mga gi basihan niini == <references> <ref name = "gn2521384">[{{Geonameslink|gnid=2521384|name=balearic%20islands}} Balearic Islands] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2015-12-04; database download sa 2016-04-24</ref> </references> [[Kagegoriya:Balearic Islands| ]] [[Kategoriya:Kapuloan sa Comunitat Autònoma de les Illes Balears]] ct43mw6990dahv84pa04z90fokkklfy 37024592 37024589 2026-07-23T19:39:42Z Fixer88 28406 giusab nga teksto 37024592 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Espanya|date=2016-05}} {{geobox | 1 = Island <!-- *** Header *** --> | name = Balearic Islands | native_name = Islas Baleares | other_name = Ballerics | category = Kapuloan | etymology = | nickname = <!-- *** Image *** --> | image = | image_caption = <!-- *** Admin *** --> | country = {{flag|Espanya}} | country_flag = true | state = [[Comunitat Autònoma de les Illes Balears]] | state_type = Rehiyon | region = | region_type = | district = | district_type = | municipality = | municipality_type = <!-- *** Associated with *** --> | parent = | range = | range_type = Kapuloan | border = | part = | city = | capital = | landmark = | river = <!-- *** Location *** --> | location = | lat_d = 39.18969 | lat_m = | lat_s = | lat_NS = | long_d = 2.52136 | long_m = | long_s = | long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | height = | area = <!-- *** Population *** --> | population = | population_date = | population_note = | population_density = | population_density_note = <!-- *** Access *** --> | public = | access = <!-- *** Codes *** --> | timezone = | utc_offset = | timezone_DST = | utc_offset_DST = | postal_code = | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Notes *** --> | footnotes = | other_name1 = Illes Balears | other_name2 = Balear Uharteak | other_name3 = Iles Balèares | other_name4 = Illas Baleares - Illes Balears | other_name5 = Illas Balearas | geonames = 2521384 }} <!--T.ISLS-->[[Kapuloan]] ang '''Balearic Islands''' ([[Kinatsila]]: '''Islas Baleares''', [[Basque]]: '''Balear Uharteak''', [[Galician]]: '''Illas Baleares - Illes Balears''', [[Inutsitan]]: '''Illas Balearas''') sa [[Espanya]].<ref name = "gn2521384"/> Nahimutang ni sa rehiyon sa <!--ADM1-->[[Comunitat Autònoma de les Illes Balears]], sa sidlakang bahin sa nasod, {{formatnum:600}} km sa sidlakan sa [[Madrid (ulohang dakbayan)|Madrid]] ang ulohan sa nasod. {{Location map|Spain |float = right |width=300 | caption = Nahimutangan sa Balearic Islands sa Espanya. | label = Balearic Islands|position=left|background=white|lat=39.18969|long=2.52136}} == Ang mga gi basihan niini == <references> <ref name = "gn2521384">[{{Geonameslink|gnid=2521384|name=balearic%20islands}} Balearic Islands] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2015-12-04; database download sa 2016-04-24</ref> </references> [[Kagegoriya:Balearic Islands| ]] [[Kategoriya:Kapuloan sa Comunitat Autònoma de les Illes Balears]] 5xucwnsvrldsf802i9gtgz7z7kstr1y 37024610 37024592 2026-07-23T20:05:23Z Fixer88 28406 removed [[Category:Kapuloan sa Comunitat Autònoma de les Illes Balears]]; added [[Category:Mga subdibisyon sa Espanya]] using [[Help:Gadget-HotCat|HotCat]] 37024610 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Espanya|date=2016-05}} {{geobox | 1 = Island <!-- *** Header *** --> | name = Balearic Islands | native_name = Islas Baleares | other_name = Ballerics | category = Kapuloan | etymology = | nickname = <!-- *** Image *** --> | image = | image_caption = <!-- *** Admin *** --> | country = {{flag|Espanya}} | country_flag = true | state = [[Comunitat Autònoma de les Illes Balears]] | state_type = Rehiyon | region = | region_type = | district = | district_type = | municipality = | municipality_type = <!-- *** Associated with *** --> | parent = | range = | range_type = Kapuloan | border = | part = | city = | capital = | landmark = | river = <!-- *** Location *** --> | location = | lat_d = 39.18969 | lat_m = | lat_s = | lat_NS = | long_d = 2.52136 | long_m = | long_s = | long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | height = | area = <!-- *** Population *** --> | population = | population_date = | population_note = | population_density = | population_density_note = <!-- *** Access *** --> | public = | access = <!-- *** Codes *** --> | timezone = | utc_offset = | timezone_DST = | utc_offset_DST = | postal_code = | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Notes *** --> | footnotes = | other_name1 = Illes Balears | other_name2 = Balear Uharteak | other_name3 = Iles Balèares | other_name4 = Illas Baleares - Illes Balears | other_name5 = Illas Balearas | geonames = 2521384 }} <!--T.ISLS-->[[Kapuloan]] ang '''Balearic Islands''' ([[Kinatsila]]: '''Islas Baleares''', [[Basque]]: '''Balear Uharteak''', [[Galician]]: '''Illas Baleares - Illes Balears''', [[Inutsitan]]: '''Illas Balearas''') sa [[Espanya]].<ref name = "gn2521384"/> Nahimutang ni sa rehiyon sa <!--ADM1-->[[Comunitat Autònoma de les Illes Balears]], sa sidlakang bahin sa nasod, {{formatnum:600}} km sa sidlakan sa [[Madrid (ulohang dakbayan)|Madrid]] ang ulohan sa nasod. {{Location map|Spain |float = right |width=300 | caption = Nahimutangan sa Balearic Islands sa Espanya. | label = Balearic Islands|position=left|background=white|lat=39.18969|long=2.52136}} == Ang mga gi basihan niini == <references> <ref name = "gn2521384">[{{Geonameslink|gnid=2521384|name=balearic%20islands}} Balearic Islands] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2015-12-04; database download sa 2016-04-24</ref> </references> [[Kagegoriya:Balearic Islands| ]] [[Kategoriya:Mga subdibisyon sa Espanya]] bgc157luya7676fqfvs8xn7hh65yujo 37024611 37024610 2026-07-23T20:05:42Z Fixer88 28406 /* Ang mga gi basihan niini */ 37024611 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Espanya|date=2016-05}} {{geobox | 1 = Island <!-- *** Header *** --> | name = Balearic Islands | native_name = Islas Baleares | other_name = Ballerics | category = Kapuloan | etymology = | nickname = <!-- *** Image *** --> | image = | image_caption = <!-- *** Admin *** --> | country = {{flag|Espanya}} | country_flag = true | state = [[Comunitat Autònoma de les Illes Balears]] | state_type = Rehiyon | region = | region_type = | district = | district_type = | municipality = | municipality_type = <!-- *** Associated with *** --> | parent = | range = | range_type = Kapuloan | border = | part = | city = | capital = | landmark = | river = <!-- *** Location *** --> | location = | lat_d = 39.18969 | lat_m = | lat_s = | lat_NS = | long_d = 2.52136 | long_m = | long_s = | long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | height = | area = <!-- *** Population *** --> | population = | population_date = | population_note = | population_density = | population_density_note = <!-- *** Access *** --> | public = | access = <!-- *** Codes *** --> | timezone = | utc_offset = | timezone_DST = | utc_offset_DST = | postal_code = | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Notes *** --> | footnotes = | other_name1 = Illes Balears | other_name2 = Balear Uharteak | other_name3 = Iles Balèares | other_name4 = Illas Baleares - Illes Balears | other_name5 = Illas Balearas | geonames = 2521384 }} <!--T.ISLS-->[[Kapuloan]] ang '''Balearic Islands''' ([[Kinatsila]]: '''Islas Baleares''', [[Basque]]: '''Balear Uharteak''', [[Galician]]: '''Illas Baleares - Illes Balears''', [[Inutsitan]]: '''Illas Balearas''') sa [[Espanya]].<ref name = "gn2521384"/> Nahimutang ni sa rehiyon sa <!--ADM1-->[[Comunitat Autònoma de les Illes Balears]], sa sidlakang bahin sa nasod, {{formatnum:600}} km sa sidlakan sa [[Madrid (ulohang dakbayan)|Madrid]] ang ulohan sa nasod. {{Location map|Spain |float = right |width=300 | caption = Nahimutangan sa Balearic Islands sa Espanya. | label = Balearic Islands|position=left|background=white|lat=39.18969|long=2.52136}} == Ang mga gi basihan niini == <references> <ref name = "gn2521384">[{{Geonameslink|gnid=2521384|name=balearic%20islands}} Balearic Islands] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2015-12-04; database download sa 2016-04-24</ref> </references> [[Kategoriya:Balearic Islands| ]] [[Kategoriya:Mga subdibisyon sa Espanya]] 2o92rgpx1jg1201gtksgdkh7fcc6m6j Kategoriya:Heyograpiya sa Catalunya 14 4289831 37024579 8305995 2026-07-23T19:13:14Z Fixer88 28406 added [[Category:Katalunya]] using [[Help:Gadget-HotCat|HotCat]] 37024579 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Espanya sa rehiyon]] [[Kategoriya:Katalunya]] newvjti0qaeaf8wswip3qw5e3g05db8 Kategoriya:Mga subdibisyon sa Catalunya 14 4291748 37024580 34831414 2026-07-23T19:15:37Z Fixer88 28406 removed [[Category:Catalunya]]; added [[Category:Katalunya]] using [[Help:Gadget-HotCat|HotCat]] 37024580 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Catalunya]] [[Kategoriya:Katalunya]] ddfovgp4dk91vzsiok3hy2ijzdi2956 Kategoriya:Heyograpiya sa Inglatera (apil sa nasod sa Hiniusang Gingharian) 14 4720097 37024627 9426608 2026-07-23T20:22:00Z Fixer88 28406 added [[Category:Inglatera]] using [[Help:Gadget-HotCat|HotCat]] 37024627 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Hiniusang Gingharian sa apil sa nasod]] [[Kategoriya:Inglatera]] hfojg1htjxbaw39we5dlj066uhiuc69 37024630 37024627 2026-07-23T20:25:54Z Fixer88 28406 new key for [[Category:Heyograpiya sa Hiniusang Gingharian sa apil sa nasod]]: "Inglaterra" using [[Help:Gadget-HotCat|HotCat]] 37024630 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Hiniusang Gingharian sa apil sa nasod|Inglaterra]] [[Kategoriya:Inglatera]] ibi3nj6lk5ty0hae04owox55u5d7ge2 Kategoriya:Heyograpiya sa Scotland (apil sa nasod) 14 4720111 37024632 34862052 2026-07-23T20:26:24Z Fixer88 28406 new key for [[Category:Heyograpiya sa Hiniusang Gingharian sa apil sa nasod]]: "Scotland" using [[Help:Gadget-HotCat|HotCat]] 37024632 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Hiniusang Gingharian sa apil sa nasod|Scotland]] [[Kategoriya:Scotland (apil sa nasod)]] bzenm54qz3uhbjwwvi76krrf1a66gzz Kategoriya:Heyograpiya sa Wales (apil sa nasod) 14 4720115 37024633 34862053 2026-07-23T20:26:52Z Fixer88 28406 new key for [[Category:Heyograpiya sa Hiniusang Gingharian sa apil sa nasod]]: "Wales" using [[Help:Gadget-HotCat|HotCat]] 37024633 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Hiniusang Gingharian sa apil sa nasod|Wales]] [[Kategoriya:Wales (apil sa nasod)]] f69lgkaehz9iabpgbs2vi9encnfb90k Kategoriya:Heyograpiya sa Northern Ireland 14 4720357 37024631 34862051 2026-07-23T20:26:09Z Fixer88 28406 new key for [[Category:Heyograpiya sa Hiniusang Gingharian sa apil sa nasod]]: "Northern Ireland" using [[Help:Gadget-HotCat|HotCat]] 37024631 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Hiniusang Gingharian sa apil sa nasod|Northern Ireland]] [[Kategoriya:Northern Ireland]] 6amen3dav1pyay205q5x2naummu5g82 Kategoriya:Heyograpiya sa Geyorgya 14 4754370 37024596 27706670 2026-07-23T19:45:58Z Fixer88 28406 +[[Kategoriya:Heyograpiya sa Asya]]; +[[Kategoriya:Heyograpiya sa Uropa]] using [[Help:Gadget-HotCat|HotCat]] 37024596 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Geyorgya]] [[Kategoriya:Geyorgya]] [[Kategoriya:Heyograpiya sa Asya|Geyorgya]] [[Kategoriya:Heyograpiya sa Uropa]] 05ow8xedql7kpyc16u086atl8uqrfkc Kategoriya:Heyograpiya sa Kuweit 14 5483956 37024597 25545334 2026-07-23T19:47:04Z Fixer88 28406 added [[Category:Heyograpiya sa Asya]] using [[Help:Gadget-HotCat|HotCat]] 37024597 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Kuweit]] [[Kategoriya:Kuweit]] [[Kategoriya:Heyograpiya sa Asya|Kuweit]] mgn3v9vecdco57v9lg2gvw73fglxywe Kategoriya:Heyograpiya sa Lyetuwanya 14 5508551 37024639 25641136 2026-07-23T20:32:44Z Fixer88 28406 added [[Category:Heyograpiya sa Uropa]] using [[Help:Gadget-HotCat|HotCat]] 37024639 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Lyetuwanya]] [[Kategoriya:Lyetuwanya]] [[Kategoriya:Heyograpiya sa Uropa|Lyetuwanya]] ccy2nj38596yx6efmeycsc1syeuqq1q Kategoriya:Heyograpiya sa Latwiya 14 5511790 37024638 33669970 2026-07-23T20:32:06Z Fixer88 28406 added [[Category:Heyograpiya sa Uropa]] using [[Help:Gadget-HotCat|HotCat]] 37024638 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Latwiya]] [[Kategoriya:Latwiya]] [[Kategoriya:Heyograpiya sa Uropa|Latwiya]] 5xkxtpnep163h36ok43oevjv57cozyk Kategoriya:Heyograpiya sa Moroko 14 5560153 37024584 25783592 2026-07-23T19:24:06Z Fixer88 28406 added [[Category:Heyograpiya sa nasud]] using [[Help:Gadget-HotCat|HotCat]] 37024584 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Moroko]] [[Kategoriya:Heyograpiya sa nasud|Moroko]] 3rfcp3l5q1carkq4zrldlu1w2douyuc 37024593 37024584 2026-07-23T19:41:08Z Fixer88 28406 added [[Category:Heyograpiya sa Aprika]] using [[Help:Gadget-HotCat|HotCat]] 37024593 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Moroko]] [[Kategoriya:Heyograpiya sa nasud|Moroko]] [[Kategoriya:Heyograpiya sa Aprika|Moroko]] e6vzwcs5b8gvosgyapa0ybede1ich1h Te Atau Mahuri 0 6289833 37024641 32699283 2026-07-24T00:12:56Z Prosperosity 74905 Redirected page to [[Te Atua Mahuru]] 37024641 wikitext text/x-wiki #REDIRECT [[Te Atua Mahuru]] co5ic5603d2k3ua5dmtnpu4zy3igffj Kategoriya:Heyograpiya sa Pransiya 14 7099710 37024587 12767734 2026-07-23T19:28:12Z Fixer88 28406 added [[Category:Heyograpiya sa Uropa]] using [[Help:Gadget-HotCat|HotCat]] 37024587 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa nasud|Pransiya]] [[Kategoriya:Pransiya]] [[Kategoriya:Heyograpiya sa Uropa|Pransiya]] r38fzoibzvhg4fba42sxsk804uo6kkl Gumagamit:Lsjbot/Duplicates/Département de la Lozère 2 7146464 37024574 37023728 2026-07-23T15:22:31Z Kontributor 2K 107579 Giway-bili ang rebisyon [[Special:Diff/37023728|37023728]] ni [[Special:Contributions/GeniusElephant678|GeniusElephant678]] ([[User talk:GeniusElephant678|Hisgot]]) per other wikis 37024574 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Pransiya|date=2017-02}} {{geobox | 1 = Region <!-- *** Header *** --> | name = Département de la Lozère | native_name = | other_name = | category = Departamento | official_name = Lozère | etymology = | motto = | nickname = <!-- *** Image *** --> | image = Préfecture de Mende, Lozère, France.JPG | image_caption = <!-- *** Symbols *** --> | flag = Drapeau non-officiel fr département Lozère.svg | symbol = Blason département fr Lozère.svg | country = {{flag|Pransiya}} | country_flag = | state = | state_type = | region = | region_type = | district = | district_type = | economic_region = | economic_region_type = <!-- *** Associated with *** --> | border = | part = | city = | landmark = | river = <!-- *** Location *** --> | capital = Mende | capital_type = | capital_location = | capital_region = | capital_country = | capital_elevation = | capital_lat_d = | capital_lat_m = | capital_lat_s = | capital_lat_NS = | capital_long_d = | capital_long_m = | capital_long_s = | capital_long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = | lowest = | lowest_location = | lowest_region = | lowest_country = | lowest_elevation = | lowest_lat_d = | lowest_lat_m = | lowest_lat_s = | lowest_lat_NS = | lowest_long_d = | lowest_long_m = | lowest_long_s = | lowest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | area = 5166.90 | area_decimals = <!-- *** Population *** --> | population = 81312 | population_date = 2016-02-18 | population_density = auto | established = | date = | government_location = | government_region = | government_country = | government_elevation = | government_lat_d = | government_lat_m = | government_lat_s = | government_lat_NS = | government_long_d = | government_long_m = | government_long_s = | government_long_EW = | leader = | leader_party = <!-- *** Codes *** --> | timezone = [[Central European Time|CET]] | utc_offset = +1 | timezone_DST = [[Central European Summer Time|CEST]] | utc_offset_DST = +2 | postal_code = | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_size = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Website *** --> | website = <!-- *** Notes *** --> | footnotes = | lat_d = 44.5 | long_d = 3.5 | elevation = 1064 | population_note = <ref name = "gn2997288"/> | timezone_label = Europe/Paris | map2 = Département 48 in France 2016.svg | iso_code = {{#property:P300}} }} '''Département de la Lozère''' ([[Prinanses]]: '''Lozère''') maoy <!--A.ADM2-->[[administratibo nga mga dibisyon sa Pransiya|departamento]] sa [[Pransiya]].<ref name = "gn2997288"/> Siya nahimutang sa amihanan-sidlakang bahin sa nasod, {{formatnum:500}} km sa habagatan sa ulohang dakbayan [[Paris]]. Adunay <!--pop-->{{formatnum:81312}} ka molupyo.<ref name = "gn2997288"/> Ang dapit sa Département de la Lozère mao ang {{formatnum:5167}} ka mga kilometro kwadrado. Département de la Lozère mopakigbahin sa usa ka utlanan sa [[Département de l'Ardèche]], [[Département de l'Aveyron]], [[Département du Cantal]], [[Département du Gard]], ug [[Département de la Haute-Loire]]. Ang yuta sa Département de la Lozère kay kabungtoran sa amihang-kasadpan, apan sa habagatang-sidlakan nga kini mao ang kabukiran.{{efn|group=saysay|Kalkulado gikan sa gitas-on data (DEM 3") gikan sa Viewfinder Panoramas.<ref name = "vp"/> Ang bug-os nga algoritmo anaa [https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framework/Lsjbot/Make-Geonames dinhi].}} Département de la Lozère may sa mosunod nga mga subdibisyon: * Arrondissement Florac * Arrondissement Mende * Florac * [[La Malène]] * [[Mende]] * [[Montbel, Lozère|Montbel]] * [[Le Pompidou]] * [[Balsièges]] * [[Marchastel, Lozère|Marchastel]] * [[La Fage-Montivernoux]] * [[Saint-Laurent-de-Muret]] * [[Saint-Étienne-du-Valdonnez]] * [[Le Pont-de-Montvert]] * [[Malbouzon]] * [[Pierrefiche, Lozère|Pierrefiche]] * [[Cubiérettes]] * [[Chauchailles]] * [[Lanuéjols, Lozère|Lanuéjols]] * [[Le Monastier-Pin-Moriès (munisipyo)|Le Monastier-Pin-Moriès]] * [[Recoules-d'Aubrac]] * [[Saint-Flour-de-Mercoire]] * [[Chambon-le-Château]] * [[Grandvals]] * [[Saint-Jean-la-Fouillouse]] * [[Sainte-Hélène (munisipyo sa Pransiya, Languedoc-Roussillon)|Sainte-Hélène]] * [[Sainte-Enimie]] * [[Saint-Amans, Lozère|Saint-Amans]] * [[Lajo]] * [[Chastel-Nouvel]] * [[Les Salces]] * [[Fraissinet-de-Fourques]] * [[Pied-de-Borne (munisipyo sa Pransiya)|Pied-de-Borne]] * [[Le Buisson, Lozère|Le Buisson]] * [[Sainte-Colombe-de-Peyre]] * [[Saint-Privat-de-Vallongue]] * [[Saint-Bonnet-de-Chirac]] * [[Saint-Pierre-de-Nogaret]] * [[Saint-Frézal-d'Albuges]] * [[Le Recoux]] * [[Bagnols-les-Bains]] * Chirac * [[Langogne]] * [[Les Hermaux]] * [[Nasbinals]] * [[La Villedieu, Lozère|La Villedieu]] * [[Fournels]] * [[Saint-Juéry, Lozère|Saint-Juéry]] * [[Luc, Lozère|Luc]] * [[Fau-de-Peyre]] * [[Saint-Bonnet-de-Montauroux]] * [[Arzenc-d'Apcher]] * [[Aumont-Aubrac]] * [[Laval-Atger]] * [[Esclanèdes]] * [[Villefort, Lozère|Villefort]] * [[Naussac, Lozère|Naussac]] * [[Sainte-Croix-Vallée-Française (munisipyo)|Sainte-Croix-Vallée-Française]] * [[Saint-André-Capcèze]] * [[Badaroux]] * [[Pourcharesses (munisipyo)|Pourcharesses]] * [[Barjac, Lozère|Barjac]] * [[Banassac]] * [[Saint-Georges-de-Lévéjac]] * [[La Bastide-Puylaurent]] * [[Prévenchères]] * [[Barre-des-Cévennes]] * [[Le Bleymard]] * [[Arzenc-de-Randon]] * [[Cocurès]] * [[Altier]] * [[Saint-Sauveur-de-Peyre]] * [[Saint-Julien-du-Tournel]] * Saint-Julien-d'Arpaon * [[Cheylard-l'Évêque]] * [[Saint-Alban-sur-Limagnole]] * Canilhac * [[Chasseradès]] * [[Châteauneuf-de-Randon]] * [[Marvejols]] * [[Saint-Pierre-des-Tripiers]] * Fontanes * [[Saint-Martin-de-Lansuscle]] * [[Le Rozier]] * [[La Canourgue]] * [[Grèzes, Lozère|Grèzes]] * [[Chanac]] * Saint-Maurice-de-Ventalon * Fraissinet-de-Lozère * Bédouès * [[Mas-d'Orcières]] * [[Saint-Laurent-de-Trèves]] * [[Les Bondons]] * [[Javols]] * [[Meyrueis]] * [[Cubières]] * [[Auroux]] * [[Trélans]] * [[Saint-Germain-du-Teil]] * [[Saint-Pierre-le-Vieux (munisipyo sa Pransiya, Languedoc-Roussillon, Département de la Lozère, lat 44,85, long 3,31)|Saint-Pierre-le-Vieux]] * [[Saint-Michel-de-Dèze]] * [[Gabrias]] * [[Estables]] * [[Saint-Étienne-Vallée-Française (lungsod)|Saint-Étienne-Vallée-Française]] * [[Le Malzieu-Ville]] * [[Rousses]] * [[Albaret-le-Comtal]] * [[Saint-Hilaire-de-Lavit]] * [[Laubert]] * [[Saint-Sauveur-de-Ginestoux]] * [[Julianges]] * [[Saint-Symphorien, Lozère|Saint-Symphorien]] * [[Vialas]] * [[Chaudeyrac]] * [[Saint-Rome-de-Dolan]] * [[Le Collet-de-Dèze]] * [[Rieutort-de-Randon]] * [[Montbrun, Lozère|Montbrun]] * [[Sainte-Eulalie, Lozère|Sainte-Eulalie]] * [[Ispagnac]] * [[Saint-Paul-le-Froid]] * [[Saint-Martin-de-Boubaux]] * [[Saint-Laurent-de-Veyrès]] * [[Allenc]] * [[Recoules-de-Fumas]] * [[Brion, Lozère|Brion]] * [[Ribennes]] * [[Les Salelles, Lozère|Les Salelles]] * [[Serverette]] * [[Les Bessons]] * [[Saint-Privat-du-Fau]] * [[Saint-Léger-de-Peyre]] * [[Gabriac, Lozère|Gabriac]] * [[Les Vignes]] * [[Quézac, Lozère|Quézac]] * [[La Tieule]] * [[Fontans]] * [[Brenoux]] * [[Prinsuéjols]] * [[Saint-Saturnin, Lozère|Saint-Saturnin]] * [[Belvezet]] * [[Saint-Bauzile (munisipyo sa Pransiya, Languedoc-Roussillon)|Saint-Bauzile]] * [[Saint-Gal]] * [[Rocles, Lozère|Rocles]] * [[La Chaze-de-Peyre]] * [[Montrodat]] * [[Palhers]] * [[Cultures]] * [[Chastanier]] * [[Paulhac-en-Margeride]] * Saint-Chély-d'Apcher * [[Saint-Denis-en-Margeride]] * [[Chaulhac]] * [[Blavignac]] * [[Prunières, Lozère|Prunières]] * [[Noalhac]] * [[Antrenas]] * [[Le Massegros]] * [[Saint-Léger-du-Malzieu]] * [[Servières]] * [[Le Malzieu-Forain (munisipyo sa Pransiya)|Le Malzieu-Forain]] * [[Grandrieu]] * [[Les Laubies]] * [[La Panouse]] * [[Laval-du-Tarn]] * [[Rimeize]] * [[La Fage-Saint-Julien]] * [[Pelouse (munisipyo sa Pransiya)|Pelouse]] * [[Chadenet]] * [[Termes (munisipyo sa Pransiya, Languedoc-Roussillon, Département de la Lozère, lat 44,81, long 3,17)|Termes]] * [[Vebron]] * [[Lachamp]] * [[Le Born, Lozère|Le Born]] * [[Saint-André-de-Lancize]] * [[Bassurels]] * La Salle-Prunet * [[Mas-Saint-Chély]] * Saint-Andéol-de-Clerguemort * [[Saint-Frézal-de-Ventalon]] * [[Hures-la-Parade (munisipyo)|Hures-la-Parade]] * [[Saint-Julien-des-Points]] * [[Saint-Germain-de-Calberte]] * [[Molezon]] * [[Cassagnas]] * [[Gatuzières]] * Moissac-Vallée-Française Ang klima [[boreal]].<ref name = "koppen"/> Ang kasarangang giiniton {{formatnum:9}} [[°C]]. Ang kinainitan nga bulan Hulyo, sa {{formatnum:20}}&nbsp;[[°C]], ug ang kinabugnawan Disyembre, sa {{formatnum:-2}}&nbsp;°C.<ref name = "nasa"/> Ang kasarangang pag-ulan {{formatnum:1259}} milimetro matag tuig. Ang kinabasaan nga bulan Nobiyembre, sa {{formatnum:185}} milimetro nga ulan, ug ang kinaugahan Pebrero, sa {{formatnum:66}} milimetro.<ref name = "nasarain"/> {{Location map|France |float = right |width=300 | caption = Mga dapit nga gitawag Département de la Lozère sa Pransiya. | label = Département de la Lozère|position=right|background=white|lat=44.5|long=3.5}} == Saysay == <references group="saysay"/> == Ang mga gi basihan niini == <references> <ref name = "gn2997288">[{{Geonameslink|gnid=2997288|name=departement%20de%20la%20lozere}} Département de la Lozère] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2016-02-18; database download sa 2017-02-07</ref> <ref name = "vp">{{Cite web |url= {{Viewfinderlink}}|title= Viewfinder Panoramas Digital elevation Model|date= 2015-06-21|format= }}</ref> <ref name = "koppen">{{cite journal |last= Peel|first= M C|last2= Finlayson|first2= B L|date= |title= Updated world map of the Köppen-Geiger climate classification| url = http://www.hydrol-earth-syst-sci.net/11/1633/2007/hess-11-1633-2007.html |journal= Hydrology and Earth System Sciences|publisher= |volume= 11|issue= |pages= 1633-1644|doi= 10.5194/hess-11-1633-2007|access-date=30 Enero 2016}}</ref> <ref name = "nasa">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/dataset_index.php|title= NASA Earth Observations Data Set Index|access-date = 30 Enero 2016 |publisher= NASA}}</ref> <ref name = "nasarain">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/view.php?datasetId=TRMM_3B43M|title= NASA Earth Observations: Rainfall (1 month - TRMM)|access-date = 30 Enero 2016 |publisher= NASA/Tropical Rainfall Monitoring Mission}}</ref> </references> == Gikan sa gawas nga tinubdan== {{commonscat|Lozère|Département de la Lozère}} <nowiki> [[Kategoriya:Mga subdibisyon sa Pransiya]] </nowiki> [[Kategoriya:Pransiya duplicates]] ac3n549pzxj5ehy6qmr1hu8pazztg91 Gumagamit:Lsjbot/Duplicates/Arbus (munisipyo) 2 7222915 37024646 21447922 2026-07-24T03:51:58Z Ziv 111351 ([[c:GR|GR]]) [[c:COM:Duplicate|Duplicate]]: [[File:Arbus.jpg]] → [[File:Arbus (1024x768).jpg]] Exact or scaled-down duplicate: [[c::File:Arbus (1024x768).jpg]] 37024646 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Pransiya|date=2017-02}} {{geobox | 1 = Region <!-- *** Header *** --> | name = Arbus | native_name = | other_name = | category = Munisipyo | official_name = | etymology = | motto = | nickname = <!-- *** Image *** --> | image = Arbus (1024x768).jpg | image_caption = <!-- *** Symbols *** --> | flag = | symbol = <!-- *** Admin *** --> | country = {{flag|Pransiya}} | country_flag = | state = | state_type = | region = | region_type = | district = | district_type = | economic_region = | economic_region_type = <!-- *** Associated with *** --> | border = | part = | city = | landmark = | river = <!-- *** Location *** --> | capital = | capital_type = | capital_location = | capital_region = | capital_country = | capital_elevation = | capital_lat_d = | capital_lat_m = | capital_lat_s = | capital_lat_NS = | capital_long_d = | capital_long_m = | capital_long_s = | capital_long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = | lowest = | lowest_location = | lowest_region = | lowest_country = | lowest_elevation = | lowest_lat_d = | lowest_lat_m = | lowest_lat_s = | lowest_lat_NS = | lowest_long_d = | lowest_long_m = | lowest_long_s = | lowest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | area = 13.89 | area_decimals = <!-- *** Population *** --> | population = 1098 | population_date = | population_density = auto | established = | date = | government_location = | government_region = | government_country = | government_elevation = | government_lat_d = | government_lat_m = | government_lat_s = | government_lat_NS = | government_long_d = | government_long_m = | government_long_s = | government_long_EW = | leader = | leader_party = <!-- *** Codes *** --> | timezone = [[Central European Time|CET]] | utc_offset = +1 | timezone_DST = [[Central European Summer Time|CEST]] | utc_offset_DST = +2 | postal_code = {{#property:P281}} | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_size = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Website *** --> | website = <!-- *** Notes *** --> | footnotes = | lat_d = 43.33333 | long_d = -0.50583 | elevation = 143 | population_note = <sup>gikan sa enwiki</sup> | timezone_label = Europe/Paris | map2 = Map commune FR insee code 64037.png }} '''Arbus''' maoy <!--A.ADM4-->[[administratibo nga mga dibisyon sa Pransiya|munisipyo]] sa [[Pransiya]].<ref name = "gn6450377"/> Siya nahimutang sa amihanan-sidlakang bahin sa nasod, {{formatnum:700}} km sa habagatan sa ulohang dakbayan [[Paris]]. Adunay <!--pop-->{{formatnum:1098}} ka molupyo.<ref name = "enwiki"/> Ang dapit sa Arbus mao ang {{formatnum:13.9}} ka mga kilometro kwadrado. Arbus mopakigbahin sa usa ka utlanan sa [[Artiguelouve (lungsod)|Artiguelouve]], [[Abos (munisipyo)|Abos]], [[Aubertin (lungsod)|Aubertin]], [[Denguin (lungsod)|Denguin]], [[Monein (lungsod)|Monein]], [[Parbayse (munisipyo)|Parbayse]], [[Siros (munisipyo)|Siros]], ug [[Tarsacq (munisipyo)|Tarsacq]]. Ang yuta sa Arbus kay patag.{{efn|group=saysay|Kalkulado gikan sa gitas-on data (DEM 3") gikan sa Viewfinder Panoramas.<ref name = "vp"/> Ang bug-os nga algoritmo anaa [https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framework/Lsjbot/Make-Geonames dinhi].}} Ang klima [[boreal]].<ref name = "koppen"/> Ang kasarangang giiniton {{formatnum:12}} [[°C]]. Ang kinainitan nga bulan Hulyo, sa {{formatnum:20}}&nbsp;[[°C]], ug ang kinabugnawan Enero, sa {{formatnum:4}}&nbsp;°C.<ref name = "nasa"/> Ang kasarangang pag-ulan {{formatnum:1424}} milimetro matag tuig. Ang kinabasaan nga bulan Enero, sa {{formatnum:186}} milimetro nga ulan, ug ang kinaugahan Septiyembre, sa {{formatnum:67}} milimetro.<ref name = "nasarain"/> {{Location map|France |float = right |width=300 | caption = Mga dapit nga gitawag Arbus sa Pransiya. | label = Arbus|position=right|background=white|lat=43.33333|long=-0.50583}} == Saysay == <references group="saysay"/> == Ang mga gi basihan niini == <references> <ref name = "gn6450377">[{{Geonameslink|gnid=6450377|name=arbus}} Arbus] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2016-02-18; database download sa 2017-02-07</ref> <ref name = "enwiki">(gikopiya gikan sa enwiki 2015-07-18)</ref> <ref name = "vp">{{Cite web |url= {{Viewfinderlink}}|title= Viewfinder Panoramas Digital elevation Model|date= 2015-06-21|format= }}</ref> <ref name = "koppen">{{cite journal |last= Peel|first= M C|last2= Finlayson|first2= B L|date= |title= Updated world map of the Köppen-Geiger climate classification| url = http://www.hydrol-earth-syst-sci.net/11/1633/2007/hess-11-1633-2007.html |journal= Hydrology and Earth System Sciences|publisher= |volume= 11|issue= |pages= 1633-1644|doi= 10.5194/hess-11-1633-2007|access-date=30 Enero 2016}}</ref> <ref name = "nasa">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/dataset_index.php|title= NASA Earth Observations Data Set Index|access-date = 30 Enero 2016 |publisher= NASA}}</ref> <ref name = "nasarain">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/view.php?datasetId=TRMM_3B43M|title= NASA Earth Observations: Rainfall (1 month - TRMM)|access-date = 30 Enero 2016 |publisher= NASA/Tropical Rainfall Monitoring Mission}}</ref> </references> == Gikan sa gawas nga tinubdan== {{commonscat|Arbus|Arbus}} <nowiki> [[Kategoriya:Mga subdibisyon sa Pransiya]] </nowiki> [[Kategoriya:Pransiya duplicates]] d435udj584wxkifbi40jcmkd51gkh0v Kategoriya:Heyograpiya sa Ōita-ken 14 7355717 37024543 13076836 2026-07-23T13:33:25Z Fixer88 28406 added [[Category:Ōita-ken]] using [[Help:Gadget-HotCat|HotCat]] 37024543 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Hapon sa prepektura]] [[Kategoriya:Ōita-ken]] gqzxbusi1wh3z5tiu1srv0cai3ldol1 37024546 37024543 2026-07-23T13:36:24Z Fixer88 28406 removed [[Category:Ōita-ken]]; added [[Category:Ōita Prefecture]] using [[Help:Gadget-HotCat|HotCat]] 37024546 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Hapon sa prepektura]] [[Kategoriya:Ōita Prefecture]] aw437v5nzl61c0nclp6oyw3kc0xe8f3 Kategoriya:Mga subdibisyon sa Ōita-ken 14 7357213 37024548 34832652 2026-07-23T13:37:25Z Fixer88 28406 removed [[Category:Ōita-ken]]; added [[Category:Ōita Prefecture]] using [[Help:Gadget-HotCat|HotCat]] 37024548 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Ōita-ken]] [[Kategoriya:Ōita Prefecture]] occ8ya31j7dc7qk7esv7c1a7ujdd2ue Kategoriya:Heyograpiya sa Tōkyō-to 14 7357387 37024565 13078554 2026-07-23T13:58:27Z Fixer88 28406 added [[Category:Tokyo]] using [[Help:Gadget-HotCat|HotCat]] 37024565 wikitext text/x-wiki {{GeoGroup}} [[Kategoriya:Heyograpiya sa Hapon sa prepektura]] [[Kategoriya:Tokyo]] gcytts1m6vfo1ra689g9a3aa6japw4o Ōita Prefecture 0 7364677 37024544 33034517 2026-07-23T13:34:34Z Fixer88 28406 /* Gikan sa gawas nga tinubdan */ 37024544 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Hapon|date=2017-02}} {{geobox | 1 = Region <!-- *** Header *** --> | name = Ōita Prefecture | native_name = 大分市 | other_name = Ōita-shi | category = Distrito | official_name = | etymology = | motto = | nickname = <!-- *** Image *** --> | image = Beppu Mt.Tsurumi01.jpg | image_caption = <!-- *** Symbols *** --> | flag = Flag of Oita Prefecture.svg | symbol = Emblem of Oita Prefecture.svg | country = {{flag|Hapon}} | country_flag = | state = [[Ōita-ken]] | state_type = Prepektura | region = | region_type = | district = | district_type = | economic_region = | economic_region_type = <!-- *** Associated with *** --> | border = | part = | city = | landmark = | river = <!-- *** Location *** --> | capital = Ōita | capital_type = | capital_location = | capital_region = | capital_country = | capital_elevation = | capital_lat_d = | capital_lat_m = | capital_lat_s = | capital_lat_NS = | capital_long_d = | capital_long_m = | capital_long_s = | capital_long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = | lowest = | lowest_location = | lowest_region = | lowest_country = | lowest_elevation = | lowest_lat_d = | lowest_lat_m = | lowest_lat_s = | lowest_lat_NS = | lowest_long_d = | lowest_long_m = | lowest_long_s = | lowest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | area = 6339.00 | area_decimals = <!-- *** Population *** --> | population = 1209587 | population_date = | population_density = auto | established = | date = | government_location = | government_region = | government_country = | government_elevation = | government_lat_d = | government_lat_m = | government_lat_s = | government_lat_NS = | government_long_d = | government_long_m = | government_long_s = | government_long_EW = | leader = Katsusada Hirose | leader_party = <!-- *** Codes *** --> | timezone = [[Japan Standard Time|JST]] | utc_offset = +9 | timezone_DST = | utc_offset_DST = | postal_code = | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_size = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Website *** --> | website = <!-- *** Notes *** --> | footnotes = | other_name1 = Ōita | other_name2 = Ōita-machi | other_name3 = おおいたし | lat_d = 33.1798 | long_d = 131.64085 | elevation = 117 | population_note = <sup>gikan sa eswiki</sup> | timezone_label = Asia/Tokyo | map2 = Japan oita map small.png | iso_code = {{#property:P300}} }} <!--A.ADM2-->[[administratibo nga mga dibisyon sa Hapon|Distrito]] ang '''Ōita Prefecture''' ([[Hinapones]]: '''大分市''', '''おおいたし''') sa [[Hapon]].<ref name = "gn1854480"/> Nahimutang ni sa prepektura sa <!--ADM1-->[[Ōita-ken]], sa habagatan-kasadpang bahin sa nasod, {{formatnum:800}} km sa kasadpan sa [[Tokyo (ulohang dakbayan sa Hapon)|Tokyo]] ang ulohan sa nasod. Adunay <!--pop-->{{formatnum:1209587}} ka molupyo.<ref name = "eswiki"/> Naglangkob kin og {{formatnum:6339}} ka kilometro kwadrado. Ōita Prefecture mopakigbahin sa usa ka utlanan sa [[Miyazaki-ken]], [[Kumamoto-ken]], ug [[Fukuoka-ken]]. Ang yuta sa Ōita Prefecture kabungtoran sa amihang-sidlakan, apan sa habagatang-kasadpan nga kini mao ang kabukiran.{{efn|group=saysay|Kalkulado gikan sa gitas-on data (DEM 3") gikan sa Viewfinder Panoramas.<ref name = "vp"/> Ang bug-os nga algoritmo anaa [https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framework/Lsjbot/Make-Geonames dinhi].}} Ōita Prefecture may sa mosunod nga mga subdibisyon: * [[Ōita (kapital sa prepektura sa Hapon)|Ōita]] * [[Beppu]] * [[Nakatsu (lungsod sa Hapon)|Nakatsu]] * [[Hita (lungsod)|Hita]] * [[Saiki]] * [[Usuki Shi]] * [[Tsukumiura]] * [[Takedamachi]] * [[Bungo-Takada-shi]] * [[Kitsuki Shi]] * Usa * [[Bungo-ōno Shi]] * [[Yufu-shi]] * Kunisaki * [[Higashikunisaki-gun]] * [[Hayami-gun]] * [[Kusu-gun]] Ang klima [[kasarangan]]. Ang kasarangang giiniton {{formatnum:15}} [[°C]]. Ang kinainitan nga bulan Hulyo, sa {{formatnum:24}}&nbsp;[[°C]], ug ang kinabugnawan Enero, sa {{formatnum:4}}&nbsp;°C.<ref name = "nasa"/> Ang kasarangang pag-ulan {{formatnum:2349}} milimetro matag tuig. Ang kinabasaan nga bulan Hunyo, sa {{formatnum:505}} milimetro nga ulan, ug ang kinaugahan Enero, sa {{formatnum:48}} milimetro.<ref name = "nasarain"/> {| |- |{{climate chart | Ōita Prefecture | 2| 7| 48 | 2| 11| 177 | 5| 14| 135 | 8| 19| 155 | 14| 25| 115 | 16| 24| 505 | 21| 26| 352 | 22| 25| 280 | 19| 25| 208 | 14| 20| 203 | 9| 15| 83 | 3| 10| 88 |float=left |clear=left |source = <ref name = "nasa"/> }} |} {{Location map|Japan |float = right |width=300 | caption = Nahimutangan sa Ōita Prefecture sa Hapon. | label = Ōita Prefecture|position=right|background=white|lat=33.1798|long=131.64085}} == Saysay == <references group="saysay"/> == Ang mga gi basihan niini == <references> <ref name = "gn1854480">[{{Geonameslink|gnid=1854480|name=oita-shi}} Ōita-shi] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2016-08-15; database download sa 2017-02-07</ref> <ref name = "eswiki">(gikopiya gikan sa eswiki 2015-07-19)</ref> <ref name = "vp">{{Cite web |url= {{Viewfinderlink}}|title= Viewfinder Panoramas Digital elevation Model|date= 2015-06-21|format= }}</ref> <ref name = "nasa">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/dataset_index.php|title= NASA Earth Observations Data Set Index|access-date = 30 Enero 2016 |publisher= NASA}}</ref> <ref name = "nasarain">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/view.php?datasetId=TRMM_3B43M|title= NASA Earth Observations: Rainfall (1 month - TRMM)|access-date = 30 Enero 2016 |publisher= NASA/Tropical Rainfall Monitoring Mission}}</ref> </references> == Gikan sa gawas nga tinubdan== {{commonscat|Oita prefecture|Ōita Prefecture}} [[Kategoriya:Ōita-ken| ]] [[Kategoriya:Mga subdibisyon sa Ōita-ken]] bseb43oalrg9azcam3q001qk7lrcl31 37024547 37024544 2026-07-23T13:37:01Z Fixer88 28406 removed [[Category:Ōita-ken]]; added [[Category:Ōita Prefecture]] using [[Help:Gadget-HotCat|HotCat]] 37024547 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Hapon|date=2017-02}} {{geobox | 1 = Region <!-- *** Header *** --> | name = Ōita Prefecture | native_name = 大分市 | other_name = Ōita-shi | category = Distrito | official_name = | etymology = | motto = | nickname = <!-- *** Image *** --> | image = Beppu Mt.Tsurumi01.jpg | image_caption = <!-- *** Symbols *** --> | flag = Flag of Oita Prefecture.svg | symbol = Emblem of Oita Prefecture.svg | country = {{flag|Hapon}} | country_flag = | state = [[Ōita-ken]] | state_type = Prepektura | region = | region_type = | district = | district_type = | economic_region = | economic_region_type = <!-- *** Associated with *** --> | border = | part = | city = | landmark = | river = <!-- *** Location *** --> | capital = Ōita | capital_type = | capital_location = | capital_region = | capital_country = | capital_elevation = | capital_lat_d = | capital_lat_m = | capital_lat_s = | capital_lat_NS = | capital_long_d = | capital_long_m = | capital_long_s = | capital_long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = | lowest = | lowest_location = | lowest_region = | lowest_country = | lowest_elevation = | lowest_lat_d = | lowest_lat_m = | lowest_lat_s = | lowest_lat_NS = | lowest_long_d = | lowest_long_m = | lowest_long_s = | lowest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | area = 6339.00 | area_decimals = <!-- *** Population *** --> | population = 1209587 | population_date = | population_density = auto | established = | date = | government_location = | government_region = | government_country = | government_elevation = | government_lat_d = | government_lat_m = | government_lat_s = | government_lat_NS = | government_long_d = | government_long_m = | government_long_s = | government_long_EW = | leader = Katsusada Hirose | leader_party = <!-- *** Codes *** --> | timezone = [[Japan Standard Time|JST]] | utc_offset = +9 | timezone_DST = | utc_offset_DST = | postal_code = | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_size = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Website *** --> | website = <!-- *** Notes *** --> | footnotes = | other_name1 = Ōita | other_name2 = Ōita-machi | other_name3 = おおいたし | lat_d = 33.1798 | long_d = 131.64085 | elevation = 117 | population_note = <sup>gikan sa eswiki</sup> | timezone_label = Asia/Tokyo | map2 = Japan oita map small.png | iso_code = {{#property:P300}} }} <!--A.ADM2-->[[administratibo nga mga dibisyon sa Hapon|Distrito]] ang '''Ōita Prefecture''' ([[Hinapones]]: '''大分市''', '''おおいたし''') sa [[Hapon]].<ref name = "gn1854480"/> Nahimutang ni sa prepektura sa <!--ADM1-->[[Ōita-ken]], sa habagatan-kasadpang bahin sa nasod, {{formatnum:800}} km sa kasadpan sa [[Tokyo (ulohang dakbayan sa Hapon)|Tokyo]] ang ulohan sa nasod. Adunay <!--pop-->{{formatnum:1209587}} ka molupyo.<ref name = "eswiki"/> Naglangkob kin og {{formatnum:6339}} ka kilometro kwadrado. Ōita Prefecture mopakigbahin sa usa ka utlanan sa [[Miyazaki-ken]], [[Kumamoto-ken]], ug [[Fukuoka-ken]]. Ang yuta sa Ōita Prefecture kabungtoran sa amihang-sidlakan, apan sa habagatang-kasadpan nga kini mao ang kabukiran.{{efn|group=saysay|Kalkulado gikan sa gitas-on data (DEM 3") gikan sa Viewfinder Panoramas.<ref name = "vp"/> Ang bug-os nga algoritmo anaa [https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framework/Lsjbot/Make-Geonames dinhi].}} Ōita Prefecture may sa mosunod nga mga subdibisyon: * [[Ōita (kapital sa prepektura sa Hapon)|Ōita]] * [[Beppu]] * [[Nakatsu (lungsod sa Hapon)|Nakatsu]] * [[Hita (lungsod)|Hita]] * [[Saiki]] * [[Usuki Shi]] * [[Tsukumiura]] * [[Takedamachi]] * [[Bungo-Takada-shi]] * [[Kitsuki Shi]] * Usa * [[Bungo-ōno Shi]] * [[Yufu-shi]] * Kunisaki * [[Higashikunisaki-gun]] * [[Hayami-gun]] * [[Kusu-gun]] Ang klima [[kasarangan]]. Ang kasarangang giiniton {{formatnum:15}} [[°C]]. Ang kinainitan nga bulan Hulyo, sa {{formatnum:24}}&nbsp;[[°C]], ug ang kinabugnawan Enero, sa {{formatnum:4}}&nbsp;°C.<ref name = "nasa"/> Ang kasarangang pag-ulan {{formatnum:2349}} milimetro matag tuig. Ang kinabasaan nga bulan Hunyo, sa {{formatnum:505}} milimetro nga ulan, ug ang kinaugahan Enero, sa {{formatnum:48}} milimetro.<ref name = "nasarain"/> {| |- |{{climate chart | Ōita Prefecture | 2| 7| 48 | 2| 11| 177 | 5| 14| 135 | 8| 19| 155 | 14| 25| 115 | 16| 24| 505 | 21| 26| 352 | 22| 25| 280 | 19| 25| 208 | 14| 20| 203 | 9| 15| 83 | 3| 10| 88 |float=left |clear=left |source = <ref name = "nasa"/> }} |} {{Location map|Japan |float = right |width=300 | caption = Nahimutangan sa Ōita Prefecture sa Hapon. | label = Ōita Prefecture|position=right|background=white|lat=33.1798|long=131.64085}} == Saysay == <references group="saysay"/> == Ang mga gi basihan niini == <references> <ref name = "gn1854480">[{{Geonameslink|gnid=1854480|name=oita-shi}} Ōita-shi] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2016-08-15; database download sa 2017-02-07</ref> <ref name = "eswiki">(gikopiya gikan sa eswiki 2015-07-19)</ref> <ref name = "vp">{{Cite web |url= {{Viewfinderlink}}|title= Viewfinder Panoramas Digital elevation Model|date= 2015-06-21|format= }}</ref> <ref name = "nasa">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/dataset_index.php|title= NASA Earth Observations Data Set Index|access-date = 30 Enero 2016 |publisher= NASA}}</ref> <ref name = "nasarain">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/view.php?datasetId=TRMM_3B43M|title= NASA Earth Observations: Rainfall (1 month - TRMM)|access-date = 30 Enero 2016 |publisher= NASA/Tropical Rainfall Monitoring Mission}}</ref> </references> == Gikan sa gawas nga tinubdan== {{commonscat|Oita prefecture|Ōita Prefecture}} [[Kategoriya:Ōita Prefecture| ]] [[Kategoriya:Mga subdibisyon sa Ōita-ken]] aim8gsd5o1zrblix1yqouwfwdn5wtcu Mitsuike Kōen 0 7405829 37024647 32971332 2026-07-24T06:11:49Z ~2026-41224-26 146599 Redirected page to [[Mitsuike Park]] 37024647 wikitext text/x-wiki #Redirect[[Mitsuike Park]] {{paghimo ni bot|Lsjbot|Hapon|date=2017-02}} {{geobox | 1 = <!-- Här ska stå t.ex. Settlement --> | geobox_width = <!-- *** Mallhuvud *** --> | name = Mitsuike Kōen | native_name = | other_name = | other_name_note = | other_name1 = | other_name1_note = | other_name2 = | other_name2_note = | other_name3 = | other_name3_note = | other_name4 = | other_name4_note = | other_name5 = | other_name5_note = | other_name6 = | other_name6_note = | other_name7 = | other_name7_note = | category_hide = | category = Parke | native_category = <!-- *** Bild *** --> | image = | image_caption = | image_size = <!-- *** Symboler *** --> | flag = | flag_type = | flag_label = | flag_note = | flag_size = | flag_border = | symbol = | symbol_type = | symbol_label = | symbol_note = | symbol_size = | symbol_border = <!-- *** Namn *** --> | official_name = | official_name_type = | official_name_label = | official_name_note = | etymology = | etymology_type = | etymology_label = | etymology_note = | motto = | motto_type = | motto_label = | motto_note = | nickname = | nickname_type = | nickname_label = | nickname_note = <!-- *** Land m.m. *** --> | country_fold = | country_flag = | country = {{flag|Hapon}} | country_type = | country_label = | country_note = | country1 = | country1_note = | country2 = | country2_note = | country3 = | country3_note = | country4 = | country4_note = | country5 = | country5_note = | country6 = | country6_note = | country7 = | country7_note = | country8 = | country8_note = | country9 = | country9_note = | country10 = | country10_note = | country11 = | country11_note = | country12 = | country12_note = | country13 = | country13_note = | country14 = | country14_note = | country15 = | country15_note = | state_fold = | state_flag = | state = [[Kanagawa-ken]] | state_type = Prepektura | state_label = | state_note = | state1 = | state1_note = | state2 = | state2_note = | state3 = | state3_note = | state4 = | state4_note = | state5 = | state5_note = | state6 = | state6_note = | state7 = | state7_note = | state8 = | state8_note = | state9 = | state9_note = | state10 = | state10_note = | state11 = | state11_note = | state12 = | state12_note = | state13 = | state13_note = | state14 = | state14_note = | state15 = | state15_note = | region_fold = | region = | region_type = | region_label = | region_note = | region1 = | region1_note = | region2 = | region2_note = | region3 = | region3_note = | region4 = | region4_note = | region5 = | region5_note = | region6 = | region6_note = | region7 = | region7_note = | region8 = | region8_note = | region9 = | region9_note = | region10 = | region10_note = | region11 = | region11_note = | region12 = | region12_note = | region13 = | region13_note = | region14 = | region14_note = | region15 = | region15_note = | district_fold = | district = | district_type = | district_label = | district_note = | district1 = | district1_note = | district2 = | district2_note = | district3 = | district3_note = | district4 = | district4_note = | district5 = | district5_note = | district6 = | district6_note = | district7 = | district7_note = | district8 = | district8_note = | district9 = | district9_note = | district10 = | district10_note = | district11 = | district11_note = | district12 = | district12_note = | district13 = | district13_note = | district14 = | district14_note = | district15 = | district15_note = | commune_fold = | commune = | commune_type = | commune_label = | commune_note = | commune1 = | commune1_note = | commune2 = | commune2_note = | commune3 = | commune3_note = | commune4 = | commune4_note = | commune5 = | commune5_note = | commune6 = | commune6_note = | commune7 = | commune7_note = | commune8 = | commune8_note = | commune9 = | commune9_note = | commune10 = | commune10_note = | commune11 = | commune11_note = | commune12 = | commune12_note = | commune13 = | commune13_note = | commune14 = | commune14_note = | commune15 = | commune15_note = | municipality_fold = | municipality = | municipality_type = | municipality_label = | municipality_note = | municipality1 = | municipality1_note = | municipality2 = | municipality2_note = | municipality3 = | municipality3_note = | municipality4 = | municipality4_note = | municipality5 = | municipality5_note = | municipality6 = | municipality6_note = | municipality7 = | municipality7_note = | municipality8 = | municipality8_note = | municipality9 = | municipality9_note = | municipality10 = | municipality10_note = | municipality11 = | municipality11_note = | municipality12 = | municipality12_note = | municipality13 = | municipality13_note = | municipality14 = | municipality14_note = | municipality15 = | municipality15_note = | parish_fold = | parish = | parish_type = | parish_label = | parish_note = | parish1 = | parish1_note = | parish2 = | parish2_note = | parish3 = | parish3_note = | parish4 = | parish4_note = | parish5 = | parish5_note = | parish6 = | parish6_note = | parish7 = | parish7_note = | parish8 = | parish8_note = | parish9 = | parish9_note = | parish10 = | parish10_note = | parish11 = | parish11_note = | parish12 = | parish12_note = | parish13 = | parish13_note = | parish14 = | parish14_note = | parish15 = | parish15_note = <!-- *** Tillhörighet, inom området m.m. *** --> | parent_fold = | parent = | parent_type = | parent_label = | parent_note = | parent1 = | parent1_note = | parent2 = | parent2_note = | parent3 = | parent3_note = | range_fold = | range = | range_type = | range_label = | range_note = | range1 = | range1_note = | range2 = | range2_note = | range3 = | range3_note = | road = | road_type = | road_label = | road_note = | road1 = | road1_type = | road1_label = | road1_note = | road2 = | road2_type = | road2_label = | road2_note = | road3 = | road3_type = | road3_label = | road3_note = | road4 = | road4_type = | road4_label = | road4_note = | border_fold = | border = | border_type = | border_label = | border_note = | border1 = | border1_note = | border2 = | border2_note = | border3 = | border3_note = | border4 = | border4_note = | border5 = | border5_note = | border6 = | border6_note = | border7 = | border7_note = | border8 = | border8_note = | border9 = | border9_note = | border10 = | border10_note = | border11 = | border11_note = | border12 = | border12_note = | border13 = | border13_note = | border14 = | border14_note = | border15 = | border15_note = | border16 = | border16_note = | border17 = | border17_note = | border18 = | border18_note = | border19 = | border19_note = | border20 = | border20_note = | border21 = | border21_note = | border22 = | border22_note = | border23 = | border23_note = | border24 = | border24_note = | part_fold = | part = | part_type = | part_label = | part_note = | part1 = | part1_note = | part2 = | part2_note = | part3 = | part3_note = | part4 = | part4_note = | part5 = | part5_note = | part6 = | part6_note = | part7 = | part7_note = | part8 = | part8_note = | part9 = | part9_note = | part10 = | part10_note = | part11 = | part11_note = | part12 = | part12_note = | part13 = | part13_note = | part14 = | part14_note = | part15 = | part15_note = | part16 = | part16_note = | part17 = | part17_note = | part18 = | part18_note = | part19 = | part19_note = | part20 = | part20_note = | part21 = | part21_note = | part22 = | part22_note = | part23 = | part23_note = | part24 = | part24_note = | part25 = | part25_note = | part26 = | part26_note = | part27 = | part27_note = | part28 = | part28_note = | part29 = | part29_note = | part30 = | part30_note = | part31 = | part31_note = | part32 = | part32_note = | part33 = | part33_note = | part34 = | part34_note = | part35 = | part35_note = | part36 = | part36_note = | part37 = | part37_note = | part38 = | part38_note = | part39 = | part39_note = | part40 = | part40_note = | part41 = | part41_note = | tributary_fold = | child_fold = | tributary_left_fold = | child_left_fold = | tributary_type = | tributary_label = | child_type = | child_label = | tributary_left = | tributary_left_type = | tributary_left_label = | tributary_left_note = | child_left = | child_left_type = | child_left_label = | child_left_note = | tributary_left1 = | tributary_left1_note = | child_left1 = | child_left1_note = | tributary_left2 = | tributary_left2_note = | child_left2 = | child_left2_note = | tributary_left3 = | tributary_left3_note = | child_left3 = | child_left3_note = | tributary_left4 = | tributary_left4_note = | child_left4 = | child_left4_note = | tributary_left5 = | tributary_left5_note = | child_left5 = | child_left5_note = | tributary_left6 = | tributary_left6_note = | child_left6 = | child_left6_note = | tributary_left7 = | tributary_left7_note = | child_left7 = | child_left7_note = | tributary_left8 = | tributary_left8_note = | child_left8 = | child_left8_note = | tributary_left9 = | tributary_left9_note = | child_left9 = | child_left9_note = | tributary_left10 = | tributary_left10_note = | child_left10 = | child_left10_note = | tributary_left11 = | tributary_left11_note = | child_left11 = | child_left11_note = | tributary_left12 = | tributary_left12_note = | child_left12 = | child_left12_note = | tributary_left13 = | tributary_left13_note = | child_left13 = | child_left13_note = | tributary_left14 = | tributary_left14_note = | child_left14 = | child_left14_note = | tributary_left15 = | tributary_left15_note = | child_left15 = | child_left15_note = | tributary_right_fold = | child_right_fold = | tributary_right = | tributary_right_type = | tributary_right_label = | tributary_right_note = | child_right = | child_right_type = | child_right_label = | child_right_note = | tributary_right1 = | tributary_right1_note = | child_right1 = | child_right1_note = | tributary_right2 = | tributary_right2_note = | child_right2 = | child_right2_note = | tributary_right3 = | tributary_right3_note = | child_right3 = | child_right3_note = | tributary_right4 = | tributary_right4_note = | child_right4 = | child_right4_note = | tributary_right5 = | tributary_right5_note = | child_right5 = | child_right5_note = | tributary_right6 = | tributary_right6_note = | child_right6 = | child_right6_note = | tributary_right7 = | tributary_right7_note = | child_right7 = | child_right7_note = | tributary_right8 = | tributary_right8_note = | child_right8 = | child_right8_note = | tributary_right9 = | tributary_right9_note = | child_right9 = | child_right9_note = | tributary_right10 = | tributary_right10_note = | child_right10 = | child_right10_note = | tributary_right11 = | tributary_right11_note = | child_right11 = | child_right11_note = | tributary_right12 = | tributary_right12_note = | child_right12 = | child_right12_note = | tributary_right13 = | tributary_right13_note = | child_right13 = | child_right13_note = | tributary_right14 = | tributary_right14_note = | child_right14 = | child_right14_note = | tributary_right15 = | tributary_right15_note = | child_right15 = | child_right15_note = | city_fold = | city = | city_type = | city_label = | city_note = | city1 = | city1_note = | city2 = | city2_note = | city3 = | city3_note = | city4 = | city4_note = | city5 = | city5_note = | city6 = | city6_note = | city7 = | city7_note = | city8 = | city8_note = | city9 = | city9_note = | city10 = | city10_note = | city11 = | city11_note = | city12 = | city12_note = | city13 = | city13_note = | city14 = | city14_note = | city15 = | city15_note = | landmark_fold = | landmark = | landmark_type = | landmark_label = | landmark_note = | landmark1 = | landmark1_note = | landmark2 = | landmark2_note = | landmark3 = | landmark3_note = | landmark4 = | landmark4_note = | landmark5 = | landmark5_note = | landmark6 = | landmark6_note = | landmark7 = | landmark7_note = | landmark8 = | landmark8_note = | landmark9 = | landmark9_note = | landmark10 = | landmark10_note = | landmark11 = | landmark11_note = | landmark12 = | landmark12_note = | landmark13 = | landmark13_note = | landmark14 = | landmark14_note = | landmark15 = | landmark15_note = | lake_fold = | lake = | lake_type = | lake_label = | lake_note = | lake1 = | lake1_note = | lake2 = | lake2_note = | lake3 = | lake3_note = | lake4 = | lake4_note = | lake5 = | lake5_note = | lake6 = | lake6_note = | lake7 = | lake7_note = | lake8 = | lake8_note = | lake9 = | lake9_note = | lake10 = | lake10_note = | lake11 = | lake11_note = | lake12 = | lake12_note = | lake13 = | lake13_note = | lake14 = | lake14_note = | lake15 = | lake15_note = | mountain_fold = | mountain = | mountain_type = | mountain_label = | mountain_note = | mountain1 = | mountain1_note = | mountain2 = | mountain2_note = | mountain3 = | mountain3_note = | mountain4 = | mountain4_note = | mountain5 = | mountain5_note = | mountain6 = | mountain6_note = | mountain7 = | mountain7_note = | mountain8 = | mountain8_note = | mountain9 = | mountain9_note = | mountain10 = | mountain10_note = | mountain11 = | mountain11_note = | mountain12 = | mountain12_note = | mountain13 = | mountain13_note = | mountain14 = | mountain14_note = | mountain15 = | mountain15_note = | building_fold = | building = | building_type = | building_label = | building_note = | building1 = | building1_note = | building2 = | building2_note = | building3 = | building3_note = | building4 = | building4_note = | building5 = | building5_note = | building6 = | building6_note = | building7 = | building7_note = | building8 = | building8_note = | building9 = | building9_note = | building10 = | building10_note = | building11 = | building11_note = | building12 = | building12_note = | building13 = | building13_note = | building14 = | building14_note = | building15 = | building15_note = | river_fold = | river = | river_type = | river_label = | river_note = | river1 = | river1_note = | river2 = | river2_note = | river3 = | river3_note = | river4 = | river4_note = | river5 = | river5_note = | river6 = | river6_note = | river7 = | river7_note = | river8 = | river8_note = | river9 = | river9_note = | river10 = | river10_note = | river11 = | river11_note = | river12 = | river12_note = | river13 = | river13_note = | river14 = | river14_note = | river15 = | river15_note = <!-- *** Lägen *** --> | location = | location_type = | location_label = | location_note = | location_municipality = | location_municipality1 = | location_district = | location_district1 = | location_region = | location_region1 = | location_state = | location_state1 = | location_country = | location_country1 = | elevation = 29 | elevation_unit = | elevation_note = | prominence = | prominence_unit = | prominence_note = | lat_d = 35.52229 | lat_m = | lat_s = | lat_NS = | long_d = 139.65812 | long_m = | long_s = | long_EW = | coordinates_no_title = | coordinates_type = | coordinates_format = | coordinates_note = | capital = | capital_name = | capital_type = | capital_label = | capital_note = | capital_location = | capital_location_type = | capital_location_label = | capital_location_note = | capital_elevation = | capital_elevation_unit = | capital_elevation_note = | capital_lat_d = | capital_lat_m = | capital_lat_s = | capital_lat_NS = | capital_long_d = | capital_long_m = | capital_long_s = | capital_long_EW = | capital_coordinates_type = | capital_coordinates_format = | capital_coordinates_note = | subcapital_fold = | subcapital = | subcapital_type = | subcapital_label = | subcapital_note = | subcapital1 = | subcapital1_note = | subcapital2 = | subcapital2_note = | subcapital3 = | subcapital3_note = | subcapital4 = | subcapital4_note = | subcapital5 = | subcapital5_note = | subcapital6 = | subcapital6_note = | subcapital7 = | subcapital7_note = | subcapital8 = | subcapital8_note = | subcapital9 = | subcapital9_note = | subcapital10 = | subcapital10_note = | subcapital11 = | subcapital11_note = | subcapital12 = | subcapital12_note = | subcapital13 = | subcapital13_note = | subcapital14 = | subcapital14_note = | subcapital15 = | subcapital15_note = | highest = | highest_name = | highest_type = | highest_label = | highest_note = | highest_location = | highest_location_type = | highest_location_label = | highest_location_note = | highest_municipality = | highest_municipality1 = | highest_district = | highest_district1 = | highest_region = | highest_region1 = | highest_state = | highest_state1 = | highest_country = | highest_country1 = | highest_elevation = | highest_elevation_unit = | highest_elevation_note = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = | highest_coordinates_type = | highest_coordinates_format = | highest_coordinates_note = | lowest = | lowest_name = | lowest_type = | lowest_label = | lowest_note = | lowest_location = | lowest_location_type = | lowest_location_label = | lowest_location_note = | lowest_municipality = | lowest_municipality1 = | lowest_district = | lowest_district1 = | lowest_region = | lowest_region1 = | lowest_state = | lowest_state1 = | lowest_country = | lowest_country1 = | lowest_elevation = | lowest_elevation_unit = | lowest_elevation_note = | lowest_lat_d = | lowest_lat_m = | lowest_lat_s = | lowest_lat_NS = | lowest_long_d = | lowest_long_m = | lowest_long_s = | lowest_long_EW = | lowest_coordinates_type = | lowest_coordinates_format = | lowest_coordinates_note = <!-- *** Floders lägen *** --> | source = | source_name = | source_type = | source_label = | source_note = | source_location = | source_location_type = | source_location_label = | source_location_note = | source_municipality = | source_municipality1 = | source_district = | source_district1 = | source_region = | source_region1 = | source_state = | source_state1 = | source_country = | source_country1 = | source_elevation = | source_elevation_unit = | source_elevation_note = | source_length = | source_length_unit = | source_length_note = | source_lat_d = | source_lat_m = | source_lat_s = | source_lat_NS = | source_long_d = | source_long_m = | source_long_s = | source_long_EW = | source_coordinates_type = | source_coordinates_format = | source_coordinates_note = | source1 = | source1_name = | source1_type = | source1_label = | source1_note = | source1_location = | source1_location_type = | source1_location_label = | source1_location_note = | source1_municipality = | source1_municipality1 = | source1_district = | source1_district1 = | source1_region = | source1_region1 = | source1_state = | source1_state1 = | source1_country = | source1_country1 = | source1_elevation = | source1_elevation_unit = | source1_elevation_note = | source1_length = | source1_length_unit = | source1_lat_d = | source1_lat_m = | source1_lat_s = | source1_lat_NS = | source1_long_d = | source1_long_m = | source1_long_s = | source1_long_EW = | source1_coordinates_type = | source1_coordinates_format = | source1_coordinates_note = | source2 = | source2_name = | source2_type = | source2_label = | source2_note = | source2_location = | source2_location_type = | source2_location_label = | source2_location_note = | source2_municipality = | source2_municipality1 = | source2_district = | source2_district1 = | source2_region = | source2_region1 = | source2_state = | source2_state1 = | source2_country = | source2_country1 = | source2_elevation = | source2_elevation_unit = | source2_elevation_note = | source2_length = | source2_length_unit = | source2_length_note = | source2_lat_d = | source2_lat_m = | source2_lat_s = | source2_lat_NS = | source2_long_d = | source2_long_m = | source2_long_s = | source2_long_EW = | source2_coordinates_type = | source2_coordinates_format = | source2_coordinates_note = | source_confluence = | source_confluence_name = | source_confluence_type = | source_confluence_label = | source_confluence_note = | source_confluence_location = | source_confluence_location_type = | source_confluence_location_label = | source_confluence_location_note = | source_confluence_municipality = | source_confluence_municipality1 = | source_confluence_district = | source_confluence_district1 = | source_confluence_region = | source_confluence_region1 = | source_confluence_state = | source_confluence_state1 = | source_confluence_country = | source_confluence_country1 = | source_confluence_elevation = | source_confluence_elevation_unit = | source_confluence_elevation_note = | source_confluence_lat_d = | source_confluence_lat_m = | source_confluence_lat_s = | source_confluence_lat_NS = | source_confluence_long_d = | source_confluence_long_m = | source_confluence_long_s = | source_confluence_long_EW = | source_confluence_coordinates_type = | source_confluence_coordinates_format = | source_confluence_coordinates_note = | mouth = | mouth_name = | mouth_type = | mouth_label = | mouth_note = | mouth_location = | mouth_location_type = | mouth_location_label = | mouth_location_note = | mouth_municipality = | mouth_municipality1 = | mouth_district = | mouth_district1 = | mouth_region = | mouth_region1 = | mouth_state = | mouth_state1 = | mouth_country = | mouth_country1 = | mouth_elevation = | mouth_elevation_unit = | mouth_elevation_note = | mouth_lat_d = | mouth_lat_m = | mouth_lat_s = | mouth_lat_NS = | mouth_long_d = | mouth_long_m = | mouth_long_s = | mouth_long_EW = | mouth_coordinates_type = | mouth_coordinates_format = | mouth_coordinates_note = <!-- *** Dimensioner *** --> | length = | length_type = | length_label = | length_unit = | length_orientation = | length_note = | length1 = | length1_type = | length1_label = | length1_unit = | length1_orientation = | length1_note = | length2 = | length2_type = | length2_label = | length2_unit = | length2_orientation = | length2_note = | length3 = | length3_type = | length3_label = | length3_unit = | length3_orientation = | length3_note = | length4 = | length4_type = | length4_label = | length4_unit = | length4_orientation = | length4_note = | width = | width_type = | width_label = | width_unit = | width_orientation = | width_note = | width1 = | width1_type = | width1_label = | width1_unit = | width1_orientation = | width1_note = | width2 = | width2_type = | width2_label = | width2_unit = | width2_orientation = | width2_note = | width3 = | width3_type = | width3_label = | width3_unit = | width3_orientation = | width3_note = | width4 = | width4_type = | width4_label = | width4_unit = | width4_orientation = | width4_note = | height = | height_type = | height_label = | height_unit = | height_note = | height1 = | height1_type = | height1_label = | height1_unit = | height1_note = | height2 = | height2_type = | height2_label = | height2_unit = | height2_note = | height3 = | height3_type = | height3_label = | height3_unit = | height3_note = | height4 = | height4_type = | height4_label = | height4_unit = | height4_note = | number = | number_type = | number_label = | number_note = | number1 = | number1_type = | number1_label = | number1_note = | number2 = | number2_type = | number2_label = | number2_note = | number3 = | number3_type = | number3_label = | number3_note = | number4 = | number4_type = | number4_label = | number4_note = | depth = | depth_type = | depth_label = | depth_unit = | depth_note = | depth1 = | depth1_type = | depth1_label = | depth1_unit = | depth1_note = | depth2 = | depth2_type = | depth2_label = | depth2_unit = | depth2_note = | depth3 = | depth3_type = | depth3_label = | depth3_unit = | depth3_note = | depth4 = | depth4_type = | depth4_label = | depth4_unit = | depth4_note = | volume = | volume_type = | volume_label = | volume_unit = | volume_note = | volume1 = | volume1_type = | volume1_label = | volume1_unit = | volume1_note = | volume2 = | volume2_type = | volume2_label = | volume2_unit = | volume2_note = | volume3 = | volume3_type = | volume3_label = | volume3_unit = | volume3_note = | volume4 = | volume4_type = | volume4_label = | volume4_unit = | volume4_note = | weight = | weight_type = | weight_label = | weight_unit = | weight_note = | weight1 = | weight1_type = | weight1_label = | weight1_unit = | weight1_note = | weight2 = | weight2_type = | weight2_label = | weight2_unit = | weight2_note = | weight3 = | weight3_type = | weight3_label = | weight3_unit = | weight3_note = | weight4 = | weight4_type = | weight4_label = | weight4_unit = | weight4_note = | watershed = | watershed_type = | watershed_label = | watershed_decimals = | watershed_unit = | watershed_note = | area = | area_type = | area_label = | area_decimals = | area_unit = | area_date = | area_as_of = | area_note = | area_land = | area_land_type = | area_land_label = | area_land_decimals = | area_land_unit = | area_land_note = | area_land_percentage = | area_land_percentage_round = | area_land_share = | area_land_share_round = | area_percentage_round = | area_share_round = | area_water = | area_water_type = | area_water_label = | area_water_decimals = | area_water_unit = | area_water_note = | area_water_percentage = | area_water_percentage_round = | area_water_share = | area_water_share_round = | area_urban = | area_urban_type = | area_urban_label = | area_urban_decimals = | area_urban_unit = | area_urban_date = | area_urban_as_of = | area_urban_note = | area_urban_percentage = | area_urban_percentage_round = | area_urban_share = | area_urban_share_round = | area_municipal = | area_municipal_type = | area_municipal_label = | area_municipal_decimals = | area_municipal_unit = | area_municipal_date = | area_municipal_as_of = | area_municipal_note = | area_municipal_percentage = | area_municipal_percentage_round = | area_municipal_share = | area_municipal_share_round = | area_metro = | area_metro_type = | area_metro_label = | area_metro_decimals = | area_metro_unit = | area_metro_date = | area_metro_as_of = | area_metro_note = | area_metro_percentage = | area_metro_percentage_round = | area_metro_share = | area_metro_share_round = | area1 = | area1_type = | area1_label = | area1_unit = | area1_date = | area1_note = | area1_share = | area1_share_round = | area2 = | area2_type = | area2_label = | area2_unit = | area2_date = | area2_note = | area2_share = | area2_share_round = | area3 = | area3_type = | area3_label = | area3_unit = | area3_date = | area3_note = | area3_share = | area3_share_round = | area4 = | area4_type = | area4_label = | area4_unit = | area4_date = | area4_note = | area4_share = | area4_share_round = | area5 = | area5_type = | area5_label = | area5_unit = | area5_date = | area5_note = | area5_share = | area5_share_round = | area6 = | area6_type = | area6_label = | area6_unit = | area6_date = | area6_note = | area6_share = | area6_share_round = | area7 = | area7_type = | area7_label = | area7_unit = | area7_date = | area7_note = | area7_share = | area7_share_round = | area8 = | area8_type = | area8_label = | area8_unit = | area8_date = | area8_note = | area8_share = | area8_share_round = | area9 = | area9_type = | area9_label = | area9_unit = | area9_date = | area9_note = | area9_share = | area9_share_round = | area10 = | area10_type = | area10_label = | area10_unit = | area10_date = | area10_note = | area10_share = | area10_share_round = | area11 = | area11_type = | area11_label = | area11_unit = | area11_date = | area11_note = | area11_share = | area11_share_round = | area12 = | area12_type = | area12_label = | area12_unit = | area12_date = | area12_note = | area12_share = | area12_share_round = | discharge = | discharge_average = | discharge_type = | discharge_location = | discharge_location_note = | discharge_label = | discharge_unit = | discharge_note = | discharge_max = | discharge_max_unit = | discharge_max_note = | discharge_min = | discharge_min_unit = | discharge_min_note = | discharge1_average = | discharge1_type = | discharge1_location = | discharge1_unit = | discharge1_note = | discharge2_average = | discharge2_location = | discharge2_unit = | discharge2_note = | discharge3_average = | discharge3_location = | discharge3_unit = | discharge3_note = | discharge4_average = | discharge4_location = | discharge4_unit = | discharge4_note = <!-- *** Befolkning *** --> | population = | population_type = | population_label = | population_date = | population_as_of = | population_note = | population_urban = | population_urban_type = | population_urban_label = | population_urban_date = | population_urban_as_of = | population_urban_note = | population_municipal = | population_municipal_type = | population_municipal_label = | population_municipal_date = | population_municipal_as_of = | population_municipal_note = | population_metro = | population_metro_type = | population_metro_label = | population_metro_date = | population_metro_as_of = | population_metro_note = | population1 = | population1_type = | population1_label = | population1_date = | population1_note = | population2 = | population2_type = | population2_label = | population2_date = | population2_note = | population3 = | population3_type = | population3_label = | population3_date = | population3_note = | population4 = | population4_type = | population4_label = | population4_date = | population4_note = | population5 = | population5_type = | population5_label = | population5_date = | population5_note = | population6 = | population6_type = | population6_label = | population6_date = | population6_note = | population7 = | population7_type = | population7_label = | population7_date = | population7_note = | population8 = | population8_type = | population8_label = | population8_date = | population8_note = | population9 = | population9_type = | population9_label = | population9_date = | population9_note = | population10 = | population10_type = | population10_label = | population10_date = | population10_note = | population11 = | population11_type = | population11_label = | population11_date = | population11_note = | population12 = | population12_type = | population12_label = | population12_date = | population12_note = | population_density = | density_type = | density_label = | population_density_round = | population_density_hide = | population_density_note = | population_urban_density = | population_urban_density_type = | population_urban_density_round = | population_urban_density_note = | population_municipal_density = | population_municipal_density_type = | population_municipal_density_round = | population_municipal_density_note = | population_metro_density = | population_metro_density_type = | population_metro_density_round = | population_metro_density_note = | population1_density = | density1_type = | density1_label = | population1_density_round = | population1_density_note = | population2_density = | density2_type = | density2_label = | population2_density_round = | population2_density_note = | population3_density = | density3_type = | density3_label = | population3_density_round = | population3_density_note = | population4_density = | density4_type = | density4_label = | population4_density_round = | population4_density_note = | population5_density = | density5_type = | density5_label = | population5_density_round = | population5_density_note = | population6_density = | density6_type = | density6_label = | population6_density_round = | population6_density_note = | population7_density = | density7_type = | density7_label = | population7_density_round = | population7_density_note = | population8_density = | density8_type = | density8_label = | population8_density_round = | population8_density_note = | population9_density = | density9_type = | density9_label = | population9_density_round = | population9_density_note = | population10_density = | density10_type = | density10_label = | population10_density_round = | population10_density_note = | population11_density = | density11_type = | density11_label = | population11_density_round = | population11_density_note = | population12_density = | density12_type = | density12_label = | population12_density_round = | population12_density_note = <!-- *** Egenskaper *** --> | biome_fold = | biome = | biome_type = | biome_label = | biome_share = | biome_note = | biome1 = | biome1_note = | biome2 = | biome2_note = | biome3 = | biome3_note = | biome4 = | biome4_note = | biome5 = | biome5_note = | biome6 = | biome6_note = | biome7 = | biome7_note = | biome8 = | biome8_note = | biome9 = | biome9_note = | biome10 = | biome10_note = | biome11 = | biome11_note = | biome12 = | biome12_note = | biome13 = | biome13_note = | biome14 = | biome14_note = | biome15 = | biome15_note = | geology_fold = | geology = | geology_type = | geology_label = | geology_note = | geology1 = | geology1_note = | geology2 = | geology2_note = | geology3 = | geology3_note = | geology4 = | geology4_note = | geology5 = | geology5_note = | geology6 = | geology6_note = | geology7 = | geology7_note = | geology8 = | geology8_note = | geology9 = | geology9_note = | geology10 = | geology10_note = | geology11 = | geology11_note = | geology12 = | geology12_note = | geology13 = | geology13_note = | geology14 = | geology14_note = | geology15 = | geology15_note = | orogeny_fold = | orogeny = | orogeny_type = | orogeny_label = | orogeny_note = | orogeny1 = | orogeny1_note = | orogeny2 = | orogeny2_note = | orogeny3 = | orogeny3_note = | orogeny4 = | orogeny4_note = | orogeny5 = | orogeny5_note = | orogeny6 = | orogeny6_note = | orogeny7 = | orogeny7_note = | orogeny8 = | orogeny8_note = | orogeny9 = | orogeny9_note = | orogeny10 = | orogeny10_note = | orogeny11 = | orogeny11_note = | orogeny12 = | orogeny12_note = | orogeny13 = | orogeny13_note = | orogeny14 = | orogeny14_note = | orogeny15 = | orogeny15_note = | period_fold = | period = | period_type = | period_label = | period_note = | period1 = | period1_note = | period2 = | period2_note = | period3 = | period3_note = | period4 = | period4_note = | period5 = | period5_note = | period6 = | period6_note = | period7 = | period7_note = | period8 = | period8_note = | period9 = | period9_note = | period10 = | period10_note = | period11 = | period11_note = | period12 = | period12_note = | period13 = | period13_note = | period14 = | period14_note = | period15 = | period15_note = | plant_fold = | plant = | plant_type = | plant_label = | plant_note = | plant1 = | plant1_note = | plant2 = | plant2_note = | plant3 = | plant3_note = | plant4 = | plant4_note = | plant5 = | plant5_note = | plant6 = | plant6_note = | plant7 = | plant7_note = | plant8 = | plant8_note = | plant9 = | plant9_note = | plant10 = | plant10_note = | plant11 = | plant11_note = | plant12 = | plant12_note = | plant13 = | plant13_note = | plant14 = | plant14_note = | plant15 = | plant15_note = | animal_fold = | animal = | animal_type = | animal_label = | animal_note = | animal1 = | animal1_note = | animal2 = | animal2_note = | animal3 = | animal3_note = | animal4 = | animal4_note = | animal5 = | animal5_note = | animal6 = | animal6_note = | animal7 = | animal7_note = | animal8 = | animal8_note = | animal9 = | animal9_note = | animal10 = | animal10_note = | animal11 = | animal11_note = | animal12 = | animal12_note = | animal13 = | animal13_note = | animal14 = | animal14_note = | animal15 = | animal15_note = | author_fold = | author = | author_type = | author_label = | author_note = | author1 = | author1_note = | author2 = | author2_note = | author3 = | author3_note = | author4 = | author4_note = | author5 = | author5_note = | author6 = | author6_note = | author7 = | author7_note = | author8 = | author8_note = | author9 = | author9_note = | author10 = | author10_note = | author11 = | author11_note = | author12 = | author12_note = | author13 = | author13_note = | author14 = | author14_note = | author15 = | author15_note = | style_fold = | style = | style_type = | style_label = | style_note = | style1 = | style1_note = | style2 = | style2_note = | style3 = | style3_note = | style4 = | style4_note = | style5 = [style5_note = | style6 = | style6_note = | style7 = | style7_note = | style8 = | style8_note = | style9 = | style9_note = | style10 = | style10_note = | style11 = | style11_note = | style12 = | style12_note = | style13 = | style13_note = | style14 = | style14_note = | style15 = | style15_note = | material_fold = | material = | material_type = | material_label = | material_note = | material1 = | material1_note = | material2 = | material2_note = | material3 = | material3_note = | material4 = | material4_note = | material5 = | material5_note = | material6 = | material6_note = | material7 = | material7_note = | material8 = | material8_note = | material9 = | material9_note = | material10 = | material10_note = | material11 = | material11_note = | material12 = | material12_note = | material13 = | material13_note = | material14 = | material14_note = | material15 = | material15_note = <!-- *** Historia och administration *** --> | established = | established_type = | established_label = | established_note = | established1 = | established1_type = | established1_label = | established1_note = | established2 = | established2_type = | established2_label = | established2_note = | established3 = | established3_type = | established3_label = | established3_note = | established4 = | established4_type = | established4_label = | established4_note = | date = | date_type = | date_label = | date_note = | date1 = | date1_type = | date1_label = | date1_note = | date2 = | date2_type = | date2_label = | date2_note = | date3 = | date3_type = | date3_label = | date3_note = | date4 = | date4_type = | date4_label = | date4_note = | management = | management_body = | management_type = | management_label = | management_note = | management_location = | management_location_type = | management_location_label = | management_location_note = | management_municipality = | management_municipality1 = | management_district = | management_district1 = | management_region = | management_region1 = | management_state = | management_state1 = | management_country = | management_country1 = | management_elevation = | management_elevation_unit = | management_elevation_note = | management_lat_d = | management_lat_m = | management_lat_s = | management_lat_NS = | management_long_d = | management_long_m = | management_long_s = | management_long_EW = | management_coordinates_type = | management_coordinates_format = | management_coordinates_note = | government = | government_type = | government_label = | government_note = | government_location = | government_location_type = | government_location_label = | government_location_note = | government_municipality = | government_municipality1 = | government_district = | government_district1 = | government_region = | government_region1 = | government_state = | government_state1 = | government_country = | government_country1 = | government_elevation = | government_elevation_unit = | government_elevation_note = | government_lat_d = | government_lat_m = | government_lat_s = | government_lat_NS = | government_long_d = | government_long_m = | government_long_s = | government_long_EW = | government_coordinates_type = | government_coordinates_format = | government_coordinates_note = | owner = | owner_type = | owner_label = | owner_note = | mayor = | mayor_type = | mayor_label = | mayor_party = | mayor_note = | leader = | leader_type = | leader_label = | leader_party = | leader_note = | leader1 = | leader1_type = | leader1_label = | leader1_party = | leader1_note = | leader2 = | leader2_type = | leader2_label = | leader2_party = | leader2_note = | leader3 = | leader3_type = | leader3_label = | leader3_party = | leader3_note = | leader4 = | leader4_type = | leader4_label = | leader4_party = | leader4_note = <!-- *** Tillgänglighet *** --> | public = | public_type = | public_label = | public_note = | visitation = | visitation_type = | visitation_label = | visitation_date = | visitation_note = | access = | access_type = | access_label = | access_note = | discovery = | discovery_type = | discovery_label = | discovery_note = | discovery1 = | discovery1_note = | discovery2 = | discovery2_note = | discovery3 = | discovery3_note = | discovery4 = | discovery4_note = | discovery5 = | discovery5_note = | discovery6 = | discovery6_note = | discovery7 = | discovery7_note = | discovery_date = | discovery_date_type = | discovery_date_label = | discovery_date_note = | ascent = | ascent_type = | ascent_label = | ascent_note = | ascent1 = | ascent1_note = | ascent2 = | ascent2_note = | ascent3 = | ascent3_note = | ascent4 = | ascent4_note = | ascent5 = | ascent5_note = | ascent6 = | ascent6_note = | ascent7 = | ascent7_note = | ascent_date = | ascent_date_type = | ascent_date_label = | ascent_date_note = <!-- *** Koder *** --> | timezone = [[Japan Standard Time|JST]] | timezone_type = | timezone_label = Asia/Tokyo | utc_offset = +9 | timezone_note = | timezone_DST = | timezone_type_DST = | timezone_label_DST = | utc_offset_DST = | timezone_note_DST = | iso_code = | iso_code_type = | iso_code_label = | iso_subcode = | iso_code_note = | postal_town = | postal_town_type = | postal_town_label = | postal_town_note = | postal_code = | postal_code_type = | postal_code_label = | postal_code_note = | area_code = | area_code_type = | area_code_label = | area_code_note = | code = | code_type = | code_label = | code_note = | codea = | codea_type = | codea_label = | codea_note = | codeb = | codeb_type = | codeb_label = | codeb_note = | codec = | codec_type = | codec_label = | codec_note = | code1 = | code1_type = | code1_label = | code1_note = | code1a = | code1a_type = | code1a_label = | code1a_note = | code1b = | code1b_type = | code1b_label = | code1b_note = | code1c = | code1c_type = | code1c_label = | code1c_note = | code2 = | code2_type = | code2_label = | code2_note = | code3 = | code3_type = | code3_label = | code3_note = | code4 = | code4_type = | code4_label = | code4_note = <!-- *** Unesco m.m. *** --> | whs_name = | whs_name_note = | whs_year = | whs_year_note = | whs_number = | whs_number_note = | whs_region = | whs_region_note = | whs_criteria = | whs_criteria_note = | category_iucn = | category_iucn_note = | topo_map = | topo_type = | topo_label = | topo_maker = | topo_note = | topo1_map = | topo1_maker = | topo1_note = | topo2_map = | topo2_maker = | topo2_note = | topo3_map = | topo3_maker = | topo3_note = | topo4_map = | topo4_maker = | topo4_note = | topo5_map = | topo5_maker = | topo5_note = | topo6_map = | topo6_maker = | topo6_note = | topo7_map = | topo7_maker = | topo7_note = | topo8_map = | topo8_maker = | topo8_note = | topo9_map = | topo9_maker = | topo9_note = | topo10_map = | topo10_maker = | topo10_note = | topo11_map = | topo11_maker = | topo11_note = | topo12_map = | topo12_maker = | topo12_note = | topo13_map = | topo13_maker = | topo13_note = | topo14_map = | topo14_maker = | topo14_note = | topo15_map = | topo15_maker = | topo15_note = <!-- *** Fria fält *** --> | free = | free_type = | free_label = | free_note = | free1 = | free1_type = | free1_label = | free1_note = | free2 = | free2_type = | free2_label = | free2_note = | free3 = | free3_type = | free3_label = | free3_note = | free4 = | free4_type = | free4_label = | free4_note = | free5 = | free5_type = | free5_label = | free5_note = | free6 = | free6_type = | free6_label = | free6_note = | free7 = | free7_type = | free7_label = | free7_note = | free8 = | free8_type = | free8_label = | free8_note = | free9 = | free9_type = | free9_label = | free9_note = | free10 = | free10_type = | free10_label = | free10_note = | free11 = | free11_type = | free11_label = | free11_note = | free12 = | free12_type = | free12_label = | free12_note = | free13 = | free13_type = | free13_label = | free13_note = | free14 = | free14_type = | free14_label = | free14_note = <!-- *** Karta *** --> | map = | map_caption = | map_size = | map_locator = | map_locator_x = | map_locator_y = | map_background = | map1 = | map1_caption = | map1_size = | map1_locator = | map1_locator_x = | map1_locator_y = | map1_background = | map2 = | map2_caption = | map2_size = | map2_locator = | map2_locator_x = | map2_locator_y = | map2_background = <!-- *** KML *** --> | KML = <!-- *** Webbplatser *** --> | commons = | commons_type = | commons_label = | commons_note = | statistics = | statistics_type = | statistics_label = | statistics_date = | statistics_note = | website = | website_type = | website_label = | website_note = <!-- *** Fotnoter *** --> | footnotes = | footnotes_type = | footnotes_label = | footnotes_note = | geonames = 10862214 }} <!--L.PRK-->[[Parke]] ang '''Mitsuike Kōen''' sa [[Hapon]].<ref name = "gn10862214"/> Nahimutang ni sa prepektura sa <!--ADM1-->[[Kanagawa-ken]], sa habagatan-sidlakang bahin sa nasod, {{formatnum:19}} km sa habagatan sa [[Tokyo (ulohang dakbayan sa Hapon)|Tokyo]] ang ulohan sa nasod. {{formatnum:29}} metros ibabaw sa dagat kahaboga ang nahimutangan sa Mitsuike Kōen.<ref name = "gn10862214"/> Ang yuta palibot sa Mitsuike Kōen patag.{{efn|group=saysay|Kalkulado gikan sa pakigbingkil sa tanan nga gitas-on data (DEM 3") gikan sa Viewfinder Panoramas, sa sulod sa 10 ka kilometro radius.<ref name = "vp"/> Ang bug-os nga algoritmo anaa [https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framework/Lsjbot/Make-Geonames dinhi].}} Ang kinahabogang dapit sa palibot dunay gihabogon nga {{formatnum:51}} ka metro ug {{formatnum:1.0 }} km sa habagatan sa Mitsuike Kōen.{{efn|group=saysay|Kalkulado gikan sa gitas-on data (DEM 3") gikan sa Viewfinder Panoramas.<ref name = "vp"/> Ang bug-os nga algoritmo anaa [https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framework/Lsjbot/Make-Geonames dinhi].}} Ang kinadul-ang mas dakong lungsod mao ang [[Tokyo (ulohang dakbayan sa Hapon)|Tokyo]], {{formatnum:18.8}} km sa amihanan sa Mitsuike Kōen. Sa rehiyon palibot sa Mitsuike Kōen, mga kanal talagsaon komon.{{efn|group=saysay|Mas sulod sa 20 ka kilometro gilay-on itandi sa average nga densidad sa Yuta, sumala sa GeoNames.<ref name = "gn10862214"/>}} Ang klima [[umogon]] ug [[subtropikal]].<ref name = "koppen"/> Ang kasarangang giiniton {{formatnum:18}} [[°C]]. Ang kinainitan nga bulan Hulyo, sa {{formatnum:26}}&nbsp;[[°C]], ug ang kinabugnawan Enero, sa {{formatnum:9}}&nbsp;°C.<ref name = "nasa"/> Ang kasarangang pag-ulan {{formatnum:1894}} milimetro matag tuig. Ang kinabasaan nga bulan Oktubre, sa {{formatnum:295}} milimetro nga ulan, ug ang kinaugahan Enero, sa {{formatnum:72}} milimetro.<ref name = "nasarain"/> {| |- |{{climate chart | Mitsuike Kōen | 6| 12| 72 | 6| 12| 151 | 8| 17| 111 | 11| 20| 194 | 18| 27| 174 | 15| 27| 294 | 23| 30| 109 | 24| 28| 73 | 22| 27| 193 | 18| 24| 295 | 13| 19| 118 | 7| 15| 110 |float=left |clear=left |source = <ref name = "nasa"/> }} |} {{Location map|Japan |float = right |width=300 | caption = Nahimutangan sa Mitsuike Kōen sa Hapon. | label = Mitsuike Kōen|position=right|background=white|lat=35.52229|long=139.65812}} == Saysay == <references group="saysay"/> == Ang mga gi basihan niini == <references> <ref name = "gn10862214">[{{Geonameslink|gnid=10862214|name=mitsuike%20koen}} Mitsuike Kōen] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2015-11-10; database download sa 2017-02-07</ref> <ref name = "vp">{{Cite web |url= {{Viewfinderlink}}|title= Viewfinder Panoramas Digital elevation Model|date= 2015-06-21|format= }}</ref> <ref name = "koppen">{{cite journal |last= Peel|first= M C|last2= Finlayson|first2= B L|date= |title= Updated world map of the Köppen-Geiger climate classification| url = http://www.hydrol-earth-syst-sci.net/11/1633/2007/hess-11-1633-2007.html |journal= Hydrology and Earth System Sciences|publisher= |volume= 11|issue= |pages= 1633-1644|doi= 10.5194/hess-11-1633-2007|access-date=30 Enero 2016}}</ref> <ref name = "nasa">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/dataset_index.php|title= NASA Earth Observations Data Set Index|access-date = 30 Enero 2016 |publisher= NASA}}</ref> <ref name = "nasarain">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/view.php?datasetId=TRMM_3B43M|title= NASA Earth Observations: Rainfall (1 month - TRMM)|access-date = 30 Enero 2016 |publisher= NASA/Tropical Rainfall Monitoring Mission}}</ref> </references> [[Kategoriya:Mga dapit sa Kanagawa-ken]] 4c2f74lawmp3q61stx06qfbcz9911v9 Lalawigan sa Đồng Tháp 0 7449043 37024578 37021562 2026-07-23T16:52:34Z Vietic2 134088 /* Tỉnh Đồng Tháp may sa mosunod nga mga subdivision */ 37024578 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Viyetnam|date=2017-03}} {{geobox | 1 = Region <!-- *** Header *** --> | name = Tỉnh Đồng Tháp | native_name = | other_name = Đồng Tháp | category = Lalawigan | official_name = | etymology = | motto = | nickname = <!-- *** Image *** --> | image = | image_caption = <!-- *** Symbols *** --> | flag = | symbol = <!-- *** Admin *** --> | country = {{flag|Viyetnam}} | country_flag = | state = | state_type = | region = | region_type = | district = | district_type = | economic_region = | economic_region_type = <!-- *** Associated with *** --> | border = | part = | city = | landmark = | river = <!-- *** Location *** --> | capital = Cao Lãnh | capital_type = | capital_location = | capital_region = | capital_country = | capital_elevation = | capital_lat_d = | capital_lat_m = | capital_lat_s = | capital_lat_NS = | capital_long_d = | capital_long_m = | capital_long_s = | capital_long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = | lowest = | lowest_location = | lowest_region = | lowest_country = | lowest_elevation = | lowest_lat_d = | lowest_lat_m = | lowest_lat_s = | lowest_lat_NS = | lowest_long_d = | lowest_long_m = | lowest_long_s = | lowest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | area = 3238.00 | area_decimals = <!-- *** Population *** --> | population = 1639400 | population_date = 2015-05-07 | population_density = auto | established = | date = | government_location = | government_region = | government_country = | government_elevation = | government_lat_d = | government_lat_m = | government_lat_s = | government_lat_NS = | government_long_d = | government_long_m = | government_long_s = | government_long_EW = | leader = | leader_party = <!-- *** Codes *** --> | timezone = [[Indochina Time|ICT]] | utc_offset = +7 | timezone_DST = | utc_offset_DST = | postal_code = | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_size = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Website *** --> | website = <!-- *** Notes *** --> | footnotes = | other_name1 = | lat_d = 10.58333 | long_d = 105.63333 | elevation = 4 | population_note = <ref name = "gn1582562"/> | timezone_label = Asia/Ho_Chi_Minh | map2 = Dong Thap in Vietnam.svg | iso_code = {{#property:P300}} }} <!--A.ADM1-->[[administratibo nga mga dibisyon sa Viyetnam|Lalawigan]] ang '''Tỉnh Đồng Tháp''' sa [[Viyetnam]].<ref name = "gn1582562"/> Nahimutang ni sa habagatang bahin sa nasod, {{formatnum:1200}} km sa habagatan sa [[Hanoi]] ang ulohan sa nasod. Adunay <!--pop-->{{formatnum:1639400}} ka molupyo.<ref name = "gn1582562"/> Naglangkob kin og {{formatnum:3238}} ka kilometro kwadrado. Tỉnh Đồng Tháp mopakigbahin sa usa ka utlanan sa Prey Veng (lalawigan). Ang yuta sa Tỉnh Đồng Tháp daghan kaayong patag.{{efn|group=saysay|Kalkulado gikan sa gitas-on data (DEM 3") gikan sa Viewfinder Panoramas.<ref name = "vp"/> Ang bug-os nga algoritmo anaa [https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framework/Lsjbot/Make-Geonames dinhi].}} ==Tỉnh Đồng Tháp may sa mosunod nga mga subdibisyon== *20 phường gồm: [[Phường Mỹ Tho]], [[Phường Đạo Thạnh]], [[Mỹ Phong|Phường Mỹ Phong]], [[Phường Thới Sơn]], [[Phường Trung An]], [[Phường Gò Công]], [[Phường Long Thuận]], [[Phường Bình Xuân]], [[Phường Sơn Qui]], [[Phường An Bình]], [[Phường Hồng Ngự]], [[Phường Thường Lạc]], [[Phường Cao Lãnh]], [[Phường Mỹ Ngãi]], [[Phường Mỹ Trà]], [[Phường Sa Đéc]], [[Phường Mỹ Phước Tây]], [[Phường Thanh Hòa]], [[Phường Cai Lậy]], [[Phường Nhị Quý]]. *82 xã gồm: [[Xã Tân Hồng]], [[Xã Tân Thành]], [[Xã Tân Hộ Cơ]], [[Xã An Phước]], [[Xã Thường Phước]], [[Xã Long Khánh]], [[Xã Long Phú Thuận]], [[Xã An Hòa]], [[Xã Tam Nông]], [[Xã Phú Thọ]], [[Xã Tràm Chim]], [[Xã Phú Cường]], [[Xã An Long]], [[Xã Thanh Bình]], [[Xã Tân Thạnh]], [[Xã Bình Thành]], [[Xã Tân Long]], [[Xã Tháp Mười]], [[Xã Thanh Mỹ]], [[Xã Mỹ Quí]], [[Xã Đốc Binh Kiều]], [[Xã Trường Xuân]], [[Xã Phương Thịnh]], [[Xã Phong Mỹ]], [[Xã Ba Sao]], [[Xã Mỹ Thọ]], [[Xã Bình Hàng Trung]], [[Xã Mỹ Hiệp]], [[Mỹ An Hưng]], [[Tân Khánh Trung]], [[Xã Lấp Vò]], [[Xã Lai Vung]], [[Xã Hòa Long]], [[Xã Phong Hòa]], [[Xã Tân Dương]], [[Xã Phú Hựu]], [[Xã Tân Nhuận Đông]], [[Xã Tân Phú Trung]], [[Xã Tân Phú]], [[Xã Thanh Hưng]], [[Xã An Hữu]], [[Xã Mỹ Lợi]], [[Xã Mỹ Đức Tây]], [[Xã Mỹ Thiện]], [[Xã Hậu Mỹ]], [[Xã Hội Cư]], [[Xã Cái Bè]], [[Xã Mỹ Thành]], [[Xã Thạnh Phú]], [[Xã Bình Phú]], [[Xã Hiệp Đức]], [[Xã Long Tiên]], [[Xã Ngũ Hiệp]], [[Xã Tân Phước 1]], [[Xã Tân Phước 2]], [[Xã Tân Phước 3]], [[Xã Hưng Thạnh]], [[Xã Tân Hương]], [[Xã Châu Thành]], [[Xã Long Hưng]], [[Xã Long Định]], [[Xã Bình Trưng]], [[Xã Vĩnh Kim]], [[Xã Kim Sơn]], [[Xã Mỹ Tịnh An]], [[Xã Lương Hòa Lạc]], [[Xã Tân Thuận Bình]], [[Xã Chợ Gạo]], [[Xã An Thạnh Thủy]], [[Xã Bình Ninh]], [[Xã Vĩnh Bình]], [[Xã Đồng Sơn]], [[Xã Phú Thành]], [[Xã Long Bình]], [[Xã Vĩnh Hựu]], [[Xã Gò Công Đông]], [[Xã Tân Điền]], [[Xã Tân Hòa]], [[Xã Tân Đông]], [[Xã Gia Thuận]], [[Xã Tân Thới]], [[Xã Tân Phú Đông]]. ==Sa mosunod nga mga natural nga mga bahin makita sa Tỉnh Đồng Tháp== * Mga suba: :* [[Rạch Cá Bãy]] (<!--H.STM-->[[suba]]) :* [[Rạch Cái Cai]] (<!--H.STM-->[[suba]]) :* [[Rạch Cái Cái]] (<!--H.STM-->[[suba]]) :* [[Rạch Cái Gân]] (<!--H.STM-->[[suba]]) :* [[Rạch Cái Gôc]] (<!--H.STM-->[[suba]]) :* [[Rạch Cái Sách]] (<!--H.STM-->[[suba]]) :* [[Rạch Cái Tre]] (<!--H.STM-->[[suba]]) :* [[Rạch Cần Lô]] (<!--H.STM-->[[suba]]) :* [[Rạch Đốc Váng Hạ]] (<!--H.STM-->[[suba]]) :* [[Rạch Ma Trương]] (<!--H.STM-->[[suba]]) :* [[Rạch Mỹ Ngãi]] (<!--H.STM-->[[suba]]) :* [[Rạch Sa Rài]] (<!--H.STM-->[[suba]]) :* [[Rạch Sầm Sai]] (<!--H.STM-->[[suba]]) :* [[Rạch Thanh Các]] (<!--H.STM-->[[suba]]) :* [[Rạch Thông Lưu (suba sa Tỉnh Đồng Tháp)|Rạch Thông Lưu]] (<!--H.STM-->[[suba]]) :* [[Rạch Trà Dư]] (<!--H.STM-->[[suba]]) :* [[Sông An Khánh]] (<!--H.STM-->[[suba]]) :* [[Sông Phú An (suba sa Tỉnh Đồng Tháp)|Sông Phú An]] (<!--H.STM-->[[suba]]) :* [[Sông Sa Đéc]] (<!--H.STM-->[[suba]]) :* [[Sông Sáng]] (<!--H.STM-->[[suba]]) :* [[Sông Lai Vung]] (<!--H.STM-->[[suba]]) * Mga kanal: :* [[Kênh Bà Khạo]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Bà Lái]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Bình Tiên]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Chà]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Dôn Điền]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Kà Lò]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Lấp]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Lung Cái]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Miếu Trắng]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Mới (kanal sa Tỉnh Đồng Tháp)|Kênh Mới]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Ngang]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Ông Huyện (kanal sa Tỉnh Đồng Tháp)|Kênh Ông Huyện]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Phóng Sanh]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Rạch Rung]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Thầy Năm]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Thầy Tám]] (<!--H.CNL-->[[kanal]]) :* [[Kênh Xã Khánh]] (<!--H.CNL-->[[kanal]]) :* [[Kinh An Phong]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Bà Chủ]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Cả Trạch]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Cái Bèo]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Cộng Hòa]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Gò Gia]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Hai Mươi Bảy]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Hai Mươi Lăm]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Hai Mươi Sáu]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Hòa Bình]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Hương Sư An]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Hương Sư Cung]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Hương Trưởng]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Lấp Vò]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Mới (kanal sa Tỉnh Đồng Tháp)|Kinh Mới]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Mương Khai]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Năm Ty]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Ngưu Sơn]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Nguyễn Văn Tiếp]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Ông Thomasini]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Số Một (kanal sa Tỉnh Đồng Tháp)|Kinh Số Một]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Tháp Mười]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Thầy Ba Đàn]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Thầy Ba Gỉ]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Thầy Cai (kanal sa Tỉnh Đồng Tháp)|Kinh Thầy Cai]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Thầy Cal]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Thống Nhất]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Thường Phước]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Trung Ương]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Tư Cũ]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Xang An Long]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Xáng Một]] (<!--H.CNL-->[[kanal]]) :* [[Kinh Xẻo Mít]] (<!--H.CNL-->[[kanal]]) :* [[Mương Bà Phú]] (<!--H.CNL-->[[kanal]]) :* [[Mương Rạch Trong]] (<!--H.CNL-->[[kanal]]) :* [[Ngả Cá Các]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Bần Góc]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Bằng Làng]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Bằng Lăng]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Cả Ngổ]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Cầu Sanh]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Cống Hai]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Giá (kanal)|Rạch Giá]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Giông Nội]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Gốc Cưa]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Ngõ Nhỏ]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Nhưng Lương]] (<!--H.CNL-->[[kanal]]) :* [[Ràch Ông Năm Lùng]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Xeo Lăng]] (<!--H.CNL-->[[kanal]]) :* [[Rạch Xẻo Sâu]] (<!--H.CNL-->[[kanal]]) * Kapuloan: :* [[Cồn Chài]] (<!--T.ISL-->[[pulo]]) :* [[Cồn Linh]] (<!--T.ISL-->[[pulo]]) :* [[Cù Lao Cái Vưng]] (<!--T.ISL-->[[pulo]]) :* [[Cù Lao Chà Và]] (<!--T.ISL-->[[pulo]]) :* [[Cù Lao Long Khành]] (<!--T.ISL-->[[pulo]]) :* [[Cù Lao Ma]] (<!--T.ISL-->[[pulo]]) :* [[Cù Lao Tây]] (<!--T.ISL-->[[pulo]]) {{Location map|Vietnam |float = right |width=300 | caption = Nahimutangan sa Tỉnh Đồng Tháp sa Viyetnam. | label = Tỉnh Đồng Tháp|position=right|background=white|lat=10.58333|long=105.63333}} == Saysay == <references group="saysay"/> == Ang mga gi basihan niini == <references> <ref name = "gn1582562">[{{Geonameslink|gnid=1582562|name=tinh%20gjong%20thap}} Tỉnh Đồng Tháp] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2015-05-07; database download sa 2017-02-28</ref> <ref name = "vp">{{Cite web |url= {{Viewfinderlink}}|title= Viewfinder Panoramas Digital elevation Model|date= 2015-06-21|format= }}</ref> </references> == Gikan sa gawas nga tinubdan== {{commonscat|Dong Thap Province|Tỉnh Đồng Tháp}} [[Kategoriya:Mga subdibisyon sa Viyetnam]] [[Kategoriya:Tỉnh Đồng Tháp| ]] im74fd0sna6q4kvn2jl92qjqy1hl0t0 Mỹ Phong 0 7456101 37024576 27458231 2026-07-23T16:51:21Z Vietic2 134088 Vietic2 moved page [[Xã Mỹ Phong (munisipyo sa Tỉnh Tiền Giang)]] to [[Mỹ Phong]] 27458231 wikitext text/x-wiki {{paghimo ni bot|Lsjbot|Viyetnam|date=2017-03}} :''Alang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang [[Xã Mỹ Phong]].'' {{geobox | 1 = Region <!-- *** Header *** --> | name = Xã Mỹ Phong | native_name = | other_name = | category = Munisipyo | official_name = | etymology = | motto = | nickname = <!-- *** Image *** --> | image = | image_caption = <!-- *** Symbols *** --> | flag = | symbol = <!-- *** Admin *** --> | country = {{flag|Viyetnam}} | country_flag = | state = [[Tỉnh Tiền Giang]] | state_type = Lalawigan | region = | region_type = | district = | district_type = | economic_region = | economic_region_type = <!-- *** Associated with *** --> | border = | part = | city = | landmark = | river = <!-- *** Location *** --> | capital = | capital_type = | capital_location = | capital_region = | capital_country = | capital_elevation = | capital_lat_d = | capital_lat_m = | capital_lat_s = | capital_lat_NS = | capital_long_d = | capital_long_m = | capital_long_s = | capital_long_EW = | highest = | highest_location = | highest_region = | highest_country = | highest_elevation = | highest_lat_d = | highest_lat_m = | highest_lat_s = | highest_lat_NS = | highest_long_d = | highest_long_m = | highest_long_s = | highest_long_EW = | lowest = | lowest_location = | lowest_region = | lowest_country = | lowest_elevation = | lowest_lat_d = | lowest_lat_m = | lowest_lat_s = | lowest_lat_NS = | lowest_long_d = | lowest_long_m = | lowest_long_s = | lowest_long_EW = <!-- *** Dimensions *** --> | length = | length_orientation = | width = | width_orientation = | area = | area_decimals = <!-- *** Population *** --> | population = | population_date = | population_density = <!-- *** History and politics *** --> | established = | date = | government_location = | government_region = | government_country = | government_elevation = | government_lat_d = | government_lat_m = | government_lat_s = | government_lat_NS = | government_long_d = | government_long_m = | government_long_s = | government_long_EW = | leader = | leader_party = <!-- *** Codes *** --> | timezone = [[Indochina Time|ICT]] | utc_offset = +7 | timezone_DST = | utc_offset_DST = | postal_code = | area_code = | code = <!-- *** Free *** --> | free = | free_type = <!-- *** Maps *** --> | map = | map_size = | map_caption = | map_locator_x = | map_locator_y = <!-- *** Website *** --> | website = <!-- *** Notes *** --> | footnotes = | lat_d = 10.38196 | long_d = 106.38397 | timezone_label = Asia/Ho_Chi_Minh | geonames = 8337758 }} <!--A.ADM3-->[[administratibo nga mga dibisyon sa Viyetnam|Munisipyo]] ang '''Xã Mỹ Phong''' sa [[Viyetnam]].<ref name = "gn8337758"/> Nahimutang ni sa lalawigan sa <!--ADM1-->[[Tỉnh Tiền Giang]], sa habagatang bahin sa nasod, {{formatnum:1200}} km sa habagatan sa [[Hanoi]] ang ulohan sa nasod. Ang [[klima nga savanna]].<ref name = "koppen"/> Ang kasarangang giiniton {{formatnum:25}} [[°C]]. Ang kinainitan nga bulan Mayo, sa {{formatnum:26}}&nbsp;[[°C]], ug ang kinabugnawan Enero, sa {{formatnum:23}}&nbsp;°C.<ref name = "nasa"/> Ang kasarangang pag-ulan {{formatnum:1705}} milimetro matag tuig. Ang kinabasaan nga bulan Septiyembre, sa {{formatnum:372}} milimetro nga ulan, ug ang kinaugahan Pebrero, sa {{formatnum:12}} milimetro.<ref name = "nasarain"/> {{Location map|Vietnam |float = right |width=300 | caption = Nahimutangan sa Xã Mỹ Phong sa Viyetnam. | label = Xã Mỹ Phong|position=right|background=white|lat=10.38196|long=106.38397}} == Ang mga gi basihan niini == <references> <ref name = "gn8337758">[{{Geonameslink|gnid=8337758|name=xa%20my%20phong}} Xã Mỹ Phong] sa [{{Geonamesabout}} Geonames.org (cc-by)]; post updated 2012-07-05; database download sa 2017-02-28</ref> <ref name = "koppen">{{cite journal |last= Peel|first= M C|last2= Finlayson|first2= B L|date= |title= Updated world map of the Köppen-Geiger climate classification| url = http://www.hydrol-earth-syst-sci.net/11/1633/2007/hess-11-1633-2007.html |journal= Hydrology and Earth System Sciences|publisher= |volume= 11|issue= |pages= 1633-1644|doi= 10.5194/hess-11-1633-2007|access-date=30 Enero 2016}}</ref> <ref name = "nasa">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/dataset_index.php|title= NASA Earth Observations Data Set Index|access-date = 30 Enero 2016 |publisher= NASA}}</ref> <ref name = "nasarain">{{Cite web |url= http://neo.sci.gsfc.nasa.gov/view.php?datasetId=TRMM_3B43M|title= NASA Earth Observations: Rainfall (1 month - TRMM)|access-date = 30 Enero 2016 |publisher= NASA/Tropical Rainfall Monitoring Mission}}</ref> </references> [[Kategoriya:Mga subdibisyon sa Tỉnh Tiền Giang]] 6pwbujgv6wcjzk4uuoldezvjdt8rgn1 Kategoriya:Austin Powers 14 10096518 37024554 35080950 2026-07-23T13:42:11Z Shrekiolous 144427 added [[Category:Mga prangkisa sa mass media]] using [[Help:Gadget-HotCat|HotCat]] 37024554 wikitext text/x-wiki Mga artikulo nga may kalabotan sa franchise sa ''[[Austin Powers]]''. [[Kategoriya:Amerikanong pelikula]] [[Kategoriya:Mga prangkisa sa mass media]] mlmvt3aqv9yfmlj9vfd9ebsywhckatr Kategoriya:Britanikong pelikula 14 10154025 37024552 30472199 2026-07-23T13:39:20Z Shrekiolous 144427 +[[Kategoriya:Mga pelikula sa nasud]]; ±[[Kategoriya:Pelikula]]→[[Kategoriya:Kultura sa Hiniusang Gingharian]] using [[Help:Gadget-HotCat|HotCat]] 37024552 wikitext text/x-wiki [[Kategoriya:Kultura sa Hiniusang Gingharian|Pelikula]] [[Kategoriya:Mga pelikula sa nasud]] ghmz5b9yo0sc272xnr3uajl4tjhb3vt 50 First Dates 0 10183411 37024642 37024112 2026-07-24T00:29:11Z ~2026-41265-79 146593 37024642 wikitext text/x-wiki Ang '''''50 First Dates''''' (2004) maoy [[Amerikano]]ng pelikula gidirek ni Peter Segal. ==Cast== *[[Adam Sandler]] *[[Drew Barrymore]] *[[Dan Aykroyd]] *[[Allen Covert]] *[[Blake Clark]] *[[Sean Astin]] [[Kategoriya:2004 nga mga pelikula]] [[Kategoriya:2004 nga mga pelikula sa komedya]] [[Kategoriya:Amerikanong pelikula]] [[Kategoriya:Mga pelikula sa Columbia Pictures]] [[Kategoriya:Mga pelikula sa Sony Pictures]] ==Musika nga mga 1980s at 1990s== Musika nga mga 1980s at 1990s tracklist. ===Tracklist=== {|class="wikitable" |- ! No. ! Title ! Artist ! Ref |- | style="background:#A7F432;"| 1 | style="background:#A7F432;"| Hold Me Now | style="background:#A7F432;"| Thompson Twins | style="background:#A7F432;"| <ref>{{Citation|title="Hold Me Now" by Thompson Twins|url=https://m.youtube.com/watch?v=TvzVTRK1nOY}}</ref> |- | style="background:#FF0000;"| 2 | style="background:#FF0000;"| Love Song | style="background:#FF0000;"| [[The Cure]] | style="background:#FF0000;"| <ref>{{Citation|title="Love Song" by The Cure|url=https://m.youtube.com/watch?v=ks_qOI0lzho}}</ref> |- | style="background:#6B4423;"| 3 | style="background:#6B4423;"| Lips Like Sugar | style="background:#6B4423;"| Echo & the Bunnymen | style="background:#6B4423;"| <ref>{{Citation|title="Lips Like Sugar" by Echo & the Bunnymen|url=https://m.youtube.com/watch?v=9hGcJA8fXvU}}</ref> |- | style="background:#00CCFF;"| 4 | style="background:#00CCFF;"| Your Love | style="background:#00CCFF;"| The Outfield | style="background:#00CCFF;"| <ref>{{Citation|title="Your Love" by The Outfield|url=https://m.youtube.com/watch?v=4N1iwQxiHrs}}</ref> |- | style="background:#0000FF;"| 5 | style="background:#0000FF;"| Drive | style="background:#0000FF;"| The Cars | style="background:#0000FF;"| <ref>{{Citation|title="Drive" by The Cars|url=https://m.youtube.com/watch?v=xuZA6qiJVfU}}</ref> |- | style="background:#967117;"| 6 | style="background:#967117;"| True | style="background:#967117;"| Spandau Ballet | style="background:#967117;"| <ref>{{Citation|title="True" by Spandau Ballet|url=https://m.youtube.com/watch?v=AR8D2yqgQ1U}}</ref> |- | style="background:#FF7F00;"| 7 | style="background:#FF7F00;"| Slave to Love | style="background:#FF7F00;"| Bryan Ferry | style="background:#FF7F00;"| <ref>{{Citation|title="Slave to Love" by Bryan Ferry|url=https://m.youtube.com/watch?v=9ZcaNQthV90}}</ref> |- | style="background:#007474;"| 8 | style="background:#007474;"| Every Breath You Take | style="background:#007474;"| The Police | style="background:#007474;"| <ref>{{Citation|title="Every Breath You Take" by The Police|url=https://m.youtube.com/watch?v=OMOGaugKpzs}}</ref> |- | style="background:#6A0DAD;"| 9 | style="background:#6A0DAD;"| Ghost in You | style="background:#6A0DAD;"| The Psychedelic Furs | style="background:#6A0DAD;"| <ref>{{Citation|title="Ghost in You" by The Psychedelic Furs|url=https://m.youtube.com/watch?v=T87u5yuUVi8}}</ref> |- | style="background:#FE4EDA;"| 10 | style="background:#FE4EDA;"| Friday, I'm in Love | style="background:#FE4EDA;"| [[The Cure]] | style="background:#FE4EDA;"| <ref>{{Citation|title="Friday, I'm in Love" by The Cure |url=https://m.youtube.com/watch?v=mGgMZpGYiy8}}</ref> |- | style="background:#C0C0C0;"| 11 | style="background:#C0C0C0;"| Breakfast in Bed | style="background:#C0C0C0;"| UB40 and Chrissie Hynde | style="background:#C0C0C0;"| <ref>{{Citation|title="Breakfast in Bed" by UB40 and Chrissie Hynde|url=https://m.youtube.com/watch?v=IKG3ykRMGiI}}</ref> |- | style="background:#FFFF00;"| 12 | style="background:#FFFF00;"| I Melt with You | style="background:#FFFF00;"| Modern English | style="background:#FFFF00;"| <ref>{{Citation|title="I Melt with You" by Modern English|url=https://m.youtube.com/watch?v=LuN6gs0AJls}}</ref> |} ==References== {{reflist}} sr8cswup7t2qpcmbt88zufqza0b7ll1 Kategoriya:Mga pelikula sa Doraemon 14 11338712 37024559 34899773 2026-07-23T13:47:45Z Shrekiolous 144427 removed [[Category:Anime]] using [[Help:Gadget-HotCat|HotCat]] 37024559 wikitext text/x-wiki [[Kategoriya:Doraemon|Pelikula]] [[Kategoriya:Haponng karton nga pelikula]] [[Kategoriya:Mga pelikula sa Toho]] 8ak20dztkjyjx85f3pjmlpt68xca557 Kategoriya:Haponng pelikula 14 11338718 37024555 34899715 2026-07-23T13:44:24Z Shrekiolous 144427 ±[[Kategoriya:Hapon]]→[[Kategoriya:Kultura sa Hapon]]; ±[[Kategoriya:Pelikula]]→[[Kategoriya:Mga pelikula sa nasud]] using [[Help:Gadget-HotCat|HotCat]] 37024555 wikitext text/x-wiki [[Kategoriya:Kultura sa Hapon|Pelikula]] [[Kategoriya:Mga pelikula sa nasud]] oashpx6z8jq3nr1qxy8kfwpg0dbxtws Module:Params 828 11344936 37024540 37024041 2026-07-23T13:27:35Z Grufo 121109 Update from [[d:Special:GoToLinkedPage/mediawikiwiki/Q122696746|master]] using [[mw:Synchronizer| #Synchronizer]] 37024540 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 = { transfer = 0, clone = 1, rename = 2, copy = 3, sacrifice = 4, provide = 5, spare = 7 } -- 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, argc 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 if mode == nil then mode, argc = 0, 3 else argc = 4 end if val == nil and mode > 1 then return context_iterate(ctx, argc) end local dest = get_parameter_name(opts[2]) local tmp = tbl[dest] == nil if mode % 2 == 0 or (mode == 7 and tmp) then tbl[src] = nil end if tmp or mode < 4 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 }) s0wwht3ty2l3u443tnfm9mh3z5pmpgj 37024644 37024540 2026-07-24T03:47:09Z Grufo 121109 Update from [[d:Special:GoToLinkedPage/mediawikiwiki/Q122696746|master]] using [[mw:Synchronizer| #Synchronizer]] 37024644 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 = { transfer = 0, clone = 1, rename = 2, copy = 3, sacrifice = 4, provide = 5, spare = 7 } -- 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 local insn = tonumber(opts[argc]) if len == 0 and (insn == nil or insn < 1) then error(modulename .. ', ‘splicing’: When the increment is zero the number of elements to write cannot be zero', 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 if insn == nil or insn < 0 or math.floor(insn) ~= insn then return context_iterate(ctx, argc) end tmp1 = argc - pos + 1 for key = pos, pos + insn - 1 do tbl[key] = opts[key + tmp1] end return context_iterate(ctx, argc + insn + 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, argc 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 if mode == nil then mode, argc = 0, 3 else argc = 4 end if val == nil and mode > 1 then return context_iterate(ctx, argc) end local dest = get_parameter_name(opts[2]) local tmp = tbl[dest] == nil if mode % 2 == 0 or (mode == 7 and tmp) then tbl[src] = nil end if tmp or mode < 4 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 }) 9ko1dij40e2ajwgg59fvqm72uoivi2f Blake Griffin 0 11349495 37024640 37005147 2026-07-23T22:50:51Z Sumo tomus 146587 File 37024640 wikitext text/x-wiki [[File:Blake Griffin.jpg|right|thumb|140px|upright|Griffin (2008)]] '''Si Blake Austin Griffin''' (natawo kaniadtong Marso 16, 1989) usa ka Amerikanong kanhi propesyonal nga magduduwa [https://en.wikipedia.org/w/index.php?search=Basketball&title=Special%3ASearch&profile=advanced&fulltext=1&ns0=1 sa basketball] . Si Griffin nanguna nga nagduwa uban sa [https://en.wikipedia.org/w/index.php?search=Los+Angeles+Clippers&title=Special%3ASearch&profile=advanced&fulltext=1&ns0=1 Los Angeles Clippers] sa [[National Basketball Association]] (NBA) ug nagdula og college basketball alang sa Oklahoma Sooners, diin siya ginganlan nga consensus national college player of the year isip usa ka sophomore. Si Griffin napili nga unang overall sa Clippers sa 2009 NBA draft, ug ka unom ka beses nga napili sa NBA All-Star ug lima ka beses nga napili sa All-NBA . Kaniadtong Enero 2018, si Griffin gi-trade ngadto sa Detroit Pistons ug nagduwa alang kanila hangtod sa 2021. 4i75v7c8jqswvrr0uksbuqxk0d7y8ph Kategoriya:Pransiyang pelikula 14 11354002 37024572 37020148 2026-07-23T14:27:38Z Shrekiolous 144427 ±[[Kategoriya:Pransiya]]→[[Kategoriya:Kultura sa Pransiya]]; ±[[Kategoriya:Pelikula]]→[[Kategoriya:Mga pelikula sa nasud]] using [[Help:Gadget-HotCat|HotCat]] 37024572 wikitext text/x-wiki [[Kategoriya:Kultura sa Pransiya|Pransiyang]] [[Kategoriya:Mga pelikula sa nasud]] sm7t1csm2h691tirqautn3ehxjcmv9l 37024573 37024572 2026-07-23T14:29:38Z Shrekiolous 144427 removed [[Category:Kultura sa Pransiya]]; added [[Category:Kultura sa Pransya]] using [[Help:Gadget-HotCat|HotCat]] 37024573 wikitext text/x-wiki [[Kategoriya:Kultura sa Pransya|Pransiyang]] [[Kategoriya:Mga pelikula sa nasud]] kdrbo0mn32eequq2qvo7cg07qph8ydj Kategoriya:Pilipinong pelikula 14 11354104 37024571 37020559 2026-07-23T14:26:42Z Shrekiolous 144427 ±[[Kategoriya:Pilipinas]]→[[Kategoriya:Kultura sa Pilipinas]]; ±[[Kategoriya:Pelikula]]→[[Kategoriya:Mga pelikula sa nasud]] using [[Help:Gadget-HotCat|HotCat]] 37024571 wikitext text/x-wiki [[Kategoriya:Kultura sa Pilipinas|Pelikula]] [[Kategoriya:Mga pelikula sa nasud]] q7im59s39nraepkfinzu956owox9vks Kategoriya:Indyang pelikula 14 11354175 37024569 37020723 2026-07-23T14:16:16Z Shrekiolous 144427 ±[[Kategoriya:Indiya]]→[[Kategoriya:Kultura sa Indiya]]; ±[[Kategoriya:Pelikula]]→[[Kategoriya:Mga pelikula sa nasud]] using [[Help:Gadget-HotCat|HotCat]] 37024569 wikitext text/x-wiki [[Kategoriya:Kultura sa Indiya|Pelikula]] [[Kategoriya:Mga pelikula sa nasud]] qtsvb0k9kft0awxpudr2lqkni7g8h71 Kategoriya:Kanadyanong pelikula 14 11354615 37024570 37022463 2026-07-23T14:25:55Z Shrekiolous 144427 ±[[Kategoriya:Kanada]]→[[Kategoriya:Kultura sa Kanada]]; ±[[Kategoriya:Pelikula]]→[[Kategoriya:Mga pelikula sa nasud]] using [[Help:Gadget-HotCat|HotCat]] 37024570 wikitext text/x-wiki [[Kategoriya:Kultura sa Kanada|Pelikula]] [[Kategoriya:Mga pelikula sa nasud]] k3zzhn0kwwnm2xhqqptvmcza2uspxmf Kategoriya:Mga pelikula sa nasud 14 11355087 37024539 2026-07-23T12:32:51Z Shrekiolous 144427 Created page with "[[Kategoriya:Pelikula| ]] [[Kategoriya:Mga nasod| Pelikula]]" 37024539 wikitext text/x-wiki [[Kategoriya:Pelikula| ]] [[Kategoriya:Mga nasod| Pelikula]] k8gsmrnio8cqga7mqycj6z5lc3u8hsf 37024541 37024539 2026-07-23T13:28:36Z Shrekiolous 144427 removed [[Category:Mga nasod]]; added [[Category:Mga kategoriya sa nasod]] using [[Help:Gadget-HotCat|HotCat]] 37024541 wikitext text/x-wiki [[Kategoriya:Pelikula| ]] [[Kategoriya:Mga kategoriya sa nasod|Pelikula]] kvq9fbsarm67h5u2uldc6knu7gswuby Kategoriya:Mga kategoriya sa nasod 14 11355088 37024542 2026-07-23T13:30:55Z Shrekiolous 144427 Created page with "[[Kategoriya:Mga nasod| ]] [[Kategoriya:Root| ]]" 37024542 wikitext text/x-wiki [[Kategoriya:Mga nasod| ]] [[Kategoriya:Root| ]] kw02ehorydoe8caws6b0mif8kr9gsxf Kategoriya:Ōita Prefecture 14 11355089 37024545 2026-07-23T13:35:33Z Fixer88 28406 Created page with "[[Kategoriya:Mga subdibisyon sa Hapon]]" 37024545 wikitext text/x-wiki [[Kategoriya:Mga subdibisyon sa Hapon]] tpspdvfbrkz44t3chlctoeoveh58ek7 37024549 37024545 2026-07-23T13:37:50Z Fixer88 28406 Fixer88 moved page [[Kategoriya:Ōita-ken]] to [[Kategoriya:Ōita Prefecture]] 37024545 wikitext text/x-wiki [[Kategoriya:Mga subdibisyon sa Hapon]] tpspdvfbrkz44t3chlctoeoveh58ek7 Kategoriya:Ōita-ken 14 11355090 37024550 2026-07-23T13:37:50Z Fixer88 28406 Fixer88 moved page [[Kategoriya:Ōita-ken]] to [[Kategoriya:Ōita Prefecture]] 37024550 wikitext text/x-wiki #REDIRECT [[:Kategoriya:Ōita Prefecture]] 0rz98qdu44yvguqwy28877tb8iwlxu9 Listahan sa mga iladong kompanya sa eroplano sa Equatorial Guinea 0 11355091 37024557 2026-07-23T13:46:16Z Youravreageavaitor 141554 Created page with "{| class="wikitable" |+ !Kompanya !media !gitas-on sa kinabuhi !mga nota |- |[[CEIBA Intercontinental]] |[[Payl:CEIBA Intercontinental ATR 42-500 SDV-3.jpg|thumb]] |2007-aktibo | |- |[[Cronos Airlines]] | |2007-aktibo | |- |[[Ecuato Guineana]] |[[Payl:Fokker F-27 Friendship EGA - Equatorial Guinee Airlines F-BIUK, LBG Paris (Le Bourget), France PP1257672453.jpg|thumb]] |1986-2007 | |- |[[Guinea Ecuatorial Airlines]] |Payl:GEASA Yakovlev Yak-40 at Malabo Airport.jpeg|th..." 37024557 wikitext text/x-wiki {| class="wikitable" |+ !Kompanya !media !gitas-on sa kinabuhi !mga nota |- |[[CEIBA Intercontinental]] |[[Payl:CEIBA Intercontinental ATR 42-500 SDV-3.jpg|thumb]] |2007-aktibo | |- |[[Cronos Airlines]] | |2007-aktibo | |- |[[Ecuato Guineana]] |[[Payl:Fokker F-27 Friendship EGA - Equatorial Guinee Airlines F-BIUK, LBG Paris (Le Bourget), France PP1257672453.jpg|thumb]] |1986-2007 | |- |[[Guinea Ecuatorial Airlines]] |[[Payl:GEASA Yakovlev Yak-40 at Malabo Airport.jpeg|thumb]] |1996-2010s | |- |[[Jetline]] |[[Payl:Ильюшин Ил-62 4648414, Москва - Домодедово RP6570.jpg|thumb]] |1999-? | |- |[[Punto Azul]] |[[Payl:PR-PSR E145 (8664101150).jpg|thumb]] |2015-2019 | |} mqxvaxvjyoh42cd6ypfw36gs4bodmf6 Kategoriya:Haponng karton nga seryeng pantelebisyon 14 11355092 37024560 2026-07-23T13:52:14Z Shrekiolous 144427 Created page with "[[Kategoriya:Haponng seryeng pantelebisyon]] [[Kategoriya:Karton nga seryeng pantelebisyon]]" 37024560 wikitext text/x-wiki [[Kategoriya:Haponng seryeng pantelebisyon]] [[Kategoriya:Karton nga seryeng pantelebisyon]] oij48n2ak1l5h2y2zejicwcnwwm4k61 CEIBA Intercontinental 0 11355093 37024561 2026-07-23T13:53:06Z Youravreageavaitor 141554 Created page with "[[Payl:CEIBA Intercontinental ATR 42-500 SDV-1.jpg|thumb|CIEBA ATR 42s]] Ang CEIBA Intercontinental usa ka airline nga nagsilbing flag carrier sa Republika sa Equatorial Guinea. Natukod niadtong 2007, sa sinugdanan migamit kini sa 737 apan gihunong na ang paggamit niini nga matang sa ayroplano.<ref>https://www.planespotters.net/airline/Ceiba-Intercontinental</ref><ref>https://www.ch-aviation.com/airlines/CEI</ref> == mga pakisayran ==" 37024561 wikitext text/x-wiki [[Payl:CEIBA Intercontinental ATR 42-500 SDV-1.jpg|thumb|CIEBA ATR 42s]] Ang CEIBA Intercontinental usa ka airline nga nagsilbing flag carrier sa Republika sa Equatorial Guinea. Natukod niadtong 2007, sa sinugdanan migamit kini sa 737 apan gihunong na ang paggamit niini nga matang sa ayroplano.<ref>https://www.planespotters.net/airline/Ceiba-Intercontinental</ref><ref>https://www.ch-aviation.com/airlines/CEI</ref> == mga pakisayran == nv8ohj0b0fwads0jmg7ly9cjsjf9b7a 37024562 37024561 2026-07-23T13:54:16Z Youravreageavaitor 141554 37024562 wikitext text/x-wiki [[Payl:CEIBA Intercontinental ATR 42-500 SDV-1.jpg|thumb|CIEBA ATR 42s]] Ang CEIBA Intercontinental usa ka airline nga nagsilbing flag carrier sa Republika sa Equatorial Guinea. Natukod niadtong 2007, sa sinugdanan migamit kini sa 737 apan gihunong na ang paggamit niini nga matang sa ayroplano.<ref>https://www.planespotters.net/airline/Ceiba-Intercontinental</ref><ref>https://www.ch-aviation.com/airlines/CEI</ref> == Tan-awa usab == [[Listahan sa mga iladong kompanya sa eroplano sa Equatorial Guinea]] == mga pakisayran == ifyw4b3k5f0uqv8m5ghoha1paxs4moo Kategoriya:Haponng seryeng pantelebisyon 14 11355094 37024563 2026-07-23T13:54:29Z Shrekiolous 144427 Created page with "[[Kategoriya:Seryeng pantelebisyon]] [[Kategoriya:Telebisyon sa Hapon]]" 37024563 wikitext text/x-wiki [[Kategoriya:Seryeng pantelebisyon]] [[Kategoriya:Telebisyon sa Hapon]] 35kujdd969px74enw7c0pcetjklnuto Kategoriya:Tokyo 14 11355095 37024566 2026-07-23T14:00:09Z Fixer88 28406 Created page with "[[Kategoriya:Mga subdibisyon sa Hapon]]" 37024566 wikitext text/x-wiki [[Kategoriya:Mga subdibisyon sa Hapon]] tpspdvfbrkz44t3chlctoeoveh58ek7 Kategoriya:Mga telebisyon sa nasud 14 11355096 37024567 2026-07-23T14:06:51Z Shrekiolous 144427 Created page with "[[Kategoriya:Telebisyon| ]] [[Kategoriya:Mga kategoriya sa nasod|Telebisyon]]" 37024567 wikitext text/x-wiki [[Kategoriya:Telebisyon| ]] [[Kategoriya:Mga kategoriya sa nasod|Telebisyon]] tnzfnvb4hvmceem260hadkrdvz9e51l Kategoriya:Telebisyon sa Hapon 14 11355097 37024568 2026-07-23T14:10:52Z Shrekiolous 144427 Created page with "[[Kategoriya:Kultura sa Hapon]] [[Kategoriya:Mga telebisyon sa nasud|Hapon]]" 37024568 wikitext text/x-wiki [[Kategoriya:Kultura sa Hapon]] [[Kategoriya:Mga telebisyon sa nasud|Hapon]] 6j3crh1tq7rcvi6naysdzsdd0pqbsat Xã Mỹ Phong (munisipyo sa Tỉnh Tiền Giang) 0 11355098 37024577 2026-07-23T16:51:22Z Vietic2 134088 Vietic2 moved page [[Xã Mỹ Phong (munisipyo sa Tỉnh Tiền Giang)]] to [[Mỹ Phong]] 37024577 wikitext text/x-wiki #REDIRECT [[Mỹ Phong]] se4fpyvhvo33k5jbbohqw4086ibn0nt Kategoriya:Balearic Islands 14 11355099 37024591 2026-07-23T19:36:43Z Fixer88 28406 Created page with "[[Kategoriya:Mga subdibisyon sa Espanya]]" 37024591 wikitext text/x-wiki [[Kategoriya:Mga subdibisyon sa Espanya]] jkvkvlwf586p8k0e6qn51dr6g321o64 Kategoriya:Heyograpiya sa Makedoniya sa munisipyo 14 11355100 37024602 2026-07-23T19:53:31Z Fixer88 28406 Fixer88 moved page [[Kategoriya:Heyograpiya sa Makedoniya sa munisipyo]] to [[Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] 37024602 wikitext text/x-wiki #REDIRECT [[:Kategoriya:Heyograpiya sa Amihanang Makedoniya sa munisipyo]] 1w62yrgkxumknuwbnrasieuy0uu6s4f Kategoriya:Inglatera 14 11355101 37024629 2026-07-23T20:23:25Z Fixer88 28406 Created page with "[[Kategoriya:Mga subdibisyon sa Hiniusang Gingharian]]" 37024629 wikitext text/x-wiki [[Kategoriya:Mga subdibisyon sa Hiniusang Gingharian]] rfch5t7jidzsztz4h3e1v5hget02hxw P. D. Eastman 0 11355103 37024649 2026-07-24T07:55:01Z Shrekiolous 144427 Created page with "'''Philip Dey Eastman''' (Nobiyembre 25, 1909 – Enero 7, 1986), gianggaan '''P. D. Eastman''', usa ka Amerikanong screenwriter, tagsulat sa libro sa mga bata, ug ilustrador.<ref>http://www.pdeastmanbooks.com/</ref> == Mga reperensya == <references /> {{saha}} [[Kategoriya:Mga Amerikanong magsusulat]] [[Kategoriya:Mga natawo sa 1909]] [[Kategoriya:Mga namatay sa 1986]] [[Kategoriya:Mga natawo sa Nobiyembre 25]] [[Kategoriya:Mga namatay sa Enero 7]]" 37024649 wikitext text/x-wiki '''Philip Dey Eastman''' (Nobiyembre 25, 1909 – Enero 7, 1986), gianggaan '''P. D. Eastman''', usa ka Amerikanong screenwriter, tagsulat sa libro sa mga bata, ug ilustrador.<ref>http://www.pdeastmanbooks.com/</ref> == Mga reperensya == <references /> {{saha}} [[Kategoriya:Mga Amerikanong magsusulat]] [[Kategoriya:Mga natawo sa 1909]] [[Kategoriya:Mga namatay sa 1986]] [[Kategoriya:Mga natawo sa Nobiyembre 25]] [[Kategoriya:Mga namatay sa Enero 7]] 7pgyz1672voiuyy8maarya270y850sb