विकिपीडिया magwiki https://mag.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A5%8D%E0%A4%AF%E0%A4%AA%E0%A4%A8%E0%A5%8D%E0%A4%A8%E0%A4%BE MediaWiki 1.47.0-wmf.20 first-letter मीडिया विशेष वार्ता प्रयोगकर्ता प्रयोगकर्ता वार्ता विकिपीडिया विकिपीडिया वार्ता सञ्चिका सञ्चिका वार्ता मीडियाविकि मीडियाविकि वार्ता साँचा साँचा वार्ता सहयोग सहयोग वार्ता श्रेणी श्रेणी वार्ता TimedText TimedText talk घटक घटक वार्ता Event Event talk साँचा:BSsplit 10 88 80395 62017 2026-09-21T17:05:43Z ऐक्टिवेटेड् 76 80395 wikitext text/x-wiki <includeonly><templatestyles src="Routemap/styles.css"/>{{#invoke:Routemap|BSsplit}}</includeonly><noinclude> {{documentation}} </noinclude> kiftgjl8g40oamfuofubmy9k1lqkxup साँचा:Fontcolor 10 424 80383 62202 2026-09-21T16:29:09Z ऐक्टिवेटेड् 76 [[साँचा:Font color]] के पुनर्निर्देशित 80383 wikitext text/x-wiki #REDIRECT [[साँचा:Font color]] etkd91sydcj2qm6pdrey33ink1hyhqd साँचा:Maplink 10 890 80419 62391 2026-09-21T18:24:33Z ऐक्टिवेटेड् 76 80419 wikitext text/x-wiki <includeonly>{{#invoke:Mapframe|main}}</includeonly><noinclude> {{Maplink|frame=yes|zoom=9|frame-lat=35.90|frame-long=-106.56|text=Mapframe|from=ecos.fws.gov/Endangered habitat 58938/Plethodon neomexicanus.map}} {{Maplink|display=inline,title|text=Maplink|from=ecos.fws.gov/Endangered habitat 58938/Plethodon neomexicanus.map}} {{documentation}} </noinclude> od34zqgaqqtudhriiswwpsnl32uhgv7 साँचा:Railway-routemap 10 1064 80401 62478 2026-09-21T17:33:13Z ऐक्टिवेटेड् 76 80401 wikitext text/x-wiki एह {{#ifexist:{{{2}}}|<!-- supresses the word "the" -->{{#if:{{{the|}}}||the&#32;}}[[{{{2}}}|<!-- italicize linked page -->{{#ifeq:{{lc:{{{display}}}}}|i|''{{{2}}}''|{{{display|{{{2}}}}}}}}]],}} {{#if:{{{place|}}}|{{{place}}}{{#if:{{#invoke:Ustring|match|1={{{place}}}|2=%Aand$}}||,}}}} {{Routemap/if empty codes|{{{1}}}}} मे {{#switch:{{lc:{{{cat}}}}}|s|stn|vs|vics|ws|was|station={{{type|station}}}|seg|segment={{{type|[[Wikipedia:Route diagram template|RDT]] segment}}}|#default={{{type|रेल}}}}} लागि एगो मार्ग-मानचित्र साँचा हे । {{Routemap/embeded text}} {{Template other|{{#switch:{{lc:{{{cat}}}}} | no = | #default = {{#switch:{{lc:{{{1}}}}} | ao | ago <!-- Angola --> | ar | arg <!-- Argentina --> | am | arm <!-- Armenia --> | aw | abw <!-- Aruba --> | az | aze <!-- Azerbaijan --> | by | blr <!-- Belarus --> | be | bel <!-- Belgium --> | ba | bih <!-- Bosnia and Herzegovina --> | bm | bmu <!-- Bermuda --> | bw | bwa <!-- Botswana --> | br | bra <!-- Brazil --> | bg | bgr <!-- Bulgaria --> | ca | can <!-- Canada --> | cl | chl <!-- Chile --> | cr | cri <!-- Costa Rica --> | dz | dza <!-- Algeria --> | hr | hrv <!-- Croatia --> | cu | cub <!-- Cuba --> | dk | dnk <!-- Denmark --> | fi | fin <!-- Finland --> | hk | hkg <!-- Hong Kong --> | ir | irn <!-- Iran --> | it | ita <!-- Italy --> | jp | jpn <!-- Japan --> | jo | jor <!-- Jordan --> | la | lao <!-- Laos --> | ma | mar <!-- Morocco --> | mx | mex <!-- Mexico --> | mu | mus <!-- Mauritius --> | na | nam <!-- Namibia --> | np | npl <!-- Nepal --> | no | nor <!-- Norway --> | kp | prk <!-- North Korea --> | pa | pan <!-- Panama --> | pe | per <!-- Peru --> | pr | pri <!-- Puerto Rico --> | qa | qat <!-- Qatar --> | ro | rou <!-- Romania --> | ru | rus <!-- Russia --> | sa | sau <!-- Saudi Arabia --> | sn | sen <!-- Senegal --> | kr | kor <!-- South Korea --> | es | esp <!-- Spain --> | ch | che <!-- Switzerland --> | sy | syr <!-- Syria --> | tz | tza <!-- Tanzania --> | tn | tun <!-- Tunisia --> | tr | tur <!-- Turkey --> | ua | ukr <!-- Ukraine --> | uz | uzb <!-- Uzbekistan --> | vn | vnm <!-- Vietnam --> | zm | zmb <!-- Zambia --> = [[श्रेणी:Templates for railway lines in {{Iso2country|{{If empty|{{ISO 3166 code|nocat=true|{{{1}}}}}|{{uc:{{{1}}}}}}}}}{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | cz | cze <!-- Czech Republic --> | ph | phl <!-- Philippines --> | im | imn <!-- Isle of Man --> | ae | uae <!-- United Arab Emirates --> = [[श्रेणी:Templates for railway lines in the {{Iso2country|{{If empty|{{ISO 3166 code|nocat=true|{{{1}}}}}|{{uc:{{{1}}}}}}}}}{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | at | aut <!-- Austria --> | bd | bgd <!-- Bangladesh --> | fr | fra <!-- France --> | de | deu <!-- Germany --> | gr | grc <!-- Greece --> | hu | hun <!-- Hungary --> | in | ind <!-- India --> | id | idn <!-- Indonesia --> | il | isr <!-- Israel --> | jm | jam <!-- Jamaica --> | ke | ken <!-- Kenya --> | lv | lva <!-- Latvia --> | lt | ltu <!-- Lithuania --> | lu | lux <!-- Luxembourg --> | my | mys <!-- Malaysia --> | ml | mli <!-- Mali --> | mt | mlt <!-- Malta --> | mr | mrt <!-- Mauritania --> | mm | mmr <!-- Myanmar --> | nz | nzl <!-- New Zealand --> | pk | pak <!-- Pakistan --> | pl | pol <!-- Poland --> | pt | prt <!-- Portugal --> | rs | srb <!-- Serbia --> | si | svn <!-- Slovenia --> | za | zaf <!-- South Africa --> | lk | lka <!-- Sri Lanka --> | se | swe <!-- Sweden --> | tw | twn <!-- Taiwan --> = [[श्रेणी:Templates for railway lines of {{Iso2country|{{If empty|{{ISO 3166 code|nocat=true|{{{1}}}}}|{{uc:{{{1}}}}}}}}}{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | nl | nld <!-- Netherlands --> | ae | are <!-- United Arab Emirates --> | gb | gbr | uk <!-- United Kingdom --> | us | usa <!-- United States --> = [[श्रेणी:Templates for railway lines of the {{Iso2country|{{If empty|{{ISO 3166 code|nocat=true|{{{1}}}}}|{{uc:{{{1}}}}}}}}}{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | au | aus <!-- Australia --> = {{#switch:{{lc:{{{cat}}}}} | ns | nsw = [[श्रेणी:New South Wales route diagram templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | q | qld = [[श्रेणी:Queensland route diagram templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | v | vic = [[श्रेणी:Victoria (state) route diagram templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | vs | vics = [[श्रेणी:Victoria (state) station layout templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | w | wa = [[श्रेणी:Western Australia rail transport templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | ws | was = [[श्रेणी:Western Australia station layout templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | n | nt | s | sa | t | tas | #default = [[श्रेणी:Templates for railway lines of Australia{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] }} | afr = [[श्रेणी:Templates for railway lines in Africa{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | eu | eur = <!-- Europe --> | ct | cat = [[श्रेणी:Templates for railway lines in Catalonia{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}‎]] | cn | chn = [[श्रेणी:Templates for railway lines in China{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}‎]] | cd | cod = [[श्रेणी:Templates for railway lines in the Democratic Republic of the Congo{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}‎]] | ko = [[श्रेणी:Templates for railway lines in Korea{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] <!-- not an official code --> | ge | geo = [[श्रेणी:Templates for railway lines of Georgia (country)|{{uc:{{{1}}}}}}}}} (country){{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | ie | irl = [[श्रेणी:Templates for railway lines of Ireland{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | nil = [[श्रेणी:Templates for railway lines of Northern Ireland{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}‎]] | af | afg = [[श्रेणी:Rail transport in Afghanistan{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | mn | mng = [[श्रेणी:Rail transport in Mongolia{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | va | vat = [[श्रेणी:Rail transport in Vatican City{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | sg | sgp = [[श्रेणी:Singapore transport route diagram templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | th | tha = [[श्रेणी:Thailand transport route diagram templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | ee | est = [[श्रेणी:Estonia rail transport templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | #default = }} }} {{#switch:{{lc:{{{cat}}}}} | s | stn | station = [[श्रेणी:{{#switch:{{lc:{{{1}}}}} | au | aus = Australia | cn | chn = China | gr | grc = Greece | hk | hkg = Hong Kong | jp | jpn = Japan | nl | nld = Netherlands | no | nor = Norway | nz | nzl = New Zealand | sg | sgp = Singapore | gb | gbr | uk | nil = United Kingdom | us | usa = United States }} station layout templates{{#if:{{{catidx|}}}|{{!}}{{{catidx}}}|}}]] | seg | segment = [[श्रेणी:{{Iso2country|{{If empty|{{ISO 3166 code|nocat=true|{{{1}}}}}|{{uc:{{{1}}}}}}}}} route diagram template segments]] }} }}<noinclude> {{Documentation}} </noinclude> brgfhwzo221oie2rnflqjfz68md186m साँचा:Railway line legend 10 1065 80402 62479 2026-09-21T17:34:32Z ऐक्टिवेटेड् 76 80402 wikitext text/x-wiki {{BS-map |collapse={{{1|no}}} |title=प्रतीक&nbsp;लागि&nbsp;कुञ्जी |navbar=Railway line legend |legend=no |top= <center> {{{!}} class="wikitable" style="text-align:center" ! colspan="6" {{!}} वर्ण योजना {{!}}- ! colspan="3" style="background:#ffaaaa"{{!}}भारी रेल अथवा माल लाइन ! colspan="3" style="background:#aaaaff"{{!}}लघु रेल अथवा मेट्रो लाइन {{!}}- {{!}} सक्रिय {{!}} निष्फल {{!}} सुरङ्ग {{!}} सक्रिय {{!}} निष्फल {{!}} सुरङ्ग {{!}}- {{!}} [[सञ्चिका:BSicon STR.svg|20px]] {{!}} [[सञ्चिका:BSicon exSTR.svg|20px]] {{!}} [[सञ्चिका:BSicon tSTR.svg|20px]] {{!}} [[सञ्चिका:BSicon uSTR.svg|20px]] {{!}} [[सञ्चिका:BSicon uexSTR.svg|20px]] {{!}} [[सञ्चिका:BSicon utSTR.svg|20px]] {{!}}} |map= {{BS2||KBHFa||टर्मिनस}} {{BS2||BHF||प्रमुख स्टेशन}} {{BS2||ACC||विकलाङ्गला सुलभ स्टेशन}} {{BS2||HSTACC||विकलाङ्गला सुलभ कर्मीदलरहित/छोटा स्टेशन}} {{BS2||pBHF||केवल स्थानीय सेवा लागि स्टेशन, कौनो एक्सप्रेस सेवा नै}} {{BS2||HST||कर्मीदलरहित/छोटा स्टेशन}} {{BS2||pHST||कर्मीदलरहित/छोटा स्टेशन केवल स्थानीय सेवा हेतु स्टेशन, कौनो एक्सप्रेस सेवा नै}} {{BS2||eBHF||खुली लाइन पर असक्रिय अथवा योजनाकृत स्टेशन}} {{BS2||INT||अन्तर्विनिमय स्टेशन (उपनगरीय/लाइट रेल सञ्जाल सङ्गे)}} {{BS2||INTACC||विकलाङ्गला सुलभ अन्तर्विनिमय स्टेशन (उपनगरीय/लाइट रेल सञ्जाल सङ्गे)}} {{BS2||eINT||खुली लाइन पर असक्रिय अथवा योजनाकृत अन्तर्विनिमय स्टेशन}} {{BS2||DST||डिपो/माल स्टेशन}} {{BS2||eDST||खुली लाइन पर असक्रिय अथवा योजनाकृत डिपो/माल स्टेशन}} {{BS2|exSTRq|eABZgr||एक असक्रिय अथवा योजनाकृत लाइन लागि जङ्क्शन}} {{BS2|STRq|ABZgr||जङ्क्शन}} {{BS2|STRq|KRZo||एक अन्य लाइन पर सेतु}} {{BS2|STRq|KRZu||एक अन्य लाइनके नीचे सेतु}} {{BS2|STRq|KRZ||सपाट क्रासिङ्ग}} {{BS2|STRq|TBHF||जङ्क्शन पर अन्तर्विनिमय स्टेशन (अनिर्धारित संरचना)}} {{BS2|STRq|TBHFo||उच्च स्तरीय स्टेशन}} {{BS2|STR+l|ABZgr+r||त्रिकोणीय जङ्क्शन}} {{BS2|XBHF-L|XBHF-R||प्लेटफार्म-पार अन्तर्विनिमय}} {{BS2|BHF|O1=HUBaq|BHF|O2=HUBeq||परिवहन केन्द्र अथवा परिसर}} {{BS2|CONTf|STR||मार्गचित्रसे दूर रवाना मार्ग}} {{BS2||STRf||निर्दिष्ट दिशामे एक तरफा ट्रैक}} {{BS2||LSTR||व्यवधान}} {{BS2||STRo||ऊपरी सेतु}} {{BS2||SKRZ-Ao||मोटरमार्ग}} {{BS2||SKRZ-Bo||मोटरमार्ग (ब्रिटिश प्रतीक)}} {{BS2||hKRZWae||पानीके ऊपरे सेतु}} {{BS2||SBRÜCKE||अण्डरब्रिज}} {{BS2||TUNNEL1||सुरङ्ग}} {{BS2||TUNNEL1W||पानीके नीचे सुरङ्ग}} {{BS2||CSTR||कट}} {{BS2||hSTR||ऊपरे उठल लाइन}} {{BS2||DSTR||बन्धान}} {{BS2||GIPl||चोटी}} {{BS2||KMW||माइलेजमे परिवर्तन}} {{BS2||STR+GRZq||किराया क्षेत्र अथवा प्रादेशिक सीमा}} {{BS2||ZOLL||अन्तर्राष्ट्रिय सीमा}} {{BS2||PSL||लूप गुजरैत हे}} {{BS2||ÜST||ट्रैक स्विच/क्रासओवर}} {{BS2||BUE||क्रासिङ्ग}} {{BS2|PARKING|BHF||पार्किङ्ग युक्त स्टेशन}} {{BS2||TRAJEKT||फेरी (मार्गके अभिन्न भाग)}} {{BS2|BOOT|BHF||घाट/नौका पियर (स्वतन्त्र) लागि स्टेशन}} {{BS2|FLUG|BHF||विमानस्थलला स्टेशन}} {{BS2|HELI|BHF||हेलीपोर्टला स्टेशन}} {{BS2|BUS|INT||बस, छोट बस अथवा कोच लेवेला अन्तर्विनिमय स्टेशन}} {{BS2|BAHN|INT||पारम्परिक लम्बा दूरीके ट्रेनला अन्तर्विनिमय स्टेशन}} {{BS2|LDER|INT||उच्च-गति ट्रेनला अन्तर्विनिमय स्टेशन}} {{BS2|SUBWAY|INT||मेट्रो/सबवे लागि अन्तर्विनिमय स्टेशन}} {{BS2|TRAM|INT||ट्राम अथवा लाइट रेल लागि अन्तर्विनिमय स्टेशन}} {{BS2|AETRAM|INT||हवाई ट्राम वा केबल कार लागि अन्तर्विनिमय स्टेशन}} {{BS2|FUNI|INT||रज्जुरेल अथवा रैक रेलवे लागि अन्तर्विनिमय स्टेशन}} {{BS2|lDAMPF|INT||सङ्ग्रहालय वा धरोहर रेलवे लागि अन्तर्विनिमय स्टेशन}} {{BS2|MONO|INT||मोनोरेल लागि अन्तर्विनिमय स्टेशन}} {{BS2||ENDEe||खुला लाइन पर लाइन समाप्ति}} }}<noinclude> {{Documentation}} </noinclude> ogocx1ywd1s992pmda5tl0x2iszqchm साँचा:Routemap 10 1090 80403 62490 2026-09-21T17:34:57Z ऐक्टिवेटेड् 76 80403 wikitext text/x-wiki <includeonly><templatestyles src="Routemap/styles.css"/>{{#invoke:Routemap|infobox}}</includeonly><noinclude> {{documentation}}</noinclude> d1zn47zpxtbpi8bxtcdrbocv7adlxh6 साँचा:Routemap/styles.css 10 1093 80394 3417 2026-09-21T17:05:14Z ऐक्टिवेटेड् 76 80394 sanitized-css text/css /* {{pp-template}} */ /* container */ .RMbox { box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12), 0 3px 1px -2px rgba(0,0,0,.2); } .RMinline { float: none; width: 100%; margin: 0; border: none; } .RMmaptitle { background: #EEEEEE; color: #252525; } .RMtitle a, .RMtitle a:visited, .RMmaptitle a, .RMmaptitle a:visited { color: inherit !important; } .RMbox small, .RMinline small { color: inherit; } /* diagram table */ table.routemap { padding: 0; border: 0; border-collapse: collapse; white-space: nowrap; line-height: 1.2; margin: auto; } /* collapsible section tables */ table.routemap .RMcollapse { margin: 0; border-collapse: collapse; vertical-align: middle; } /* collapsible section row replacement tables */ table.routemap .RMreplace { margin: 0; border-collapse: collapse; vertical-align: middle; position: absolute; bottom: 0; } /* small text in side cells */ table.routemap .RMsi { display: inline; /* HTML Tidy forced the use of div instead of span */ font-size: 90%; } /* icon row container */ table.routemap .RMir { padding: 0 !important; } /* first left cell */ table.routemap .RMl1 { padding: 0 3px !important; text-align: left; } /* first right cell */ table.routemap .RMr1 { padding: 0 3px !important; text-align: right; } /* main left cell */ table.routemap .RMl { padding: 0 !important; text-align: right; } /* main right cell */ table.routemap .RMr { padding: 0 !important; text-align: left; } /* leftmost cell */ table.routemap .RMl4 { padding: 0 3px 0 0 !important; text-align: left; } /* rightmost cell */ table.routemap .RMr4 { padding: 0 0 0 3px !important; text-align: right; } /* table rows */ table.routemap > tbody > tr { line-height: 1; } /* all table cells */ table.routemap > tbody > tr > td, table.RMcollapse > tbody > tr > td, table.RMreplace > tbody > tr > td{ padding: 0; width: auto; vertical-align: middle; text-align: center; } /* icon row inline divs */ .RMir > div { display: inline-block; vertical-align: middle; padding: 0; height: 20px; min-height: 20px; } /* icons */ .RMir img { height: initial !important; /* Monobook uses !important */ max-width: initial !important; /* Monobook uses !important */ } /* text cells */ .RMir .RMtx { line-height: 20px; height: 20px; min-height: 20px; vertical-align: middle; text-align: center; } /* empty cells */ .RMir .RMsp { height: 20px; min-height: 20px; } /* text in text cells */ .RMir .RMtx > abbr, .RMir .RMtx > div { line-height: .975; display: inline-block; vertical-align: middle; } .RMbox .navbar-brackets a, .RMbox .navbar-brackets a:visited, .RMbox .navbar-brackets a abbr, .RMinline .navbar-brackets a, .RMinline .navbar-brackets a:visited, .RMinline .navbar-brackets a abbr { color: inherit !important; } /* overlap containers */ .RMir .RMov { position: relative; } /* overlap icons and text cells */ .RMir .RMov .RMic, .RMir .RMov .RMtx { position: absolute; left: 0; top: 0; padding: 0; } /* small text */ .RMir .RMts { font-size: 90%; transform: scaleX(.89); } /* filler cells */ .RMir .RMf_ { height: 5px; min-height: 5px; width: 20px; min-width: 20px; } /* "line" in filler cells */ .RMir .RMfm { height: 100%; min-height: 100%; width: 4px; min-width: 4px; margin: 0 auto; } /* widths */ .RMir .RMo{width:2.5px;min-width:2.5px} .RMir .RMc{width:5px;min-width:5px} .RMir .RMoc{width:7.5px;min-width:7.5px} .RMir .RMd{width:10px;min-width:10px} .RMir .RMod{width:12.5px;min-width:12.5px} .RMir .RMcd{width:15px;min-width:15px} .RMir .RMocd{width:17.5px;min-width:17.5px} .RMir .RM_{width:20px;min-width:20px} .RMir .RM_o{width:22.5px;min-width:22.5px} .RMir .RM_c{width:25px;min-width:25px} .RMir .RM_oc{width:27.5px;min-width:27.5px} .RMir .RM_d{width:30px;min-width:30px} .RMir .RM_od{width:32.5px;min-width:32.5px} .RMir .RM_cd{width:35px;min-width:35px} .RMir .RM_ocd{width:37.5px;min-width:37.5px} .RMir .RMb{width:40px;min-width:40px} .RMir .RMcb{width:45px;min-width:45px} .RMir .RMdb{width:50px;min-width:50px} .RMir .RMcdb{width:55px;min-width:55px} .RMir .RM_b{width:60px;min-width:60px} .RMir .RM_cb{width:65px;min-width:65px} .RMir .RM_db{width:70px;min-width:70px} .RMir .RM_cdb{width:75px;min-width:75px} .RMir .RMs{width:80px;min-width:80px} .RMir .RMds{width:90px;min-width:90px} .RMir .RM_s{width:100px;min-width:100px} .RMir .RM_ds{width:110px;min-width:110px} .RMir .RMbs{width:120px;min-width:120px} .RMir .RMdbs{width:130px;min-width:130px} .RMir .RM_bs{width:140px;min-width:140px} .RMir .RM_dbs{width:150px;min-width:150px} .RMir .RMw{width:160px;min-width:160px} .RMir .RM_w{width:180px;min-width:180px} .RMir .RMbw{width:200px;min-width:200px} .RMir .RM_bw{width:220px;min-width:220px} .RMir .RMsw{width:240px;min-width:240px} .RMir .RM_sw{width:260px;min-width:260px} .RMir .RMbsw{width:280px;min-width:280px} .RMir .RM_bsw{width:300px;min-width:300px} /* BSsplit, BSto, BScvt, BSsrws */ .RMsplit { font-weight: inherit; color: inherit; background: transparent; margin-top: -3px; margin-bottom: -3px; width: initial !important; box-sizing: initial; display: inline-table; vertical-align: middle; } /* BSsplit, etc., when used in main left cell or main right cell */ table.routemap .RMl > .RMsplit, table.routemap .RMr > .RMsplit { font-size: 90%; } @media screen { html.skin-theme-clientpref-night .RMbox, html.skin-theme-clientpref-night .RMinline { background: inherit !important; color: white; } html.skin-theme-clientpref-night .RMbox th, html.skin-theme-clientpref-night .RMinline th { background: inherit !important; color: inherit !important; border-bottom: solid 1px #be2d2c; } html.skin-theme-clientpref-night .RMbox img, html.skin-theme-clientpref-night .RMinline img { filter: contrast(0.4); } } @media screen and (prefers-color-scheme: dark) { html.skin-theme-clientpref-os .RMbox, html.skin-theme-clientpref-os .RMinline { background: inherit !important; color: white; } html.skin-theme-clientpref-os .RMbox th, html.skin-theme-clientpref-os .RMinline th { background: inherit !important; color: inherit !important; border-bottom: solid 1px #be2d2c; } html.skin-theme-clientpref-os .RMbox img, html.skin-theme-clientpref-os .RMinline img { filter: contrast(0.4); } } 2r5jxnxzhnbxad08vr3r17dzsh1wen0 साँचा:Station link 10 1174 80409 62530 2026-09-21T18:04:04Z ऐक्टिवेटेड् 76 80409 wikitext text/x-wiki <includeonly>{{#invoke:Adjacent stations|station}}</includeonly><noinclude> {{documentation}} </noinclude> mm42f9ytujkp11dyp3dg9ka6ls57mod साँचा:Stnlnk 10 1178 80396 62533 2026-09-21T17:07:46Z ऐक्टिवेटेड् 76 80396 wikitext text/x-wiki {{{{{|safesubst:}}}#if:{{{2|}}}|{{{{{|safesubst:}}}#ifexist:{{{1}}}_railway_station_({{{2}}})|[[{{{1}}} रेल स्थानक ({{{2}}})|{{{3|{{{1}}}}}}]]|{{{{{|safesubst:}}}#ifexist:{{{1}}}_({{{2}}})_रेल_स्थानक|[[{{{1}}} ({{{2}}}) रेल स्थानक|{{{3|{{{1}}}}}}]]|{{{{{|safesubst:}}}#ifexist:{{{1}}}_({{{2}}}_station)|[[{{{1}}} ({{{2}}} स्थानक)|{{{3|{{{1}}}}}}]]|{{{{{|safesubst:}}}#ifexist:{{{1}}}_स्थानक_({{{2}}})|[[{{{1}}} स्थानक ({{{2}}})|{{{3|{{{1}}}}}}]]|{{{{{|safesubst:}}}#ifexist:{{{1}}}_({{{2}}})|[[{{{1}}} ({{{2}}})|{{{3|{{{1}}}}}}]]|[[{{{1}}} रेल स्थानक, {{{2}}}|{{{3|{{{1}}}}}}]]}}}}}}}}}}|[[{{{1}}} रेल स्थानक|{{{3|{{{1}}}}}}]]}}<noinclude> {{documentation}}</noinclude> 0mk1bbtalyq043m0892kemyup6gymfe घटक:Infobox mapframe 828 6946 80423 21619 2026-09-21T18:37:20Z ऐक्टिवेटेड् 76 80423 Scribunto text/plain local mf = require('Module:Mapframe') local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local infoboxImage = require('Module:InfoboxImage').InfoboxImage -- Defaults local DEFAULT_FRAME_WIDTH = "270" local DEFAULT_FRAME_HEIGHT = "200" local DEFAULT_ZOOM = 10 local DEFAULT_GEOMASK_STROKE_WIDTH = "1" local DEFAULT_GEOMASK_STROKE_COLOR = "#777777" local DEFAULT_GEOMASK_FILL = "#888888" local DEFAULT_GEOMASK_FILL_OPACITY = "0.5" local DEFAULT_SHAPE_STROKE_WIDTH = "3" local DEFAULT_SHAPE_STROKE_COLOR = "#FF0000" local DEFAULT_SHAPE_FILL = "#606060" local DEFAULT_SHAPE_FILL_OPACITY = "0.5" local DEFAULT_LINE_STROKE_WIDTH = "5" local DEFAULT_LINE_STROKE_COLOR = "#FF0000" local DEFAULT_MARKER_COLOR = "#5E74F3" -- Trim whitespace from args, and remove empty args function trimArgs(argsTable) local cleanArgs = {} for key, val in pairs(argsTable) do if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val ~= '' then cleanArgs[key] = val end else cleanArgs[key] = val end end return cleanArgs end function getBestStatement(item_id, property_id) if not(item_id) or not(mw.wikibase.isValidEntityId(item_id)) or not(mw.wikibase.entityExists(item_id)) then return false end local statements = mw.wikibase.getBestStatements(item_id, property_id) if not statements or #statements == 0 then return false end local hasNoValue = ( statements[1].mainsnak and statements[1].mainsnak.snaktype == 'novalue' ) if hasNoValue then return false end return statements[1] end function hasWikidataProperty(item_id, property_id) return getBestStatement(item_id, property_id) and true or false end function getStatementValue(statement) return statement and statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value or nil end function relatedEntity(item_id, property_id) local value = getStatementValue( getBestStatement(item_id, property_id) ) return value and value.id or false end function idType(id) if not id then return nil elseif mw.ustring.match(id, "[Pp]%d+") then return "property" elseif mw.ustring.match(id, "[Qq]%d+") then return "item" else return nil end end function shouldAutoRun(frame) -- Check if should be running local pargs = frame.getParent(frame).args local explicitlyOn = yesno(mw.text.trim(pargs.mapframe or "")) -- true of false or nil if pargs.coordinates == "&#123;&#123;&#123;coordinates&#125;&#125;&#125;" then explicitlyOn = false end local onByDefault = (explicitlyOn == nil) and yesno(mw.text.trim(frame.args.onByDefault or ""), false) -- true or false return explicitlyOn or onByDefault end function argsFromAuto(frame) -- Get args from the frame (invoke call) and the parent (template call). -- Frame arguments are default values which are overridden by parent values -- when both are present local args = getArgs(frame, {parentFirst = true}) -- Discard args not prefixed with "mapframe-", remove that prefix from those that remain local fixedArgs = {} for name, val in pairs(args) do local fixedName = string.match(name, "^mapframe%-(.+)$" ) if fixedName then fixedArgs[fixedName] = val -- allow coord, coordinates, etc to be unprefixed elseif name == "coordinates" or name == "coord" or name == "coordinate" and not fixedArgs.coord then fixedArgs.coord = val -- allow id, qid to be unprefixed, map to id (if not already present) elseif name == "id" or name == "qid" and not fixedArgs.id then fixedArgs.id = val end end return fixedArgs end local p = {} p.autocaption = function(frame) if not shouldAutoRun(frame) then return "" end local args = argsFromAuto(frame) if args.caption then return args.caption elseif args.switcher then return "" end local maskItem local maskType = idType(args.geomask) if maskType == 'item' then maskItem = args.geomask elseif maskType == "property" then maskItem = relatedEntity(args.id or mw.wikibase.getEntityIdForCurrentPage(), args.geomask) end local maskItemLabel = maskItem and mw.wikibase.getLabel( maskItem ) return maskItemLabel and "Location in "..maskItemLabel or "" end function parseCustomWikitext(customWikitext) -- infoboxImage will format an image if given wikitext containing an -- image, or else pass through the wikitext unmodified return infoboxImage({ args = { image = customWikitext } }) end p.auto = function(frame) if not shouldAutoRun(frame) then return "" end local args = argsFromAuto(frame) if args.custom then return frame:preprocess(parseCustomWikitext(args.custom)) end local mapframe = p._main(args) return frame:preprocess(mapframe) end p.main = function(frame) local parent = frame.getParent(frame) local parentArgs = parent.args local mapframe = p._main(parentArgs) return frame:preprocess(mapframe) end p._main = function(_config) -- `config` is the args passed to this module local config = trimArgs(_config) -- Require wikidata item, or specified coords local wikidataId = config.id or mw.wikibase.getEntityIdForCurrentPage() if not(wikidataId) and not(config.coord) then return '' end -- Require coords (specified or from wikidata), so that map will be centred somewhere -- (P625 = coordinate location) local hasCoordinates = hasWikidataProperty(wikidataId, 'P625') or config.coordinates or config.coord if not hasCoordinates then return '' end -- `args` is the arguments which will be passed to the mapframe module local args = {} -- Some defaults/overrides for infobox presentation args.display = "inline" args.frame = "yes" args.plain = "yes" args["frame-width"] = config["frame-width"] or config.width or DEFAULT_FRAME_WIDTH args["frame-height"] = config["frame-height"] or config.height or DEFAULT_FRAME_HEIGHT args["frame-align"] = "center" args["frame-coord"] = config["frame-coordinates"] or config["frame-coord"] or "" -- Note: config["coordinates"] or config["coord"] should not be used for the alignment of the frame; -- see talk page ( https://en.wikipedia.org/wiki/Special:Diff/876492931 ) -- deprecated lat and long parameters args["frame-lat"] = config["frame-lat"] or config["frame-latitude"] or "" args["frame-long"] = config["frame-long"] or config["frame-longitude"] or "" -- if zoom isn't specified from config: local zoom = config.zoom if not zoom then -- Calculate zoom from length or area (converted to km or km2) -- Zoom so that length or area is completely included in mapframe local getZoom = require('Module:Infobox dim')._zoom zoom = getZoom({length_km=config.length_km, length_mi=config.length_mi, width_km=config.width_km, width_mi=config.width_mi, area_km2=config.area_km2, area_mi2=config.area_mi2, area_ha=config.area_ha, area_acre=config.area_acre, type=config.type, population=config.population, viewport_px=math.min(args["frame-width"],args["frame-height"])}) end args.zoom = zoom or DEFAULT_ZOOM -- Conditionals: whether point, geomask should be shown local hasOsmRelationId = hasWikidataProperty(wikidataId, 'P402') -- P402 is OSM relation ID local shouldShowPointMarker; if config.point == "on" then shouldShowPointMarker = true elseif config.point == "none" then shouldShowPointMarker = false else shouldShowPointMarker = not(hasOsmRelationId) or (config.marker and config.marker ~= 'none') or (config.coordinates or config.coord) end local shouldShowShape = config.shape ~= 'none' local shapeType = config.shape == 'inverse' and 'shape-inverse' or 'shape' local shouldShowLine = config.line ~= 'none' local maskItem local useWikidata = wikidataId and true or false -- Use shapes/lines based on wikidata id, if there is one -- But do not use wikidata when local coords are specified (and not turned off), unless explicitly set if useWikidata and config.coord and shouldShowPointMarker then useWikidata = config.wikidata and true or false end -- Switcher if config.switcher == "zooms" then -- switching between zoom levels local maxZoom = math.max(tonumber(args.zoom), 3) -- what zoom would have otherwise been (if 3 or more, otherwise 3) local minZoom = 1 -- completely zoomed out local midZoom = math.floor((maxZoom + minZoom)/2) -- midway between maxn and min args.switch = "zoomed in, zoomed midway, zoomed out" args.zoom = string.format("SWITCH:%d,%d,%d", maxZoom, midZoom, minZoom) elseif config.switcher == "auto" then -- switching between P276 and P131 areas with recursive lookup, e.g. item's city, -- that city's state, and that state's country args.zoom = nil -- let kartographer determine the zoom local maskLabels = {} local maskItems = {} local maskItemId = relatedEntity(wikidataId, "P276") or relatedEntity(wikidataId, "P131") local maskLabel = mw.wikibase.getLabel(maskItemId) while maskItemId and maskLabel and mw.text.trim(maskLabel) ~= "" do table.insert(maskLabels, maskLabel) table.insert(maskItems, maskItemId) maskItemId = maskItemId and relatedEntity(maskItemId, "P131") maskLabel = maskItemId and mw.wikibase.getLabel(maskItemId) end if #maskLabels > 1 then args.switch = table.concat(maskLabels, "###") maskItem = "SWITCH:" .. table.concat(maskItems, ",") elseif #maskLabels == 1 then maskItem = maskItemId[1] end elseif config.switcher == "geomasks" and config.geomask then -- switching between items in geomask parameter args.zoom = nil -- let kartographer determine the zoom local separator = (mw.ustring.find(config.geomask, "###", 0, true ) and "###") or (mw.ustring.find(config.geomask, ";", 0, true ) and ";") or "," local pattern = "%s*"..separator.."%s*" local maskItems = mw.text.split(mw.ustring.gsub(config.geomask, "SWITCH:", ""), pattern) local maskLabels = {} if #maskItems > 1 then for i, item in ipairs(maskItems) do table.insert(maskLabels, mw.wikibase.getLabel(item)) end args.switch = table.concat(maskLabels, "###") maskItem = "SWITCH:" .. table.concat(maskItems, ",") end end -- resolve geomask item id (if not using geomask switcher) if not maskItem then -- local maskType = idType(config.geomask) if maskType == 'item' then maskItem = config.geomask elseif maskType == "property" then maskItem = relatedEntity(wikidataId, config.geomask) end end -- Keep track of arg numbering local argNumber = '' local function incrementArgNumber() if argNumber == '' then argNumber = 2 else argNumber = argNumber + 1 end end -- Geomask if maskItem then args["type"..argNumber] = "shape-inverse" args["id"..argNumber] = maskItem args["stroke-width"..argNumber] = config["geomask-stroke-width"] or DEFAULT_GEOMASK_STROKE_WIDTH args["stroke-color"..argNumber] = config["geomask-stroke-color"] or config["geomask-stroke-colour"] or DEFAULT_GEOMASK_STROKE_COLOR args["fill"..argNumber] = config["geomask-fill"] or DEFAULT_GEOMASK_FILL args["fill-opacity"..argNumber] = config["geomask-fill-opacity"] or DEFAULT_SHAPE_FILL_OPACITY -- Let kartographer determine zoom and position, unless it is explicitly set in config if not config.zoom and not config.switcher then args.zoom = nil args["frame-coord"] = nil args["frame-lat"] = nil args["frame-long"] = nil local maskArea = getStatementValue( getBestStatement(maskItem, 'P2046') ) end incrementArgNumber() -- Hack to fix phab:T255932 if not args.zoom then args["type"..argNumber] = "line" args["id"..argNumber] = maskItem args["stroke-width"..argNumber] = 0 incrementArgNumber() end end -- Shape (or shape-inverse) if useWikidata and shouldShowShape then args["type"..argNumber] = shapeType if config.id then args["id"..argNumber] = config.id end args["stroke-width"..argNumber] = config["shape-stroke-width"] or config["stroke-width"] or DEFAULT_SHAPE_STROKE_WIDTH args["stroke-color"..argNumber] = config["shape-stroke-color"] or config["shape-stroke-colour"] or config["stroke-color"] or config["stroke-colour"] or DEFAULT_SHAPE_STROKE_COLOR args["fill"..argNumber] = config["shape-fill"] or DEFAULT_SHAPE_FILL args["fill-opacity"..argNumber] = config["shape-fill-opacity"] or DEFAULT_SHAPE_FILL_OPACITY incrementArgNumber() end -- Line if useWikidata and shouldShowLine then args["type"..argNumber] = "line" if config.id then args["id"..argNumber] = config.id end args["stroke-width"..argNumber] = config["line-stroke-width"] or config["stroke-width"] or DEFAULT_LINE_STROKE_WIDTH args["stroke-color"..argNumber] = config["line-stroke-color"] or config["line-stroke-colour"] or config["stroke-color"] or config["stroke-colour"] or DEFAULT_LINE_STROKE_COLOR incrementArgNumber() end -- Point if shouldShowPointMarker then args["type"..argNumber] = "point" if config.id then args["id"..argNumber] = config.id end if config.coord then args["coord"..argNumber] = config.coord end if config.marker then args["marker"..argNumber] = config.marker end args["marker-color"..argNumber] = config["marker-color"] or config["marker-colour"] or DEFAULT_MARKER_COLOR incrementArgNumber() end local mapframe = args.switch and mf.multi(args) or mf._main(args) local tracking = hasOsmRelationId and '' or '[[बर्ग:Infobox mapframe without OSM relation ID on Wikidata]]' return mapframe .. tracking end p.autoWithCaption = function(frame) if not util.shouldAutoRun(frame) then return util.noop("autoWithCaption should not autorun") end local args = util.argsFromAuto(frame) local wikitext local caption local ok if args.custom then ok = true wikitext = util.parseCustomWikitext(args.custom) else ok, wikitext = p._main(args) end if not ok then return wikitext end wikitext = frame:preprocess(wikitext) caption = p._caption(args) local data = mw.html.create():wikitext(wikitext) data:tag('div') :addClass('infobox-caption') :cssText(args.captionstyle) :wikitext(caption) return tostring(data) end return p iaa2j84ronnkg1l8r8a60nlf57kraka 80424 80423 2026-09-21T18:38:00Z ऐक्टिवेटेड् 76 80424 Scribunto text/plain local mf = require('Module:Mapframe') local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local infoboxImage = require('Module:InfoboxImage').InfoboxImage -- Defaults local DEFAULT_FRAME_WIDTH = "270" local DEFAULT_FRAME_HEIGHT = "200" local DEFAULT_ZOOM = 10 local DEFAULT_GEOMASK_STROKE_WIDTH = "1" local DEFAULT_GEOMASK_STROKE_COLOR = "#777777" local DEFAULT_GEOMASK_FILL = "#888888" local DEFAULT_GEOMASK_FILL_OPACITY = "0.25" local DEFAULT_SHAPE_STROKE_WIDTH = "2" local DEFAULT_SHAPE_STROKE_COLOR = "#FF0000" local DEFAULT_SHAPE_FILL = "#606060" local DEFAULT_SHAPE_FILL_OPACITY = "0.1" local DEFAULT_LINE_STROKE_WIDTH = "5" local DEFAULT_LINE_STROKE_COLOR = "#FF0000" local DEFAULT_MARKER_COLOR = "#5E74F3" local util = {} function util.noop(info) local DEFAULT_NOOP_OUTPUT = "" -- uncomment this when debugging -- DEFAULT_NOOP_OUTPUT = "debug: mapframe no-op: " .. info -- mw.log(DEFAULT_NOOP_OUTPUT) return DEFAULT_NOOP_OUTPUT end -- Trim whitespace from args, and remove empty args function util.trimArgs(argsTable) local cleanArgs = {} for key, val in pairs(argsTable) do if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val ~= '' then cleanArgs[key] = val end else cleanArgs[key] = val end end return cleanArgs end function util.getBestStatement(item_id, property_id) if not(item_id) or not(mw.wikibase.isValidEntityId(item_id)) or not(mw.wikibase.entityExists(item_id)) then return false end local statements = mw.wikibase.getBestStatements(item_id, property_id) if not statements or #statements == 0 then return false end local hasNoValue = ( statements[1].mainsnak and statements[1].mainsnak.snaktype == 'novalue' ) if hasNoValue then return false end return statements[1] end function util.hasWikidataProperty(item_id, property_id) return util.getBestStatement(item_id, property_id) and true or false end function util.getStatementValue(statement) return statement and statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value or nil end function util.relatedEntity(item_id, property_id) local value = util.getStatementValue( util.getBestStatement(item_id, property_id) ) return value and value.id or false end function util.idType(id) if not id then return nil elseif mw.ustring.match(id, "[Pp]%d+") then return "property" elseif mw.ustring.match(id, "[Qq]%d+") then return "item" else return nil end end function util.shouldAutoRun(frame) -- Check if should be running local pargs = frame.getParent(frame).args local explicitlyOn = yesno(mw.text.trim(pargs.mapframe or "")) -- true of false or nil if pargs.coordinates == "&#123;&#123;&#123;coordinates&#125;&#125;&#125;" then explicitlyOn = false end if type(pargs.coordinates) == 'string' and string.match(pargs.coordinates, 'coord.missing') then explicitlyOn = false end local onByDefault = (explicitlyOn == nil) and yesno(mw.text.trim(frame.args.onByDefault or ""), false) -- true or false return explicitlyOn or onByDefault end function util.argsFromAuto(frame) -- Get args from the frame (invoke call) and the parent (template call). -- Frame arguments are default values which are overridden by parent values -- when both are present local args = getArgs(frame, {parentFirst = true}) -- Discard args not prefixed with "mapframe-", remove that prefix from those that remain local fixedArgs = {} for name, val in pairs(args) do local fixedName = string.match(name, "^mapframe%-(.+)$" ) if fixedName then fixedArgs[fixedName] = val -- allow coord, coordinates, etc to be unprefixed elseif name == "coordinates" or name == "coord" or name == "coordinate" and not fixedArgs.coord then fixedArgs.coord = val -- allow id, qid to be unprefixed, map to id (if not already present) elseif name == "id" or name == "qid" and not fixedArgs.id then fixedArgs.id = val -- allow captionstyle to be unprefixed, for compatibility with [[Module:Infobox]] elseif name == "captionstyle" and not fixedArgs.captionstyle then fixedArgs.captionstyle = val end end return fixedArgs end function util.parseCustomWikitext(customWikitext) -- infoboxImage will format an image if given wikitext containing an -- image, or else pass through the wikitext unmodified return infoboxImage({ args = { image = customWikitext } }) end function util.trackAndWarn(trackingCat, warning) local title = mw.title.getCurrentTitle() local results = title and title.namespace == 0 and trackingCat and '[[Category:'..trackingCat..']]' or '' if warning then local warn = require('Module:If preview')._warning results = results..warn({warning}) end return results end function util.ternary(flag, other) other = other or 'other' flag = flag == 'none' and 'no' or flag local yesNoOut = yesno(flag,other) local yes = (yesNoOut == true) local no = (yesNoOut == false) return yes, no end local p = {} p._caption = function(args) if args.caption then return args.caption elseif args.switcher then return util.noop("no caption or switcher") end local maskItem local maskType = util.idType(args.geomask) if maskType == 'item' then maskItem = args.geomask elseif maskType == "property" then maskItem = util.relatedEntity(args.id or mw.wikibase.getEntityIdForCurrentPage(), args.geomask) end local maskItemLabel = maskItem and mw.wikibase.getLabel( maskItem ) return maskItemLabel and "Location in "..maskItemLabel or util.noop("missing maskItemLabel with type " .. (maskType or "nil") .. " and item " .. (maskItem or "nil")) end --A list of types for objects that are too small to allow Kartographer to take over zoom local tinyType = { landmark=true, railwaystation=true, edu=true, pass=true, camera=true } p._main = function(_config) -- accumulate tracking cats local tracking = '' -- `config` is the args passed to this module local config = util.trimArgs(_config) -- allow alias for config.coord config.coord = config.coord or config.coordinates -- Require wikidata item, or specified coords local wikidataId = config.id or mw.wikibase.getEntityIdForCurrentPage() if not(wikidataId) and not(config.coord) then return false, util.trackAndWarn('Pages using infobox mapframe with missing coordinates') end -- Require coords (specified or from wikidata), so that map will be centred somewhere -- (P625 = coordinate location) local wdCoordinates = util.getStatementValue(util.getBestStatement(wikidataId, 'P625')) if not (config.coord or wdCoordinates) then return false, util.trackAndWarn('Pages using infobox mapframe with missing coordinates') end -- `args` is the arguments which will be passed to the mapframe module local args = {} -- Some defaults/overrides for infobox presentation args.display = "inline" args.frame = "yes" args.plain = "yes" args["frame-width"] = config["frame-width"] or config.width or DEFAULT_FRAME_WIDTH args["frame-height"] = config["frame-height"] or config.height or DEFAULT_FRAME_HEIGHT args["frame-align"] = "center" args["frame-coord"] = config["frame-coordinates"] or config["frame-coord"] -- Note: config["coordinates"] or config["coord"] should not be used for the alignment of the frame; -- see talk page ( https://en.wikipedia.org/wiki/Special:Diff/876492931 ) -- deprecated lat and long parameters args["frame-lat"] = config["frame-lat"] or config["frame-latitude"] args["frame-long"] = config["frame-long"] or config["frame-longitude"] -- if zoom isn't specified from config, first check wikidata local zoom = config.zoom or util.getStatementValue(util.getBestStatement(wikidataId, 'P6592')) if not zoom then -- Calculate zoom from length or area (converted to km or km2) -- Zoom so that length or area is completely included in mapframe local getZoom = require('Module:Infobox dim')._zoom zoom = getZoom({length_km=config.length_km, length_mi=config.length_mi, width_km=config.width_km, width_mi=config.width_mi, area_km2=config.area_km2, area_mi2=config.area_mi2, area_ha=config.area_ha, area_acre=config.area_acre, type=config.type, population=config.population, viewport_px=math.min(args["frame-width"],args["frame-height"]), latitude=wdCoordinates and wdCoordinates.latitude}) end args.zoom = zoom or DEFAULT_ZOOM -- Use OSM relation ID if available; otherwise use geoshape if that is available -- (geoshape is required for defunct entities, which are outside OSM's scope) local hasOsmRelationId = util.hasWikidataProperty(wikidataId, 'P402') -- P402 is OSM relation ID local hasGeoshape = util.hasWikidataProperty(wikidataId, 'P3896') -- P3896 is geoshape local wikidataProvidesGeo = hasOsmRelationId or hasGeoshape -- determine marker argument value, determine whether to show marker local forcePoint, suppressPoint = util.ternary(config.point) local forceMarker, suppressMarker = util.ternary(config.marker,true) forcePoint = forcePoint or forceMarker suppressPoint = suppressPoint or suppressMarker local showMarker = not suppressPoint and (forcePoint or not wikidataProvidesGeo or config.coord) -- wikidata = "yes" turns on both shape and line -- wikidata = "no" turns off both shape and line -- otherwise show both if wikidata provides geo local forceWikidata, suppressWikidata = util.ternary(config.wikidata) local showShape = not suppressWikidata and (forceWikidata or wikidataProvidesGeo or not config.coord) local showLine = showShape -- determine shape parameter value, determine whether to show or suppress shape -- also determine whether to invert shape local forceShape, suppressShape = util.ternary(config.shape) showShape = wikidataId and not suppressShape and (forceShape or showShape) local shapeType = config.shape == 'inverse' and 'shape-inverse' or 'shape' -- determine line parameter value, determine whether to show or suppress line local forceLine, suppressLine = util.ternary(config.line) showLine = wikidataId and not suppressLine and (forceLine or showLine) local maskItem -- Switcher if config.switcher == "zooms" then -- switching between zoom levels local maxZoom = math.max(tonumber(args.zoom), 3) -- what zoom would have otherwise been (if 3 or more, otherwise 3) local minZoom = 1 -- completely zoomed out local midZoom = math.floor((maxZoom + minZoom)/2) -- midway between maxn and min args.switch = "zoomed in, zoomed midway, zoomed out" args.zoom = string.format("SWITCH:%d,%d,%d", maxZoom, midZoom, minZoom) elseif config.switcher == "auto" then -- switching between P276 and P131 areas with recursive lookup, e.g. item's city, -- that city's state, and that state's country args.zoom = nil -- let kartographer determine the zoom local maskLabels = {} local maskItems = {} local maskItemId = util.relatedEntity(wikidataId, "P276") or util.relatedEntity(wikidataId, "P131") local maskLabel = mw.wikibase.getLabel(maskItemId) while maskItemId and maskLabel and mw.text.trim(maskLabel) ~= "" do table.insert(maskLabels, maskLabel) table.insert(maskItems, maskItemId) maskItemId = maskItemId and util.relatedEntity(maskItemId, "P131") maskLabel = maskItemId and mw.wikibase.getLabel(maskItemId) end if #maskLabels > 1 then args.switch = table.concat(maskLabels, "###") maskItem = "SWITCH:" .. table.concat(maskItems, ",") elseif #maskLabels == 1 then maskItem = maskItemId[1] end elseif config.switcher == "geomasks" and config.geomask then -- switching between items in geomask parameter args.zoom = nil -- let kartographer determine the zoom local separator = (mw.ustring.find(config.geomask, "###", 0, true ) and "###") or (mw.ustring.find(config.geomask, ";", 0, true ) and ";") or "," local pattern = "%s*"..separator.."%s*" local maskItems = mw.text.split(mw.ustring.gsub(config.geomask, "SWITCH:", ""), pattern) local maskLabels = {} if #maskItems > 1 then for i, item in ipairs(maskItems) do table.insert(maskLabels, mw.wikibase.getLabel(item)) end args.switch = table.concat(maskLabels, "###") maskItem = "SWITCH:" .. table.concat(maskItems, ",") end end -- resolve geomask item id (if not using geomask switcher) if not maskItem then -- local maskType = util.idType(config.geomask) if maskType == 'item' then maskItem = config.geomask elseif maskType == "property" then maskItem = util.relatedEntity(wikidataId, config.geomask) end end -- if asking for shape or line from Wikidata -- and if Wikidata actually has shape/line data (wikidataProvidesGeo=true) -- and if no geomask -- and if zoom not explicitly set -- and if the object size inferred from its type is not too small -- then let Kartographer "take over" zoom if (showLine or showShape) and wikidataProvidesGeo and not maskItem and not config.zoom and not (config.type and tinyType[config.type]) then args.zoom = nil end if not maskItem and not showShape and not showLine and not showMarker then return false, util.trackAndWarn('Pages using infobox mapframe with no geometry','No geometry specified for mapframe') end -- Keep track of arg numbering local argNumber = '' local function incrementArgNumber() if argNumber == '' then argNumber = 2 else argNumber = argNumber + 1 end end -- Geomask if maskItem then args["type"..argNumber] = "shape-inverse" args["id"..argNumber] = maskItem args["stroke-width"..argNumber] = config["geomask-stroke-width"] or DEFAULT_GEOMASK_STROKE_WIDTH args["stroke-color"..argNumber] = config["geomask-stroke-color"] or config["geomask-stroke-colour"] or DEFAULT_GEOMASK_STROKE_COLOR args["fill"..argNumber] = config["geomask-fill"] or DEFAULT_GEOMASK_FILL args["fill-opacity"..argNumber] = config["geomask-fill-opacity"] or DEFAULT_SHAPE_FILL_OPACITY -- Let kartographer determine zoom and position, unless it is explicitly set in config if not config.zoom and not config.switcher then args.zoom = nil args["frame-coord"] = nil args["frame-lat"] = nil args["frame-long"] = nil local maskArea = util.getStatementValue( util.getBestStatement(maskItem, 'P2046') ) end incrementArgNumber() -- Hack to fix phab:T255932 if not args.zoom then args["type"..argNumber] = "line" args["id"..argNumber] = maskItem args["stroke-width"..argNumber] = 0 incrementArgNumber() end end -- Shape (or shape-inverse) if showShape then args["type"..argNumber] = shapeType if hasGeoshape and not hasOsmRelationId then args["from"..argNumber] = string.sub( util.getStatementValue( util.getBestStatement(wikidataId, 'P3896') ), 6) elseif config.id then args["id"..argNumber] = config.id end args["stroke-width"..argNumber] = config["shape-stroke-width"] or config["stroke-width"] or DEFAULT_SHAPE_STROKE_WIDTH args["stroke-color"..argNumber] = config["shape-stroke-color"] or config["shape-stroke-colour"] or config["stroke-color"] or config["stroke-colour"] or DEFAULT_SHAPE_STROKE_COLOR args["fill"..argNumber] = config["shape-fill"] or DEFAULT_SHAPE_FILL args["fill-opacity"..argNumber] = config["shape-fill-opacity"] or DEFAULT_SHAPE_FILL_OPACITY incrementArgNumber() end -- Line if showLine then args["type"..argNumber] = "line" if hasGeoshape and not hasOsmRelationId then args["from"..argNumber] = string.sub( util.getStatementValue( util.getBestStatement(wikidataId, 'P3896') ), 6) elseif config.id then args["id"..argNumber] = config.id end args["stroke-width"..argNumber] = config["line-stroke-width"] or config["stroke-width"] or DEFAULT_LINE_STROKE_WIDTH args["stroke-color"..argNumber] = config["line-stroke-color"] or config["line-stroke-colour"] or config["stroke-color"] or config["stroke-colour"] or DEFAULT_LINE_STROKE_COLOR incrementArgNumber() end -- Point marker if showMarker then args["type"..argNumber] = "point" if config.id then args["id"..argNumber] = config.id end if config.coord then args["coord"..argNumber] = config.coord end if config.marker then args["marker"..argNumber] = config.marker end args["marker-color"..argNumber] = config["marker-color"] or config["marker-colour"] or DEFAULT_MARKER_COLOR incrementArgNumber() end -- if Wikidata doesn't link to OSM and the map has no mask or point, -- then center the map on the coordinates either from the infobox or from wikidata if not maskItem and not showMarker and not wikidataProvidesGeo then if config.coord then args["frame-coord"] = args["frame-coord"] or config.coord else args["frame-lat"] = args["frame-lat"] or wdCoordinates.latitude args["frame-long"] = args["frame-long"] or wdCoordinates.longitude end tracking = tracking..util.trackAndWarn('Pages using infobox mapframe with forced centering') end -- protect against nil frame arguments args["frame-coord"] = args["frame-coord"] or "" args["frame-lat"] = args["frame-lat"] or "" args["frame-long"] = args["frame-long"] or "" local mapframe = args.switch and mf.multi(args) or mf._main(args) tracking = tracking..((showLine or showShape) and not wikidataProvidesGeo and util.trackAndWarn('Pages using infobox mapframe without shape links in Wikidata') or '') return true, mapframe.. tracking end -- Entry points p.main = function(frame) local parent = frame.getParent(frame) local parentArgs = parent.args local _, mapframe = p._main(parentArgs) return frame:preprocess(mapframe) end p.auto = function(frame) if not util.shouldAutoRun(frame) then return util.noop("auto should not autorun") end local args = util.argsFromAuto(frame) if args.custom then return frame:preprocess(util.parseCustomWikitext(args.custom)) end local _, mapframe = p._main(args) return frame:preprocess(mapframe) end p.autocaption = function(frame) if not util.shouldAutoRun(frame) then return util.noop("autocaption should not autorun") end local args = util.argsFromAuto(frame) local caption = p._caption(args) return caption end p.autoWithCaption = function(frame) if not util.shouldAutoRun(frame) then return util.noop("autoWithCaption should not autorun") end local args = util.argsFromAuto(frame) local wikitext local caption local ok if args.custom then ok = true wikitext = util.parseCustomWikitext(args.custom) else ok, wikitext = p._main(args) end if not ok then return wikitext end wikitext = frame:preprocess(wikitext) caption = p._caption(args) local data = mw.html.create():wikitext(wikitext) data:tag('div') :addClass('infobox-caption') :cssText(args.captionstyle) :wikitext(caption) return tostring(data) end return p j3zvodfabfeomv2k16qsy32uujgrrlu घटक:Location map 828 6980 80422 21710 2026-09-21T18:31:57Z ऐक्टिवेटेड् 76 80422 Scribunto text/plain require('Module:No globals') local p = {} local _getArgs = require('Module:Arguments').getArgs local function getArgsX(args, ...) -- Return args after translation. local noTranslate = { [1] = true, -- do not translate name of map AlternativeMap = true, alt = true, caption = true, label = true, link = true, mark = true, overlay_image = true, } args = args or _getArgs(...) if not args._doneTranslate_ then local clone = {} -- cleaner to not change caller's table for k, v in pairs(args) do if type(v) ~= 'string' or noTranslate[k] then clone[k] = v else v = mw.ustring.gsub(v, '%d', { ['०'] = '0', ['१'] = '1', ['२'] = '2', ['३'] = '3', ['४'] = '4', ['५'] = '5', ['६'] = '6', ['७'] = '7', ['८'] = '8', ['९'] = '9', }) clone[k] = v :gsub(' *उत्तर', 'N') :gsub(' *पूर्व' , 'E') :gsub(' *दक्षिण', 'S') :gsub(' *पश्चिम', 'W') end end clone._doneTranslate_ = true return clone end return args end local function round(n, decimals) local pow = 10^(decimals or 0) return math.floor(n * pow + 0.5) / pow end function p.getMapParams(map, frame) if not map then error('प्रयोगला स्थानके मानचित्र परिभाषा नाम निर्दिष्ट होवेके चाही', 2) end local moduletitle = mw.title.new('Module:Location map/data/' .. map) if not moduletitle then error('स्थान मानचित्रके परिभाषाला "' .. map .. '" वैद्य नाम नै', 2) elseif moduletitle.exists then local mapData = mw.loadData('Module:Location map/data/' .. map) return function(name, params) if name == nil then return 'Module:Location map/data/' .. map elseif mapData[name] == nil then return '' elseif params then return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain() else return mapData[name] end end elseif mw.title.new('Template:Location map ' .. map).exists then local cache = {} if type(frame) ~= 'table' or type(frame.expandTemplate) ~= 'function' then error('A frame must be provided when using a legacy location map') end return function(name, params) if params then return frame:expandTemplate{title = 'Location map ' .. map, args = { name, unpack(params) }} else if name == nil then return 'Template:Location map ' .. map elseif cache[name] == nil then cache[name] = frame:expandTemplate{title = 'Location map ' .. map, args = { name }} end return cache[name] end end else error('Unable to find the specified location map definition. Neither "Module:Location map/data/' .. map .. '" nor "Template:Location map ' .. map .. '" exists', 2) end end function p.data(frame, args, map) args = getArgsX(args, frame, {frameOnly = true}) if not map then map = p.getMapParams(args[1], frame) end local params = {} for k,v in ipairs(args) do if k > 2 then params[k-2] = v end end return map(args[2], #params ~= 0 and params) end local hemisphereMultipliers = { longitude = { W = -1, w = -1, E = 1, e = 1 }, latitude = { S = -1, s = -1, N = 1, n = 1 } } local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction) if decimal then if degrees then error(direction .. '-एकरा ला दशमलव आउ डिएमएस दोनो डिग्री प्रदान नै कैल जा सकहे', 2) elseif minutes then error(direction .. '-मात्र डिएमएस डिग्री सङ्गे मिनट प्रदान कैल जा सकहे', 2) elseif seconds then error(direction .. '-मात्र डिएमएस डिग्री सङ्गे सेकेण्ड प्रदान कैल जा सकहे', 2) elseif hemisphere then error(direction .. '-मात्र डिएमएस डिग्री सङ्गे गोलार्द्ध प्रदान कैल जा सकहे', 2) end local retval = tonumber(decimal) if retval then return retval end error(direction .. '- लागि बनावल "'.. decimal .. '" मान अमान्य', 2) elseif seconds and not minutes then error('मिनट् प्रदान कैले बिन ' .. direction .. '-सेकेण्ड् प्रदान कैल गेलहे', 2) elseif not degrees then if minutes then error('डिग्री प्रदान कैले बिन ' .. direction .. '-मिनट् प्रदान कैल गेलहे', 2) elseif hemisphere then error('डिग्री प्रदान कैले बिन ' .. direction .. '-गोलार्द्ध प्रदान कैल गेलहे', 2) end return nil end decimal = tonumber(degrees) if not decimal then error(direction .. '- लागि निर्मित "'.. degrees .. '" डिग्री मान अमान्य', 2) elseif minutes and not tonumber(minutes) then error(direction .. '- लागि निर्मित "'.. minutes .. '" मिनट् मान अमान्य', 2) elseif seconds and not tonumber(seconds) then error(direction .. '- लागि निर्मित "'.. seconds .. '"सेकेण्ड् मान अमान्य', 2) end decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600 if hemisphere then local multiplier = hemisphereMultipliers[direction][hemisphere] if not multiplier then error(direction .. '- लागि निर्मित "'.. hemisphere .. '" गोलार्द्ध मान अमान्य', 2) end decimal = decimal * multiplier end return decimal end -- Finds a parameter in a transclusion of {{Coord}}. local function coord2text(para, coord) local value, direction, longitude, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])') if para == 'longitude' then value, direction = longitude, ew end value = tonumber(value) if value then return value * hemisphereMultipliers[para][direction] end error('निर्देशाङ्क मान विकृत', 2) end -- effectively make removeBlanks false for caption and maplink, and true for everything else -- if useWikidata is present but blank, convert it to false instead of nil -- p.top, p.bottom, and their callers need to use this function p.valueFunc(key, value) if value then value = mw.text.trim(value) end if value ~= '' or key == 'caption' or key == 'maplink' then return value elseif key == 'useWikidata' then return false end end local function getContainerImage(args, map) if args.AlternativeMap then return args.AlternativeMap elseif args.relief and map('image1') ~= '' then return map('image1') else return map('image') end end function p.top(frame, args, map) args = getArgsX(args, frame, {frameOnly = true, valueFunc = p.valueFunc}) if not map then map = p.getMapParams(args[1], frame) end local width if not args.width then width = round((args.default_width or 240) * (tonumber(map('defaultscale')) or 1)) elseif mw.ustring.sub(args.width, -2) == 'px' then width = mw.ustring.sub(args.width, 1, -3) else width = args.width end local retval = args.float == 'center' and '<div class="center">' or '' if args.caption and args.caption ~= '' and args.border ~= 'infobox' then retval = retval .. '<div class="noviewer thumb ' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'tleft' elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then retval = retval .. 'tnone' else retval = retval .. 'tright' end retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px' if args.border == 'none' then retval = retval .. ';border:none' elseif args.border then retval = retval .. ';border-color:' .. args.border end retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">') else retval = retval .. '<div style="width:' .. width .. 'px;' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'float:left;clear:left' elseif args.float == '"center"' or args.float == 'center' then retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto' elseif args.float == '"none"' or args.float == 'none' then retval = retval .. 'float:none;clear:none' else retval = retval .. 'float:right;clear:right' end retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">' end local image = getContainerImage(args, map) retval = string.format( '%s[[सञ्चिका:%s|%spx|%s%s]]', retval, image, width, args.alt or ((args.label or mw.title.getCurrentTitle().text) .. ' ' .. map('name') .. 'पर अवस्थित'), args.maplink and ('|link=' .. args.maplink) or '' ) if args.overlay_image then return retval .. '<div style="position:absolute;top:0;left:0">[[सञ्चिका:' .. args.overlay_image .. '|' .. width .. 'px]]</div>' else return retval end end function p.bottom(frame, args, map) args = getArgsX(args, frame, {frameOnly = true, valueFunc = p.valueFunc}) if not map then map = p.getMapParams(args[1], frame) end local retval = '</div>' if not args.caption or args.border == 'infobox' then if args.border then retval = retval .. '<div>' else retval = retval .. '<div style="font-size:90%;padding-top:3px">' end retval = retval .. (args.caption or (args.label or mw.title.getCurrentTitle().text) .. ' (' .. map('name') .. ')') .. '</div>' elseif args.caption ~= '' then -- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '| ]]</div>' .. args.caption .. '</div>' end if args.switcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>' elseif args.autoSwitcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">' .. map('name') .. 'के मानचित्र देखी</span>' end retval = retval .. '</div></div>' if args.caption_undefined then mw.log('निकालल गेल प्राचल caption_undefined के प्रयोग कैल गेल हे ।') local parent = frame:getParent() if parent then mw.log('प्रधान छी ' .. parent:getTitle()) end mw.logObject(args, 'args') retval = retval .. '[[बर्ग:सम्भावित त्रुटिवाला स्थान मानचित्र|पन्नामे सब मापदण्डके प्रयोग कैल गेलहे]]' end if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then mw.log(map().. ' मानचित्र नाम परिभाषामे प्रयुक्त प्राचल हटा देल गेल') retval = retval .. '[[बर्ग:सम्भावित त्रुटिवाला स्थान मानचित्र|पन्नामे सब मापदण्डके प्रयोग कैल गेलहे]]' end if string.find(map('name'), '|', 1, true) then mw.log(map().. 'पाइपके प्रयोग मानचित्रके नाम परिभाषित करवेला कैल जाइत हे') retval = retval .. '[[बर्ग:सम्भावित त्रुटिवाला स्थान मानचित्र|पाइप कथित]]' end if args.float == 'center' then retval = retval .. '</div>' end return retval end local function markOuterDiv(x, y, imageDiv, labelDiv) return mw.html.create('div') :cssText('position:absolute;top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%') :node(imageDiv) :node(labelDiv) end local function markImageDiv(mark, marksize, label, link, alt, title) local builder = mw.html.create('div') :cssText('position:absolute;left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px;line-height:0') :attr('title', title) if marksize ~= 0 then builder:wikitext(string.format( '[[सञ्चिका:%s|%dx%dpx|%s|link=%s%s]]', mark, marksize, marksize, label, link, alt and ('|alt=' .. alt) or '' )) end return builder end local function markLabelDiv(label, label_size, label_width, position, background, x, marksize) if tonumber(label_size) == 0 then return mw.html.create('div'):cssText('font-size:0%;position:absolute'):wikitext(label) end local builder = mw.html.create('div') :cssText('font-size:' .. label_size .. '%;line-height:110%;position:absolute;width:' .. label_width .. 'em') local distance = round(marksize / 2 + 1) local spanCss if position == 'top' then -- specified top builder:cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em;text-align:center') elseif position == 'bottom' then -- specified bottom builder:cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em;text-align:center') elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left builder:cssText('top:-0.75em;right:' .. distance .. 'px;text-align:right') spanCss = 'float:right' else -- specified right or autodetected to right builder:cssText('top:-0.75em;left:' .. distance .. 'px;text-align:left') spanCss = 'float:left' end builder = builder:tag('span') :cssText('padding:1px') :cssText(spanCss) :wikitext(label) if background then builder:cssText('background-color:' .. background) end return builder:done() end local function getX(longitude, left, right) local width = (right - left) % 360 if width == 0 then width = 360 end local distanceFromLeft = (longitude - left) % 360 -- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter if distanceFromLeft - width / 2 >= 180 then distanceFromLeft = distanceFromLeft - 360 end return 100 * distanceFromLeft / width end local function getY(latitude, top, bottom) return 100 * (top - latitude) / (top - bottom) end function p.mark(frame, args, map) args = getArgsX(args, frame, {wrappers = 'Template:Location map~'}) if not map then map = p.getMapParams(args[1], frame) end local x, y, longitude, latitude longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude') latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude') if args.coordinates then -- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]] -- if longitude or latitude then -- error('Coordinates from [[मॉड्यूल:Coordinates]] and individual coordinates cannot both be provided') -- end longitude = coord2text('longitude', args.coordinates) latitude = coord2text('latitude', args.coordinates) elseif not longitude and not latitude and args.useWikidata then -- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't. local entity = mw.wikibase.getEntity() if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local value = entity.claims.P625[1].mainsnak.datavalue.value longitude, latitude = value.longitude, value.latitude end end if not longitude or not latitude then -- To bypass Lua no lat or long error, in incubator if not longitude and not latitude then return '' end if not longitude then error('देशान्तरला कौनो मान प्रयोग नै कैल गेल') end if not latitude then error('अक्षांशला कौनो मान प्रयोग नै कैल गेल') end end --[[ --final code once out of incubator--- if not longitude then error('देशान्तरला कौनो मान प्रयोग नै कैल गेल') elseif not latitude then error('अक्षांशला कौनो मान प्रयोग नै कैल गेल') end ]] local builder = mw.html.create() if (not args.lon_deg) ~= (not args.lat_deg) then builder:wikitext('[[बर्ग:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|डिग्री]]') elseif (not args.lon_min) ~= (not args.lat_min) then builder:wikitext('[[बर्ग:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|मिनट्]]') elseif (not args.lon_sec) ~= (not args.lat_sec) then builder:wikitext('[[बर्ग:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|सेकेण्ड्]]') elseif (not args.lon_dir) ~= (not args.lat_dir) then builder:wikitext('[[बर्ग:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|गोलार्द्ध]]') elseif (not args.long) ~= (not args.lat) then builder:wikitext('[[बर्ग:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|दशमलव]]') end if args.skew or args.lon_shift or args.markhigh then mw.log('अमान्य प्रातल प्रयोग कैल गेल ।') local parent = frame:getParent() if parent then mw.log('प्रधान छी ' .. parent:getTitle()) end mw.logObject(args, 'args') builder:wikitext('[[बर्ग:सम्भावित त्रुटिवाला स्थान मानचित्र|पन्ना घसकाएल मापदण्डक प्रयोग कैल गेल]]') end if map('x') ~= '' then x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude }))) else x = tonumber(getX(longitude, map('left'), map('right'))) end if map('y') ~= '' then y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude }))) else y = tonumber(getY(latitude, map('top'), map('bottom'))) end if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then mw.log('निसानके मानचित्रके सीमाके बाहिरे बिन झण्डाके बाहिरे रखल गेल हे । x = ' .. x .. ', y = ' .. y) local parent = frame:getParent() if parent then mw.log('प्रधान छी ' .. parent:getTitle()) end mw.logObject(args, 'args') builder:wikitext('[[बर्ग:सम्भावित त्रुटिवाला स्थान मानचित्र|कौनो झण्डा नै बाहरी मानचित्र सङ्गे प्रमाणित कैल गेल हल]]') end local mark = args.mark or map('mark') if mark == '' then mark = 'Red pog.svg' end local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8 local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2]) local labelDiv if args.label and args.position ~= 'none' then labelDiv = markLabelDiv(args.label, args.label_size or 90, args.label_width or 6, args.position, args.background, x, marksize) end return builder:node(markOuterDiv(x, y, imageDiv, labelDiv)) end local function switcherSeparate(s) if s == nil then return {} end local retval = {} for i in string.gmatch(s .. '#', '([^#]*)#') do i = mw.text.trim(i) retval[#retval + 1] = (i ~= '' and i) end return retval end function p.main(frame, args, map) args = getArgsX(args, frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc}) if args.useWikidata == nil then args.useWikidata = true end if not map then if args[1] then map = {} for mapname in string.gmatch(args[1], '[^#]+') do map[#map + 1] = p.getMapParams(mapname, frame) end if #map == 1 then map = map[1] end else map = p.getMapParams('पृथ्वी', frame) end end if type(map) == 'table' then local altmaps = switcherSeparate(args.AlternativeMap) if #altmaps > #map then error(string.format('%d AlternativeMaps प्रदान कैल गेल, मुदा मात्र %d मानचित्र उपलब्ध करावल गेल', #altmaps, #map)) end local overlays = switcherSeparate(args.overlay_image) if #overlays > #map then error(string.format('%d overlay_images प्रदान कैल गेल, मुदा मात्र %d मानचित्र उपलब्ध करावल गेल', #overlays, #map)) end local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do args.AlternativeMap = altmaps[k] args.overlay_image = overlays[k] outputs[k] = p.main(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' else return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map) end end function p.infobox_pushpin_map(frame) --This function is designed to be invoked from an infobox template --* Some parameters (generally starting with "pushpin_") are meant to be exposed as parameters -- in the outer infobox, settable by editors --* Others are meant to be "hidden" (e.g., only set inside the infobox template code) -- First get the combined arguments from both parent and invocation frame local raw_args = getArgs(frame,{parentFirst=true}) --If no map is supplied, return. if not raw_args['pushpin_map'] then return end -- Now get arguments from just the invocation frame local frame_args = getArgs(frame,{frameOnly=true}) -- parsed_args will have the resulting merged parameters local parsed_args = {} -- Default to using wikidata coodinates if no other coordiantes supplied. if raw_args.useWikidata == nil then parsed_args.useWikidata = true else parsed_args.useWikidata = raw_args.useWikidata end -- Parse the arguments parsed_args[1] = raw_args['pushpin_map'] parsed_args.float = frame_args.float or 'center' parsed_args.border = frame_args.border or 'infobox' parsed_args.default_width = frame_args.default_width parsed_args.max_width = frame_args.max_width parsed_args.coordinates = raw_args['coordinates'] parsed_args.caption = raw_args['pushpin_caption'] parsed_args.relief = raw_args['pushpin_relief'] parsed_args.label = raw_args['pushpin_label'] parsed_args.label_size = raw_args['pushpin_label_size'] parsed_args.position = raw_args['pushpin_label_position'] parsed_args.mark = raw_args['pushpin_mark'] parsed_args.marksize = raw_args['pushpin_mark_size'] parsed_args.alt = raw_args['pushpin_alt'] parsed_args.background = raw_args['pushpin_background'] parsed_args.width = raw_args['pushpin_map_size'] local map = {} local caption_list = {} for mapname in string.gmatch(parsed_args[1], '[^#]+') do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) end if parsed_args['caption'] then for caption in mw.text.gsplit(parsed_args['caption'], '##', true) do caption_list[#caption_list + 1] = caption end end if #map == 1 then map = map[1] if not parsed_args.caption then parsed_args.caption = 'Location within ' .. map('name') end end if type(map) == 'table' then mw.log('----') mw.logObject(map) if #caption_list > #map then error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map)) elseif not parsed_args.caption then -- Set a default caption for each of the multiple maps for i=1, #map do caption_list[#caption_list + 1] = 'Location within '.. map[i]('name') end end local outputs = {} parsed_args.autoSwitcherLabel = true for k,v in ipairs(map) do parsed_args.caption = caption_list[k] outputs[k] = p.main(frame, parsed_args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' else return p.top(frame, parsed_args, map) .. tostring( p.mark(frame, parsed_args, map) ) .. p.bottom(frame, parsed_args, map) end end return p 8dla7uumvcapeag7psupndiv3v63pdc 80425 80422 2026-09-21T19:02:47Z ऐक्टिवेटेड् 76 80425 Scribunto text/plain require('strict') require('Module:No globals') local p = {} local getArgs = require('Module:Arguments').getArgs local function getArgsX(args, ...) -- Return args after translation. local noTranslate = { [1] = true, -- do not translate name of map AlternativeMap = true, alt = true, caption = true, label = true, link = true, mark = true, overlay_image = true, } args = args or _getArgs(...) if not args._doneTranslate_ then local clone = {} -- cleaner to not change caller's table for k, v in pairs(args) do if type(v) ~= 'string' or noTranslate[k] then clone[k] = v else v = mw.ustring.gsub(v, '%d', { ['०'] = '0', ['१'] = '1', ['२'] = '2', ['३'] = '3', ['४'] = '4', ['५'] = '5', ['६'] = '6', ['७'] = '7', ['८'] = '8', ['९'] = '9', }) clone[k] = v :gsub(' *उत्तर', 'N') :gsub(' *पूर्व' , 'E') :gsub(' *दक्षिण', 'S') :gsub(' *पश्चिम', 'W') end end clone._doneTranslate_ = true return clone end return args end local function round(n, decimals) local pow = 10^(decimals or 0) return math.floor(n * pow + 0.5) / pow end function p.getMapParams(map, frame) if not map then error('प्रयोगला स्थानके मानचित्र परिभाषा नाम निर्दिष्ट होवेके चाही', 2) end local moduletitle = mw.title.new('Module:Location map/data/' .. map) if not moduletitle then error('स्थान मानचित्रके परिभाषाला "' .. map .. '" वैद्य नाम नै', 2) elseif moduletitle.exists then local mapData = mw.loadData('Module:Location map/data/' .. map) return function(name, params) if name == nil then return 'Module:Location map/data/' .. map elseif mapData[name] == nil then return '' elseif params then return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain() else return mapData[name] end end elseif mw.title.new('Template:Location map ' .. map).exists then local cache = {} if type(frame) ~= 'table' or type(frame.expandTemplate) ~= 'function' then error('A frame must be provided when using a legacy location map') end return function(name, params) if params then return frame:expandTemplate{title = 'Location map ' .. map, args = { name, unpack(params) }} else if name == nil then return 'Template:Location map ' .. map elseif cache[name] == nil then cache[name] = frame:expandTemplate{title = 'Location map ' .. map, args = { name }} end return cache[name] end end else error('Unable to find the specified location map definition. Neither "Module:Location map/data/' .. map .. '" nor "Template:Location map ' .. map .. '" exists', 2) end end function p.data(frame, args, map) args = getArgsX(args, frame, {frameOnly = true}) if not map then map = p.getMapParams(args[1], frame) end local params = {} for k,v in ipairs(args) do if k > 2 then params[k-2] = v end end return map(args[2], #params ~= 0 and params) end local hemisphereMultipliers = { longitude = { W = -1, w = -1, E = 1, e = 1 }, latitude = { S = -1, s = -1, N = 1, n = 1 } } local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction) if decimal then if degrees then error(direction .. '-एकराला दशमलव आउ डिएमएस दोनो डिग्री प्रदान नै कैल जा सकहे', 2) elseif minutes then error(direction .. '-मात्र डिएमएस डिग्री सङ्गे मिनट प्रदान कैल जा सकहे', 2) elseif seconds then error(direction .. '-मात्र डिएमएस डिग्री सङ्गे सेकेण्ड प्रदान कैल जा सकहे', 2) elseif hemisphere then error(direction .. '-मात्र डिएमएस डिग्री सङ्गे गोलार्द्ध प्रदान कैल जा सकहे', 2) end local retval = tonumber(decimal) if retval then return retval end error(direction .. '- लागि बनावल "'.. decimal .. '" मान अमान्य', 2) elseif seconds and not minutes then error('मिनट् प्रदान कैले बिन ' .. direction .. '-सेकेण्ड प्रदान कैल गेलहे', 2) elseif not degrees then if minutes then error('डिग्री प्रदान कैले बिन ' .. direction .. '-मिनट प्रदान कैल गेलहे', 2) elseif hemisphere then error('डिग्री प्रदान कैले बिन ' .. direction .. '-गोलार्द्ध प्रदान कैल गेलहे', 2) end return nil end decimal = tonumber(degrees) if not decimal then error(direction .. '- लागि निर्मित "'.. degrees .. '" डिग्री मान अमान्य', 2) elseif minutes and not tonumber(minutes) then error(direction .. '- लागि निर्मित "'.. minutes .. '" मिनट् मान अमान्य', 2) elseif seconds and not tonumber(seconds) then error(direction .. '- लागि निर्मित "'.. seconds .. '"सेकेण्ड् मान अमान्य', 2) end decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600 if hemisphere then local multiplier = hemisphereMultipliers[direction][hemisphere] if not multiplier then error(direction .. '- लागि निर्मित "'.. hemisphere .. '" गोलार्द्ध मान अमान्य', 2) end decimal = decimal * multiplier end return decimal end -- Finds a parameter in a transclusion of {{Coord}}. local function coord2text(para, coord) local value, direction, longitude, ew = coord:match('(%-?[.%d]+)°([NS]) (%-?[.%d]+)°([EW])') if para == 'longitude' then value, direction = longitude, ew end value = tonumber(value) if value then return value * hemisphereMultipliers[para][direction] end error('निर्देशाङ्क मान विकृत', 2) end -- effectively make removeBlanks false for caption and maplink, and true for everything else -- if useWikidata is present but blank, convert it to false instead of nil -- p.top, p.bottom, and their callers need to use this function p.valueFunc(key, value) if value then value = mw.text.trim(value) end if value ~= '' or key == 'caption' or key == 'maplink' then return value elseif key == 'useWikidata' then return false end end local function getContainerImage(args, map) if args.AlternativeMap then return args.AlternativeMap elseif args.relief and map('image1') ~= '' then return map('image1') else return map('image') end end function p.top(frame, args, map) args = getArgsX(args, frame, {frameOnly = true, valueFunc = p.valueFunc}) if not map then map = p.getMapParams(args[1], frame) end local width if not args.width then width = round((args.default_width or 240) * (tonumber(map('defaultscale')) or 1)) elseif mw.ustring.sub(args.width, -2) == 'px' then width = mw.ustring.sub(args.width, 1, -3) else width = args.width end local retval = args.float == 'center' and '<div class="center">' or '' if args.caption and args.caption ~= '' and args.border ~= 'infobox' then retval = retval .. '<div class="noviewer thumb ' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'tleft' elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then retval = retval .. 'tnone' else retval = retval .. 'tright' end retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px' if args.border == 'none' then retval = retval .. ';border:none' elseif args.border then retval = retval .. ';border-color:' .. args.border end retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">') else retval = retval .. '<div style="width:' .. width .. 'px;' if args.float == '"left"' or args.float == 'left' then retval = retval .. 'float:left;clear:left' elseif args.float == '"center"' or args.float == 'center' then retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto' elseif args.float == '"none"' or args.float == 'none' then retval = retval .. 'float:none;clear:none' else retval = retval .. 'float:right;clear:right' end retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">' end local image = getContainerImage(args, map) retval = string.format( '%s[[सञ्चिका:%s|%spx|%s%s]]', retval, image, width, args.alt or ((args.label or mw.title.getCurrentTitle().text) .. ' ' .. map('name') .. 'पर अवस्थित'), args.maplink and ('|link=' .. args.maplink) or '' ) if args.overlay_image then return retval .. '<div style="position:absolute;top:0;left:0">[[सञ्चिका:' .. args.overlay_image .. '|' .. width .. 'px]]</div>' else return retval end end function p.bottom(frame, args, map) args = getArgsX(args, frame, {frameOnly = true, valueFunc = p.valueFunc}) if not map then map = p.getMapParams(args[1], frame) end local retval = '</div>' if not args.caption or args.border == 'infobox' then if args.border then retval = retval .. '<div>' else retval = retval .. '<div style="font-size:90%;padding-top:3px">' end retval = retval .. (args.caption or (args.label or mw.title.getCurrentTitle().text) .. ' (' .. map('name') .. ')') .. '</div>' elseif args.caption ~= '' then -- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '| ]]</div>' .. args.caption .. '</div>' end if args.switcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>' elseif args.autoSwitcherLabel then retval = retval .. '<span class="switcher-label" style="display:none">' .. map('name') .. 'के मानचित्र देखथिन</span>' end retval = retval .. '</div></div>' if args.caption_undefined then mw.log('निकालल गेल प्राचल caption_undefined के प्रयोग कैल गेल हे ।') local parent = frame:getParent() if parent then mw.log('प्रधान हे ' .. parent:getTitle()) end mw.logObject(args, 'args') retval = retval .. '[[श्रेणी:सम्भावित त्रुटिवाला स्थान मानचित्र|पन्नामे सब मापदण्डके प्रयोग कैल गेल हे]]' end if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then mw.log(map().. ' मानचित्र नाम परिभाषामे प्रयुक्त प्राचल हटा देल गेल') retval = retval .. '[[श्रेणी:सम्भावित त्रुटिवाला स्थान मानचित्र|पन्नामे सब मापदण्डके प्रयोग कैल गेल हे]]' end if string.find(map('name'), '|', 1, true) then mw.log(map().. 'पाइपके प्रयोग मानचित्रके नाम परिभाषित करवेला कैल जाइत हे') retval = retval .. '[[श्रेणी:सम्भावित त्रुटिवाला स्थान मानचित्र|पाइप कथित]]' end if args.float == 'center' then retval = retval .. '</div>' end return retval end local function markOuterDiv(x, y, imageDiv, labelDiv) return mw.html.create('div') :cssText('position:absolute;top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%') :node(imageDiv) :node(labelDiv) end local function markImageDiv(mark, marksize, label, link, alt, title) local builder = mw.html.create('div') :addClass('id') :cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px') :attr('title', title) if marksize ~= 0 then builder:wikitext(string.format( '[[सञ्चिका:%s|%dx%dpx|%s|link=%s%s|class=notpageimage noviewer]]', mark, marksize, marksize, label, link, alt and ('|alt=' .. alt) or '' )) end return builder end local function markLabelDiv(label, label_size, label_width, position, background, x, marksize) if tonumber(label_size) == 0 then return mw.html.create('div'):addClass('l0'):wikitext(label) end local builder = mw.html.create('div') :cssText('width:' .. label_width .. 'em') local distance = round(marksize / 2 + 1) if position == 'top' then -- specified top builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position == 'bottom' then -- specified bottom builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left builder:addClass('pl'):cssText('right:' .. distance .. 'px') else -- specified right or autodetected to right builder:addClass('pr'):cssText('left:' .. distance .. 'px') end builder = builder:tag('div') :wikitext(label) if background then builder:cssText('background-color:' .. background) end return builder:done() end local function getY(latitude, top, bottom) return 100 * (top - latitude) / (top - bottom) end local function getX(longitude, left, right) local width = (right - left) % 360 if width == 0 then width = 360 end local distanceFromLeft = (longitude - left) % 360 -- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter if distanceFromLeft - width / 2 >= 180 then distanceFromLeft = distanceFromLeft - 360 end return 100 * distanceFromLeft / width end function p.mark(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'साँचा:Location map~'}) end local mapnames = {} if not map then if args[1] then map = {} for mapname in mw.text.gsplit(args[1], '#', true) do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) mapnames[#mapnames + 1] = mapname end if #map == 1 then map = map[1] end else map = p.getMapParams('World', frame) args[1] = 'World' end end if type(map) == 'table' then local outputs = {} local oldargs = args[1] for k,v in ipairs(map) do args[1] = mapnames[k] outputs[k] = tostring(p.mark(frame, args, v)) end args[1] = oldargs return table.concat(outputs, '#PlaceList#') .. '#PlaceList#' end local x, y, longitude, latitude longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude') latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude') if args.excludefrom then -- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps) for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do -- Check if this map is excluded. If so, return an empty string. if args[1] == exclusionmap then return '' end end end local builder = mw.html.create() local currentTitle = mw.title.getCurrentTitle() if args.coordinates then -- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]] -- if longitude or latitude then -- error('Coordinates from [[घटक:Coordinates]] and individual coordinates cannot both be provided') -- end longitude = coord2text('longitude', args.coordinates) latitude = coord2text('latitude', args.coordinates) elseif not longitude and not latitude and args.useWikidata then -- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't. local entity = mw.wikibase.getEntity() if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then local value = entity.claims.P625[1].mainsnak.datavalue.value longitude, latitude = value.longitude, value.latitude end if args.link and (currentTitle.namespace == 0) then builder:wikitext('[[श्रेणी:Location maps with linked markers with coordinates from Wikidata]]') end end if not longitude then error('देशान्तरला कौनो मान प्रयोग नै कैल गेल') elseif not latitude then error('अक्षांशला कौनो मान प्रयोग नै कैल गेल') end if currentTitle.namespace > 0 then if (not args.lon_deg) ~= (not args.lat_deg) then builder:wikitext('[[श्रेणी:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|डिग्री]]') elseif (not args.lon_min) ~= (not args.lat_min) then builder:wikitext('[[श्रेणी:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|मिनट]]') elseif (not args.lon_sec) ~= (not args.lat_sec) then builder:wikitext('[[श्रेणीश्रेणी:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|सेकेण्ड]]') elseif (not args.lon_dir) ~= (not args.lat_dir) then builder:wikitext('[[श्रेणी:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|गोलार्द्ध]]') elseif (not args.long) ~= (not args.lat) then builder:wikitext('[[श्रेणी:विभिन्न देशान्तर आउ अक्षांश विवरण सहित स्थानके मानचित्र|दशमलव]]') end end if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]') end if args.skew or args.lon_shift or args.markhigh then mw.log('अमान्य प्रातल प्रयोग कैल गेल ।') local parent = frame:getParent() if parent then mw.log('प्रधान हे ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then local key = (args.skew and 'skew' or '') .. (args.lon_shift and 'lon_shift' or '') .. (args.markhigh and 'markhigh' or '') builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]') end end if map('x') ~= '' then x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude }))) else x = tonumber(getX(longitude, map('left'), map('right'))) end if map('y') ~= '' then y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude }))) else y = tonumber(getY(latitude, map('top'), map('bottom'))) end if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then mw.log('निसानके मानचित्रके सीमाके बाहिरे बिन झण्डाके बाहिरे रखल गेल हे । x = ' .. x .. ', y = ' .. y) local parent = frame:getParent() if parent then mw.log('प्रधान हे ' .. parent:getTitle()) end mw.logObject(args, 'args') if currentTitle.namespace == 0 then local key = currentTitle.prefixedText builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]') end end local mark = args.mark or map('mark') if mark == '' then mark = 'Red pog.svg' end local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8 local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2]) local label_size = args.label_size or 91 local labelDiv if args.label and args.position ~= 'none' then labelDiv = markLabelDiv(args.label, label_size, args.label_width or 6, args.position, args.background, x, marksize) end return builder:node(markOuterDiv(x, y, imageDiv, labelDiv, label_size)) end local function switcherSeparate(s) if s == nil then return {} end local retval = {} for i in string.gmatch(s .. '#', '([^#]*)#') do i = mw.text.trim(i) retval[#retval + 1] = (i ~= '' and i) end return retval end local function switcherSeparate(s) if s == nil then return {} end local retval = {} for i in string.gmatch(s .. '#', '([^#]*)#') do i = mw.text.trim(i) retval[#retval + 1] = (i ~= '' and i) end return retval end function p.infobox_pushpin_map(frame) --This function is designed to be invoked from an infobox template --* Some parameters (generally starting with "pushpin_") are meant to be exposed as parameters -- in the outer infobox, settable by editors --* Others are meant to be "hidden" (e.g., only set inside the infobox template code) -- First get the combined arguments from both parent and invocation frame local raw_args = getArgs(frame,{parentFirst=true}) --If no map is supplied, return. if not raw_args['pushpin_map'] then return end -- Now get arguments from just the invocation frame local frame_args = getArgs(frame,{frameOnly=true}) -- parsed_args will have the resulting merged parameters local parsed_args = {} -- Default to using wikidata coodinates if no other coordiantes supplied. if raw_args.useWikidata == nil then parsed_args.useWikidata = true else parsed_args.useWikidata = raw_args.useWikidata end -- Parse the arguments parsed_args[1] = raw_args['pushpin_map'] parsed_args.float = frame_args.float or 'center' parsed_args.border = frame_args.border or 'infobox' parsed_args.default_width = frame_args.default_width parsed_args.max_width = frame_args.max_width parsed_args.coordinates = raw_args['coordinates'] parsed_args.caption = raw_args['pushpin_caption'] parsed_args.relief = raw_args['pushpin_relief'] parsed_args.label = raw_args['pushpin_label'] parsed_args.label_size = raw_args['pushpin_label_size'] parsed_args.position = raw_args['pushpin_label_position'] parsed_args.mark = raw_args['pushpin_mark'] parsed_args.marksize = raw_args['pushpin_mark_size'] parsed_args.alt = raw_args['pushpin_alt'] parsed_args.background = raw_args['pushpin_background'] parsed_args.width = raw_args['pushpin_map_size'] local map = {} local caption_list = {} for mapname in string.gmatch(parsed_args[1], '[^#]+') do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) end if parsed_args['caption'] then for caption in mw.text.gsplit(parsed_args['caption'], '##', true) do caption_list[#caption_list + 1] = caption end end if #map == 1 then map = map[1] if not parsed_args.caption then parsed_args.caption = 'Location within ' .. map('name') end end if type(map) == 'table' then mw.log('----') mw.logObject(map) if #caption_list > #map then error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map)) elseif not parsed_args.caption then -- Set a default caption for each of the multiple maps for i=1, #map do caption_list[#caption_list + 1] = 'Location within '.. map[i]('name') end end local outputs = {} parsed_args.autoSwitcherLabel = true for k,v in ipairs(map) do parsed_args.caption = caption_list[k] outputs[k] = p.main(frame, parsed_args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' else return p.top(frame, parsed_args, map) .. tostring( p.mark(frame, parsed_args, map) ) .. p.bottom(frame, parsed_args, map) end end function p.main(frame, args, map) local caption_list = {} if not args then args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc}) end if args.useWikidata == nil then args.useWikidata = true end if not map then if args[1] then map = {} for mapname in string.gmatch(args[1], '[^#]+') do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) end if args['caption'] then if args['caption'] == "" then while #caption_list < #map do caption_list[#caption_list + 1] = args['caption'] end else for caption in mw.text.gsplit(args['caption'], '##', true) do caption_list[#caption_list + 1] = caption end end end if #map == 1 then map = map[1] end else map = p.getMapParams('World', frame) end end if type(map) == 'table' then local altmaps = switcherSeparate(args.AlternativeMap) if #altmaps > #map then error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map)) end local overlays = switcherSeparate(args.overlay_image) if #overlays > #map then error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map)) end if #caption_list > #map then error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map)) end local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do args.AlternativeMap = altmaps[k] args.overlay_image = overlays[k] args.caption = caption_list[k] outputs[k] = p.main(frame, args, v) end return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>' else return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map) end end return p flppnzryr43qd0k37rfw9npgebhhpqt घटक:Routemap 828 7229 80404 22323 2026-09-21T17:38:12Z ऐक्टिवेटेड् 76 80404 Scribunto text/plain local i18n = { errors = { ["parameter-missing"] = "Missing parameter!", ["collapsible-block-not-closed"] = "Collapsible section not closed properly!", ["collapsible-block-not-open"] = "Missing start-Collapsible markup!", ["collapsible-block-empty"] = "Collapsible section must not be empty!", ["collapsible-block-no-first-row"] = "Invalid first row of collapsible section!", ["collapsible-block-no-replacement"] = "Invalid collapsible replacement row!", ["colspan-less-rows-than-set"] = "Invalid colspan set!", }, ["error-categories"] = { default = '[[श्रेणी:Pages using Routemap with errors]]', ["text-images"] = '[[श्रेणी:Pages using Routemap with text images]]', ["separate-navbar"] = '[[श्रेणी:Pages using Routemap with a separate navbar template]]', ["missing-text-values"] = '[[श्रेणी:Pages using BSto or BSsrws with missing text values]]', ["br-tags"] = '[[श्रेणी:Pages using BSto, BSsplit, BSsrws or BScvt with br tags]]', ["srws"] = '[[श्रेणी:Pages using BSsplit instead of BSsrws]]', ["rmr-error"] = '[[श्रेणी:Pages with bad value for RoutemapRoute template]]' }, text = { navbar_mini = false, -- for navbar pos 2 only navbar_text = 'This diagram:', -- for navbar pos 2 only legend_text = 'आख्यान', legend = { default = '[[साँचा:Railway line legend', track = '[[साँचा:Railway track legend', bus = '[[साँचा:Bus route legend', road = '[[साँचा:Roads legend', canal = '[[साँचा:Waterways legend', water = '[[साँचा:Waterways legend', waterway = '[[साँचा:Waterways legend', foot = '[[साँचा:Trails legend', footpath = '[[साँचा:Trails legend', walkway = '[[साँचा:Trails legend' } }, html = { ["cell-icon-fmt"] = '<div style="%s">[[सञ्चिका:BSicon_%s.svg|x20px|link=%s|alt=|%s]]%s</div>', ["cell-overlapicon-fmt"] = '<div class="RMic" style="%s">[[सञ्चिका:BSicon_%s.svg|x20px|link=%s|alt=|%s]]</div>', ["cell-icon-fmt-with-overlap"] = '<div style="%s"><div class="RMov">%s</div><div%s>[[सञ्चिका:BSicon_%s.svg|x20px|link=|alt=|%s]]%s</div></div>', ["cell-text-fmt"] = '<div class="RMtx RM%s" style="%s"><div%s style="%s" title="%s">%s%s%s%s%s%s</div></div>', ["cell-overlaptext-fmt"] = '<div class="RMtx RM%s" style="%s"><div%s style="%s" title="%s">%s%s%s%s%s</div></div>', ["cell-text-fmt-with-overlap"] = '<div class="RM%s" style="%s"><div class="RMov">%s</div><div class="RMtx RM%s" style="%s"><div%s style="%s" title="%s">%s%s%s%s%s%s</div></div></div>', ["cell-empty-fmt"] = '<div class="RM%s" style="%s">%s</div>', ["cell-empty-fmt-with-overlap"] = '<div style="%s"><div class="RMov">%s</div><div class="RMsp RM%s" style="%s">%s</div></div>', ["cell-filler-fmt"] = '<div class="RMf_" style="%s"><div class="RMfm" style="background:%s"></div></div>', ["cell-filler-empty-fmt"] = '<div class="RMf_ RM%s" style="%s"></div>', ["row-linfo4-fmt"] = '\ |class="RMl4" style="%s"|<div class="RMsi">%s</div>',-- parameters:linfo4-width, linfo4 ["row-linfo3-fmt"] = '<div class="RMsi">%s</div> ', ["row-rinfo3-fmt"] = ' <div class="RMsi">%s</div>', ["row-rinfo4-fmt"] = '\ |class="RMr4" style="%s"|<div class="RMsi">%s</div>',-- parameters:rinfo4-width, rinfo4 ["row-general-fmt"] = '\ |- %s\ |class="RMl" colspan="%s" style="%s"|%s\ |%s style="%s"|<div class="RMsi">%s</div>\ |class="RMir" style="%s"|%s\ |%s style="%s"|<div class="RMsi">%s</div>\ |class="RMr" colspan="%s" style="%s"|%s%s',-- parameters: linfo4-fmt, colspan-left, linfo3+2-width, linfo3+2, linfo1-pad, linfo1-width, linfo1, bg, cells, rinfo1-pad, rinfo1-width, rinfo1, colspan-right, rinfo2+3-width, rinfo2+3, rinfo4-fmt ["row-collapsible-begin-fmt"] = '\ |- style="line-height:1"\ |colspan="7" style="padding:0 !important;color:inherit;background:%s"|\ {|class="RMcollapse %s%s" style="%s"',-- parameters: bg, "collapsible "/"mw-collapsible mw-", collapse-state, "float:right" / "" ["row-collapsible-end-fmt"] = '\n|}', ["row-collapsible-left-button-width"] = '45px',-- 50px is the minimal width for [показать] / [скрыть] button. Use 40px for [show] / [hide] ["row-collapsible-left-button-fmt"] = '\n! style="padding-right:3px;min-width:%s;%s" |',--parameters: left-button-width, linfo4-width ["row-collapsible-left-linfo4+3+2-fmt"] = '\ {|cellspacing="0" cellpadding="0" style="line-height:1;width:100%%;padding:0 !important;margin:0 !important"\ |style="padding:0 3px 0 1px;text-align:left"|<div class="RMsi">%s</div>\ |style="text-align:right"| %s\ |}',-- parameters: linfo4, linfo3+2 ["row-collapsible-right-button-width"] = '45px',-- 72px is the minimal width for [развернуть] / [свернуть] button at 90%. Use 58px for [expand] / [collapse] ["row-collapsible-right-rinfo2+3+4-fmt"] = '\ {|cellspacing="0" cellpadding="0" style="line-height:1;width:100%%;padding:0 !important;margin:0 !important"\ |style="text-align:left"| %s\ |style="padding:0 1px 0 3px;text-align:right"|<div class="RMsi">%s</div>\ |}',-- parameters: rinfo2+3, linfo4 ["row-collapsible-right-button-fmt"] = '\n| style="padding-left:3px;font-size:90%%;min-width:%s;%s" |',--parameters: right-button-width, rinfo4-width ["row-collapsible-replace-begin-fmt"] = '\ |- style="line-height:1"\ |colspan="7" style="padding:0 %s"|<div style="position:relative">\ {| class="RMreplace" style="%sbackground:%s"',-- parameters: "right-button-width 0 0" / "0 0 left-button-width", "right:0px" / "", bg ["row-collapsible-replace-end-fmt"] = '\n|}</div>', ["colspan-fmt"] = '%s\n|-\n| colspan="7" style="color:inherit;background:%s;text-align:%s;%s"|\n%s', ["empty-row-fmt"] = '\n|-\n|style="padding:0 3px 0 0;%s"|\n|style="%s"|\n|%s style="%s"|\n|\n|%s style="%s"|\n|style="%s"|\n|style="padding:0 0 0 3px;%s"|' } } local p,q={},{} local getArgs = require('घटक:Arguments').getArgs local function makeInvokeFunction(funcName) -- makes a function that can be returned from #invoke, using -- [[मॉड्यूल:Arguments]]. return function (frame) local args = getArgs(frame, {parentOnly = true}) return p[funcName](args) end end local function makeTemplateFunction(funcName) -- makes a function for calling via #invoke within a template return function (frame) local args = getArgs(frame, {frameOnly = true}) return p[funcName](args) end end local function formaterror(key,param) local result = string.format(i18n.html['colspan-fmt'], '', '', '', '', '<span class="error">' .. string.format(i18n.errors[key] or (tostring(key) .. ' %s'), tostring(param or '')) .. '</span>') if mw.site.namespaces[mw.title.getCurrentTitle().namespace].isContent then result = result .. (i18n['error-categories'][key] or i18n['error-categories'].default or '') end return result end local function RGBbyCode(code)-- RGB codes for BSicon sets at Commons:Category:Icons for railway descriptions/other colors local colors = {-- Any changes should be discussed at Commons:Talk:BSicon/Colors bahn = 'BE2D2C', ex = 'D77F7E', u = '003399', uex = '6281C0', f = '008000', fex = '64B164', g = '2CA05A', gex = '7EC49A', azure = '3399FF', ex_azure = '99CCFF', black = '000000', ex_black = '646464', blue = '0078BE', ex_blue = '64ACD6', brown = '8D5B2D', ex_brown = 'B89A7F', brunswick= '1B4D3E', ex_brunswick= '64A064', carrot = 'ED9121', ex_carrot = 'F1BA76', excarrot = 'F1BA76', ex_excarrot = 'F3D2A9', cerulean = '1A8BB9', ex_cerulean = '73B7D3', cyan = '40E0D0', ex_cyan = '8AEAE1', deepsky = '00BFFF', ex_deepsky = '7FDFFF', denim = '00619F', ex_denim = '649EC3', fuchsia = 'B5198D', ex_fuchsia = 'D173B8', golden = 'D7C447', ex_golden = 'E5DA8E', green = '2DBE2C', ex_green = '7FD67E', grey = '999999', ex_grey = 'C0C0C0', jade = '53B147', ex_jade = '95CE8E', lavender = '9999FF', ex_lavender = 'C0C0FF', lime = '99CC00', ex_lime = 'D1E681', maroon = '800000', ex_maroon = 'B16464', ochre = 'CC6600', ex_ochre = 'DEA164', olive = '837902', ex_olive = 'B2AC64', orange = 'FF6600', ex_orange = 'FF9955', pink = 'F0668D', ex_pink = 'F4A1B8', purple = '8171AC', ex_purple = 'B1A8CB', red = 'EF161E', ex_red = 'F37176', ruby = 'CC0066', ex_ruby = 'DE64A1', exruby = 'DE64A1', ex_exruby = 'E89FC4', saffron = 'FFAB2E', ex_saffron = 'FFC969', sky = '069DD3', ex_sky = '67C2E3', steel = 'A1B3D4', ex_steel = 'C4CFE3', teal = '339999', ex_teal = '82C0C0', exteal = '82C0C0', ex_exteal = 'B1D6D6', violet = '800080', ex_violet = 'B164B1', yellow = 'FFD702', ex_yellow = 'FFEB81', white = 'FFFFFF', ex_white = 'F9F9F9', -- ex-white is the same color as background masks - DO NOT CHANGE water = '007CC3', } return colors[code] or colors.bahn end p.RGBbyCode = makeInvokeFunction('_RGBbyCode') function p._RGBbyCode(args) return RGBbyCode(args[1]) end local function properties(str) --str is a combination of properties with following syntax: --property name=value,property name1=value1,property name2=value2 and so on local result = {} for i, v in ipairs(mw.text.split(str, ',')) do if v then local t = mw.text.split(v, '=') if string.find(v, '=') then t[1] = mw.text.trim(t[1]) --trim parameter names table.insert(result, t[1]) result[t[1]] = t[2] or '' --fill table with pairs "property"="value" elseif result[result[i - 1]] then table.insert(result, result[i - 1]) result[result[i]] = result[result[i]]..','..t[1] --if no equals sign then tack t[1] onto the previous result else table.insert(result, '~~') end else table.insert(result, '~~') end end return result end local function positive(x) if not x then return nil else x = string.lower(x) end if x == 'yes' or x == 'y' or x == '1' or x == 'true' then return 1 end end local function negative(x) if not x then return nil else x = string.lower(x) end if x == 'no' or x == 'n' or x == '0' or x == 'false' then return 0 end end local function alignment(x, y, z) if not x then return nil end local directions = { ['inherit-left'] = {'l', 'left',}, ['inherit-right'] = {'r', 'right',}, ['top-inherit'] = {'a', 't', 'top',}, ['bottom-inherit'] = {'e', 'b', 'bottom',}, ['top-left'] = {'la', 'tl', 'c4', 'nw', 'top-left', 'topleft',}, ['top-right'] = {'ra', 'tr', 'c1', 'ne', 'top-right', 'topright',}, ['bottom-left'] = {'le', 'bl', 'c3', 'sw', 'bottom-left', 'bottomleft',}, ['bottom-right'] = {'re', 'br', 'c2', 'se', 'bottom-right', 'bottomright',}, ['inherit-center'] = {'c', 'center', 'centre',}, ['middle-inherit'] = {'m', 'middle',}, ['top-center'] = {'ma', 'tc', 'top-center', 'top-centre', 'topcenter', 'topcentre',}, ['bottom-center'] = {'me', 'bc', 'bottom-center', 'bottom-centre', 'bottomcenter', 'bottomcentre',}, ['middle-left'] = {'lm', 'ml', 'middle-left', 'middleleft',}, ['middle-right'] = {'rm', 'mr', 'middle-right', 'middleright',}, ['middle-center'] = {'cm', 'mc', 'middle-center', 'middle-centre', 'middlecenter', 'middlecentre',}, } for k, v in pairs(directions) do for _, name in ipairs(v) do if x:lower() == name then local values = mw.text.split(k, '-') if values[1] == 'inherit' then values[1] = y end if values[2] == 'inherit' then values[2] = z end return values end end end return {y, z} end local function cell(icon,overlapIcons,rowProps)--[[ Icon handling. Each icon is defined as in the following example: icon ID!~overlap icon ID!@image link target Values for an icon ID containing "*" are treated as text, with the letter(s) before "*" as width prefix(es). No limit on overlapping icons or text; just separate them by "!~". Parameters can be added after every object, separated to the left by "!_". This, if there is a link, must be after the link. Parameters for individual objects in an overlapping stack can also be added, separated to the left by "__". Unless a link is provided, each cell will have mouseover text indicating its contents. ]] local tmp, tmp2, cellProps, iconProps, overlapProps, tmp_sep, link, tracking, icontext, iconpre = {}, {}, {}, {}, {}, '', '', '' if #overlapIcons > 0 then tmp = mw.text.split(overlapIcons[#overlapIcons], '!_') if #tmp > 1 then overlapIcons[#overlapIcons], cellProps = tmp[1], properties(tmp[2]) end tmp = mw.text.split(overlapIcons[#overlapIcons], '!@') overlapIcons[#overlapIcons] = tmp[1] if #tmp > 1 then link = tmp[2] end tmp = mw.text.split(icon, '__') icon = tmp[1] if #tmp > 1 then iconProps = properties(tmp[2]) end for i, v in ipairs(overlapIcons) do tmp = mw.text.split(v, '__') overlapIcons[i] = mw.text.trim(tmp[1]) if #tmp > 1 then overlapProps[i] = properties(tmp[2]) else overlapProps[i] = {} end end else tmp = mw.text.split(icon, '[!_]_') if #tmp > 1 then icon, cellProps = tmp[1], properties(tmp[2]) end tmp = mw.text.split(icon, '!@') icon = mw.text.trim(tmp[1]) if #tmp > 1 then link = tmp[2] end end if #overlapIcons > 0 and icon ~= '' then tmp_sep = '; ' end local icontip = mw.text.nowiki(mw.text.unstripNoWiki(icon..tmp_sep..table.concat(overlapIcons, '; '))) local textspl = string.find(icon, '%*') if textspl then icontext = mw.text.trim(mw.ustring.sub(icon, textspl + 1)) if textspl ~= 1 then iconpre = mw.text.trim(mw.ustring.sub(icon, 1, textspl - 1)) end end cellProps.class = '' if cellProps.style then cellProps.style = ';'..cellProps.style else cellProps.style = '' end cellProps.bg = cellProps.bg or cellProps.background or cellProps.bgcolor if cellProps.bg then cellProps.style = cellProps.style..';background:'..cellProps.bg end if #overlapIcons > 0 or icontext then cellProps._before, cellProps._after = rowProps._before or '', rowProps._after or '' cellProps.color = cellProps.color or cellProps.colour ; cellProps.bold = cellProps.bold or cellProps.b ; cellProps.italic = cellProps.italic or cellProps.i or cellProps.it if cellProps.color then cellProps.style = cellProps.style..';color:'..cellProps.color end if positive(cellProps.italic) then cellProps.style = cellProps.style..';font-style:italic' end if positive(cellProps.bold) then cellProps.style = cellProps.style..';font-weight:bold' end if not cellProps.fontsize or rowProps.fontsize or cellProps.fontsize == 'info' then elseif cellProps.fontsize == 'cmt' or cellProps.fontsize == 'comment' then cellProps._before, cellProps._after = '<div class="RMsi">', '</div>' else cellProps.style = cellProps.style..';font-size:'..cellProps.fontsize end if cellProps.align or rowProps.align then rowProps.align = rowProps.align or {'middle', 'center'} cellProps.align = alignment(cellProps.align, rowProps.align[1], rowProps.align[2]) or rowProps.align cellProps.style, cellProps.textfmt = cellProps.style..';text-align:'..cellProps.align[2], ';vertical-align:'..cellProps.align[1] else cellProps.textfmt = '' end end if #overlapIcons > 0 then tmp = {} for i, v in ipairs(overlapIcons) do local thislink = link if i ~= #overlapIcons then thislink = '' end if thislink and thislink ~= '' then icontip = thislink end if overlapProps[i].style then overlapProps.style = ';'..overlapProps[i].style else overlapProps.style = '' end overlapProps[i].bg = overlapProps[i].bg or overlapProps[i].background or overlapProps[i].bgcolor if overlapProps[i].bg then overlapProps.style = overlapProps.style..';background:'..overlapProps[i].bg end local tmp_textspl = string.find(v, '%*') if tmp_textspl then overlapProps.class = '' local tmp_icontext, tmp_iconpre = mw.text.trim(mw.ustring.sub(v, tmp_textspl + 1)), '' if tmp_textspl ~= 1 then tmp_iconpre = mw.text.trim(mw.ustring.sub(v, 1, tmp_textspl - 1)) end overlapProps._before, overlapProps._after = cellProps._before, cellProps._after overlapProps[i].color = overlapProps[i].color or overlapProps[i].colour ; overlapProps[i].bold = overlapProps[i].bold or overlapProps[i].b ; overlapProps[i].italic = overlapProps[i].italic or overlapProps[i].i or overlapProps[i].it if overlapProps[i].color then overlapProps.style = overlapProps.style..';color:'..overlapProps[i].color end if positive(overlapProps[i].italic) then overlapProps.style = overlapProps.style..';font-style:italic' end if positive(overlapProps[i].bold) then overlapProps.style = overlapProps.style..';font-weight:bold' end if rowProps.fontsize or cellProps.fontsize or overlapProps[i].fontsize == 'info' then elseif not overlapProps[i].fontsize then overlapProps.class = ' class="RMts"' elseif overlapProps[i].fontsize == 'cmt' or overlapProps[i].fontsize == 'comment' then overlapProps._before, overlapProps._after = '<div class="RMsi">', '</div>' else overlapProps.style = overlapProps.style..';font-size:'..overlapProps[i].fontsize end if overlapProps[i].align or cellProps.align then cellProps.align = cellProps.align or {'middle', 'center'} overlapProps.align = alignment(overlapProps[i].align, cellProps.align[1], cellProps.align[2]) or cellProps.align overlapProps.style, overlapProps.textfmt = overlapProps.style..';text-align:'..overlapProps.align[2], ';vertical-align:'..overlapProps.align[1] else overlapProps.style, overlapProps.textfmt = overlapProps.style..';text-align:center', ';vertical-align:middle' end if overlapProps[i].abbr then overlapProps.tag = {'<abbr title="'..string.gsub(overlapProps[i].abbr, '"', '&quot;')..'">', '</abbr>'} else overlapProps.tag = {'', ''} end table.insert(tmp, string.format(i18n.html['cell-overlaptext-fmt'], (tmp_iconpre and tmp_iconpre ~= '' and tmp_iconpre or '_'), overlapProps.style, overlapProps.class, overlapProps.textfmt, icontip, overlapProps.tag[1], overlapProps._before, tmp_icontext, overlapProps._after, overlapProps.tag[2])) else v = mw.text.trim(v) if string.find(v, 'num') then if not string.find(v, 'numN%d+') then tracking = tracking..(i18n['error-categories']['text-images'] or i18n['error-categories'].default) end end table.insert(tmp, string.format(i18n.html['cell-overlapicon-fmt'], overlapProps.style, v, thislink, icontip)) end end if iconProps.style then tmp2[1] = true else iconProps.style = '' end iconProps.bg = iconProps.bg or iconProps.background or iconProps.bgcolor if iconProps.bg then iconProps.style = iconProps.style..';background:'..iconProps.bg end if string.match(icon, '^[%+_]?o?c?d?b?s?w?$') then if tmp2[1] then iconProps.style = ';'..iconProps.style end return string.format(i18n.html['cell-empty-fmt-with-overlap'], cellProps.style, mw.text.trim(table.concat(tmp)), (string.match(icon, '^.+$') or '_'), iconProps.style, tracking) elseif icontext then iconProps.class = '' iconProps._before, iconProps._after = cellProps._before, cellProps._after iconProps.color = iconProps.color or iconProps.colour ; iconProps.bold = iconProps.bold or iconProps.b ; iconProps.italic = iconProps.italic or iconProps.i or iconProps.it if iconProps.color then iconProps.style = iconProps.style..';color:'..iconProps.color end if positive(iconProps.italic) then iconProps.style = iconProps.style..';font-style:italic' end if positive(iconProps.bold) then iconProps.style = iconProps.style..';font-weight:bold' end if rowProps.fontsize or cellProps.fontsize or iconProps.fontsize == 'info' then elseif not iconProps.fontsize then iconProps.class = ' class="RMts"' elseif iconProps.fontsize == 'cmt' or iconProps.fontsize == 'comment' then iconProps._before, iconProps._after = '<div class="RMsi">', '</div>' else iconProps.style = iconProps.style..';font-size:'..iconProps.fontsize end if iconProps.align or cellProps.align then cellProps.align = cellProps.align or {'middle', 'center'} iconProps.align = alignment(iconProps.align, cellProps.align[1], cellProps.align[2]) or cellProps.align iconProps.style, iconProps.textfmt = iconProps.style..';text-align:'..iconProps.align[2], ';vertical-align:'..iconProps.align[1] else iconProps.style, iconProps.textfmt = iconProps.style..';text-align:center', ';vertical-align:middle' end if iconProps.abbr then iconProps.tag = {'<abbr title="'..string.gsub(iconProps.abbr, '"', '&quot;')..'">', '</abbr>'} else iconProps.tag = {'', ''} end if tmp2[1] then iconProps.style = ';'..iconProps.style end return string.format(i18n.html['cell-text-fmt-with-overlap'], (iconpre and iconpre ~= '' and iconpre or '_'), cellProps.style, mw.text.trim(table.concat(tmp)), (iconpre and iconpre ~= '' and iconpre or '_'), iconProps.style, iconProps.class, iconProps.textfmt, icontip, iconProps.tag[1], iconProps._before, icontext, iconProps._after, tracking, iconProps.tag[2]) else if iconProps.style ~= '' then iconProps.style = string.gsub(' style="'..iconProps.style..'"', '";', '"', 1) end if string.find(icon, 'num') then if not string.find(icon, 'numN%d+') then tracking = tracking..(i18n['error-categories']['text-images'] or i18n['error-categories'].default) end end return string.format(i18n.html['cell-icon-fmt-with-overlap'], cellProps.style, mw.text.trim(table.concat(tmp)), iconProps.style, icon, icontip, tracking) end end if string.match(icon, '^[%+_]?o?c?d?b?s?w?$') then return string.format(i18n.html['cell-empty-fmt'], (string.match(icon, '^.+$') or '_'), cellProps.style, tracking) else if link and link ~= '' then icontip = link end if icontext then if not cellProps.fontsize and not rowProps.fontsize then cellProps.class = ' class="RMts"' end if cellProps.abbr then cellProps.tag = {'<abbr title="'..string.gsub(cellProps.abbr, '"', '&quot;>')..'">', '</abbr>'} else cellProps.tag = {'', ''} end return string.format(i18n.html['cell-text-fmt'], (iconpre and iconpre ~= '' and iconpre or '_'), cellProps.style, cellProps.class, cellProps.textfmt, icontip, cellProps.tag[1], cellProps._before, icontext, cellProps._after, tracking, cellProps.tag[2]) else if string.find(icon, 'num') then if not string.find(icon, 'numN%d+') then tracking = tracking..(i18n['error-categories']['text-images'] or i18n['error-categories'].default) end end return string.format(i18n.html['cell-icon-fmt'], cellProps.style, icon, link, icontip, tracking) end end end local function fillercell(code, height) --Creates a 5px-high row. --Values in icon pattern can only be [blank], d, [BSicon color] or #[hex triplet]. height = mw.text.trim(height) if height ~= '' then if tonumber(height) then height = height..'px' end height = 'height:'..height..';min-height:'..height end if string.match(code, '^[%+_]?o?c?d?b?s?w?$') then return string.format(i18n.html['cell-filler-empty-fmt'], (string.match(code, '^.+$') or '_'), height) elseif mw.ustring.sub(code,1,1) == '#' then return string.format(i18n.html['cell-filler-fmt'], height, code) else return string.format(i18n.html['cell-filler-fmt'], height, '#'..RGBbyCode(code)) end end local function row(pattern,noformatting,filler)--[[ Row handling. Each row looks like the following: row properties~~linfo4~~linfo3~~linfo2~~linfo1! !(icon pattern)~~rinfo1~~rinfo2~~rinfo3~~rinfo4~~row properties ]] local result = {['linfo4'] = '', ['linfo3+2'] = '', ['linfo1'] = '', rowstyle = '', ['cells'] = {}, ['rinfo1'] = '', ['rinfo2+3'] = '', ['rinfo4'] = '', ['rowProp'] = {}} local lcolspan, rcolspan, linfo4_fmt, rinfo4_fmt = '2', '2', '', '' local left, right, icons, overlapIcons, tmp = {}, {}, {}, {}, mw.text.split(pattern, '! !') if #tmp > 1 then--splitting the pattern by '! !' left = tmp[1] ; right = tmp[2] else left = '' ; right = tmp[1] or '' end tmp = mw.text.split(left, '~~')--analysing the left part if #tmp > 1 then--if there are several ~~ result['linfo1'] = mw.getCurrentFrame():preprocess(mw.text.trim(tmp[#tmp])) result['linfo3+2'] = mw.text.trim(tmp[#tmp - 1]) if #tmp > 2 then tmp[#tmp - 2] = mw.text.trim(tmp[#tmp - 2]) if tmp[#tmp - 2] ~= '' then result['linfo3+2'] = string.format(i18n.html['row-linfo3-fmt'], tmp[#tmp - 2]) .. result['linfo3+2'] end if #tmp > 3 then tmp[#tmp - 3] = mw.text.trim(tmp[#tmp - 3]) if tmp[#tmp - 3] ~= '' then result['linfo4'] = mw.getCurrentFrame():preprocess(tmp[#tmp - 3]) lcolspan = '1' linfo4_fmt = string.format(i18n.html['row-linfo4-fmt'], '', result['linfo4']) end if #tmp > 4 then result.rowProp = properties(mw.text.trim(tmp[#tmp - 4])) end end end else--assume only linfo2 was provided. result['linfo3+2'] = mw.text.trim(tmp[1]) end result['linfo3+2'] = mw.getCurrentFrame():preprocess(result['linfo3+2'])--expand possible templates in info. tmp = mw.text.split(right, '~~')--analysing the right part if #tmp > 2 then result['rinfo1'] = mw.getCurrentFrame():preprocess(mw.text.trim(tmp[2])) result['rinfo2+3'] = mw.text.trim(tmp[3]) if #tmp > 3 then tmp[4] = mw.text.trim(tmp[4]) if tmp[4] ~= '' then result['rinfo2+3'] = result['rinfo2+3'] .. string.format(i18n.html['row-rinfo3-fmt'], tmp[4]) end if #tmp > 4 then tmp[5] = mw.text.trim(tmp[5]) if tmp[5] ~= '' then result['rinfo4'] = mw.getCurrentFrame():preprocess(tmp[5]) rcolspan = '1' rinfo4_fmt = string.format(i18n.html['row-rinfo4-fmt'], '', result['rinfo4']) end if #tmp > 5 then result.rowProp = properties(mw.text.trim(tmp[6])) end end end else--assume only rinfo2 was provided. result['rinfo2+3'] = mw.text.trim(tmp[2] or '') end result['rinfo2+3'] = mw.getCurrentFrame():preprocess(result['rinfo2+3']) -- The below parameter functions are passed through to the cells. if result.rowProp.fontsize == 'cmt' or result.rowProp.fontsize == 'comment' then result.rowProp._before, result.rowProp._after = '<div class="RMsi">', '</div>' end if result.rowProp.align then result.rowProp.align = alignment(result.rowProp.align, 'middle', 'center') or {'middle', 'center'} end icons = mw.text.split(tmp[1], '\\')--splitting the string of icons first by "\" if type(filler) == 'string' then result.style = ';font-size:0px' for i, v in ipairs(icons) do table.insert(result['cells'], fillercell(v, filler)) end--no !@ or !~ for filler row else result.style = '' for i, v in ipairs(icons) do tmp = mw.text.split(v, '!~') icons[i] = tmp[1] table.remove(tmp, 1) table.insert(overlapIcons, tmp) end for i, v in ipairs(icons) do table.insert(result['cells'], cell(v, overlapIcons[i], result.rowProp)) end end result['cells'] = table.concat(result['cells']) if result.rowProp.style then result.style = result.style..';'..result.rowProp.style end result.rowProp.bg = result.rowProp.bg or result.rowProp.background or result.rowProp.bgcolor ; result.rowProp.color = result.rowProp.color or result.rowProp.colour ; result.rowProp.bold = result.rowProp.bold or result.rowProp.b ; result.rowProp.italic = result.rowProp.italic or result.rowProp.i or result.rowProp.it if result.rowProp.bg then result.style = result.style..';background:'..result.rowProp.bg end if result.rowProp.color then result.style = result.style..';color:'..result.rowProp.color end if positive(result.rowProp.italic) then result.style = result.style..';font-style:italic' end if positive(result.rowProp.bold) then result.style = result.style..';font-weight:bold' end if result.rowProp.fontsize and result.rowProp._after == '' and result.rowProp.fontsize ~= 'info' then result.style = result.style..';font-size:'..result.rowProp.fontsize end if noformatting then return result else return string.format(i18n.html['row-general-fmt'], linfo4_fmt, lcolspan, '', result['linfo3+2'], q.linfo1_pad, '', result['linfo1'], result.style, result['cells'], q.rinfo1_pad, '', result['rinfo1'], rcolspan, '', result['rinfo2+3'], rinfo4_fmt) end end --↓ This table handles diagram rows beginning with a hyphen ("-"). q = {collapsibles = -1, text_width = {'', '', '', '', '', ''}, linfo1_pad = 'class="RMl1"', rinfo1_pad = 'class="RMr1"', bg = 'var(--background-color-neutral-subtle, #f8f9fa)'} q.isKeyword = function(pattern, i, rows, justTest) if mw.ustring.sub(pattern, 1, 1) ~= '-' then if justTest then return false else return nil end end--not a valid keyword local tmp = mw.text.split(string.sub(pattern, 2), '%-') if type(q[tmp[1]])=="function" and tmp[1] ~= 'isKeyword' then if justTest then return tmp[1] else return q[tmp[1]](tmp, i, rows) end--valid keyword else if justTest then return false else return nil end end end q['startCollapsible'] = function(params, i, rows) table.remove(rows, i) local tmp = q.isKeyword(rows[i], i, rows, true) if tmp then if tmp == 'endCollapsible' then return formaterror('collapsible-block-empty') else return formaterror('collapsible-block-no-first-row') .. q.isKeyword(rows[i], i, rows) --no valid keywords that can follow "startCollapsible" end end if q.collapsibles == -1 then q.collapsibles = 1 else q.collapsibles = q.collapsibles + 1 end--q.collapsibles == -1 means there are no collapsibles at all; 0 - all closed; >0 - some not closed local collapsed, replace, props = params[2], params[3] or '', properties(table.concat(params, '-', 4))--params[1] is the keyword name so all indices are shifted by one. if collapsed == nil or collapsed == '' then collapsed = 'collapsed' end if props.bg == nil or props.bg == '' then props.bg = '' ; props['bg-replace'] = q.bg else props['bg-replace'] = props.bg end local mode, float, result if q.rinfo1_pad == '' then mode = 'collapsible ' ; float = 'float:right;' else mode = 'mw-collapsible mw-' ; float = '' end result = string.format(i18n.html["row-collapsible-begin-fmt"], props.bg, mode, collapsed, float) tmp = row(rows[i], true, nil) local linfo4_3_2_fmt, rinfo2_3_4_fmt = '', '' if q.rinfo1_pad == '' then if tmp['linfo4'] ~= '' or tmp['linfo3+2'] ~= '' then linfo4_3_2_fmt = string.format(i18n.html['row-collapsible-left-linfo4+3+2-fmt'], tmp['linfo4'], tmp['linfo3+2']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-collapsible-left-button-fmt'], i18n.html['row-collapsible-left-button-width'], q.text_width[1]), '1', q.text_width[2], linfo4_3_2_fmt, q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], '', '', '', '1', '', '', string.format(i18n.html['row-rinfo4-fmt'], '', '')) else if tmp['rinfo4'] ~= '' or tmp['rinfo2+3'] ~= '' then rinfo2_3_4_fmt = string.format(i18n.html['row-collapsible-right-rinfo2+3+4-fmt'], tmp['rinfo2+3'], tmp['rinfo4']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-linfo4-fmt'], q.text_width[1], tmp['linfo4']), '1', q.text_width[2], tmp['linfo3+2'], q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], q.rinfo1_pad, q.text_width[4], tmp['rinfo1'], '1', q.text_width[5], rinfo2_3_4_fmt, string.format(i18n.html['row-collapsible-right-button-fmt'], i18n.html['row-collapsible-right-button-width'], q.text_width[6])) end if replace ~= '' then if q.isKeyword(rows[i + 1], i, rows, true) then return result .. formaterror('collapsible-block-no-replacement') end--a plain row needed for replacement table.remove(rows, i) tmp = row(rows[i], true, nil) local padding, right = i18n.html['row-collapsible-right-button-width'] .. ' 0 0', '' if q.rinfo1_pad == '' then padding = '0 0 ' .. i18n.html['row-collapsible-left-button-width'] ; right = 'right:0px;' end result = result .. string.format(i18n.html['row-collapsible-replace-begin-fmt'], padding, right, props['bg-replace']) linfo4_3_2_fmt = '' ; rinfo2_3_4_fmt = '' if q.rinfo1_pad == '' then if tmp['linfo4'] ~= '' or tmp['linfo3+2'] ~= '' then linfo4_3_2_fmt = string.format(i18n.html['row-collapsible-left-linfo4+3+2-fmt'], tmp['linfo4'], tmp['linfo3+2']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-linfo4-fmt'], '', ''), '1', q.text_width[2], linfo4_3_2_fmt, q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], '', '', '', '1', '', '', string.format(i18n.html['row-rinfo4-fmt'], '', '')) else if tmp['rinfo4'] ~= '' or tmp['rinfo2+3'] ~= '' then rinfo2_3_4_fmt = string.format(i18n.html['row-collapsible-right-rinfo2+3+4-fmt'], tmp['rinfo2+3'], tmp['rinfo4']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-linfo4-fmt'], q.text_width[1], tmp['linfo4']), '1', q.text_width[2], tmp['linfo3+2'], q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], q.rinfo1_pad, q.text_width[4], tmp['rinfo1'], '1', q.text_width[5], rinfo2_3_4_fmt, string.format(i18n.html['row-rinfo4-fmt'], '', '')) end result = result .. i18n.html['row-collapsible-replace-end-fmt'] end return result end q['endCollapsible'] = function(params, i, rows) if q.collapsibles > 0 then q.collapsibles = q.collapsibles - 1 return i18n.html['row-collapsible-end-fmt'] else return formaterror('collapsible-block-not-open') end end q['colspan'] = function(params, i, rows) if params[2] == 'end' then return '' end local tmp, j, nrows, props = {}, 0, tonumber(params[2]), properties(table.concat(params, '-', 3)) if nrows ~= 0 then table.remove(rows, i) end if nrows == nil then nrows = #rows - i + 1 end while j < nrows and i <= #rows do j = j + 1 if rows[i] == '-colspan-end' then j = nrows else table.insert(tmp, rows[i]) end if nrows ~= j or i == #rows then table.remove(rows, i) end end if j < nrows then j = formaterror('colspan-less-rows-than-set',j) else j = '' end return string.format(i18n.html['colspan-fmt'], j, props.bg or '', props.align or '', props['style'] or '', mw.getCurrentFrame():preprocess(table.concat(tmp, '\n'))) end q['filler'] = function(params, i, rows) local tmp, height = table.concat(params, '-', 3), (params[2] or '') if #params < 3 or tmp == '' then return formaterror('parameter-missing') end--TODO: specify the name of the parameter if params[2] ~= '' then height = params[2] end return row(tmp, nil, height) end function p.RGBbyCode(frame) return RGBbyCode(mw.text.trim(frame.args[1] or '')) end local function localroute(pattern,ptw,pbg,process) local tmp = {} if mw.text.trim(pbg) ~= '' then q.bg = pbg end tmp = mw.text.split(mw.text.trim(ptw), '%s*,%s*') if #tmp == 6 then for i = 1, 6 do if tmp[i] ~= '' then if tonumber(string.sub(tmp[i],-1)) then q.text_width[i] = 'width:' .. tmp[i] .. 'px;min-width:' .. tmp[i] .. 'px;' else q.text_width[i] = 'width:' .. tmp[i] .. ';min-width:' .. tmp[i] .. ';' end end end if tmp[4] == '' and tmp[5] == '' and tmp[6] == '' then q.rinfo1_pad = ''--padding for rinfo1 column = 0, not 3px elseif tmp[1] == '' and tmp[2] == '' and tmp[3] == '' then q.linfo1_pad = '' end--padding for linfo1 column = 0, not 3px elseif #tmp == 3 then for i = 1, 3 do if tmp[i] ~= '' then if tonumber(string.sub(tmp[i],-1)) then q.text_width[i + 3] = 'width:' .. tmp[i] .. 'px;min-width:' .. tmp[i] .. 'px;' else q.text_width[i + 3] = 'width:' .. tmp[i] .. ';min-width:' .. tmp[i] .. ';' end end end q.linfo1_pad = '' elseif #tmp == 1 and tmp[1] ~= '' then if tonumber(string.sub(tmp[1],-1)) then q.text_width[5] = 'width:' .. tmp[1] .. 'px;min-width:' .. tmp[1] .. 'px;' else q.text_width[5] = 'width:' .. tmp[1] .. ';min-width:' .. tmp[1] .. ';' end q.linfo1_pad = '' end for i = 1, 6 do tmp = tonumber(mw.ustring.match(q.text_width[i], ':([0-9]+%.?[0-9]*)px;')) if tmp then tmp = tmp*3/40 q.text_width[i] = 'width:' .. tmp .. 'em;min-width:' .. tmp .. 'em;' end end tmp = {} local index = 0 local rows = {} if not process or process == '' or negative(process) then pattern = mw.ustring.gsub(pattern, '\n(#[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])', '%1') end for item in pattern:gmatch('([^\n]*)\n?') do item = mw.text.trim(item) if item ~= '' then index = index + 1 rows[index] = item end end if index == 0 then return formaterror('parameter-missing') end for i, v in ipairs(rows) do local keyword = q.isKeyword(v, i, rows) if type(keyword) ~= "string" then table.insert(tmp, row(v, nil, nil)) else table.insert(tmp, keyword) end end if q.collapsibles > 0 then table.insert(tmp, formaterror('collapsible-block-not-closed') .. q['endCollapsible']()) end if q.collapsibles ~= -1 then if q.rinfo1_pad == '' then q.text_width[1] = q.text_width[1] .. 'min-width:' .. i18n.html['row-collapsible-left-button-width'] .. ';' else q.text_width[6] = q.text_width[6] .. 'min-width:' .. i18n.html['row-collapsible-right-button-width'] .. ';' end end -- ↓ empty row to set column widths; ↑ if q.collapsibles ≠ -1 and there are collapsible sections, leftmost or rightmost column should be wide enough to accomodate the button table.insert(tmp, string.format(i18n.html['empty-row-fmt'], q.text_width[1], q.text_width[2], q.linfo1_pad, q.text_width[3], q.rinfo1_pad, q.text_width[4], q.text_width[5], q.text_width[6])) return mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(table.concat(tmp), 'style=";* *', 'style="'), '\n| *style="" *|', '\n|'), ' ?style=""', ''), ' ?colspan="1"', ''), '<div class="RMsi"></div>', ''), 'class="RM%+', 'class="RM_'), '(class="[^"]* RM)%+', '%1_') end local function getArgNums(prefix, args) -- Copied from Module:Infobox on enwiki. -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix were 'data', and -- 'data1', 'data2', and 'data5' existed, this would return {1, 2, 5}. local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end local greatercontrast = require('घटक:Color contrast')._greatercontrast local rgb_black = '#252525' -- class .mw-body in Mediawiki:Common.css p.infobox = makeInvokeFunction('_infobox') p.infoboxTemplate = makeTemplateFunction('_infobox') function p._infobox(args) -- Creates a pretty box. args.map1, args.tw, args['map1-title'], args['map1-collapsible'], args['map1-collapse'] = args.map1 or args.map, args.tw or args['text-width'] or args['text width'], args['map1-title'] or args['map-title'], args['map1-collapsible'] or args['map-collapsible'], args['map1-collapse'] or args['map1-collapsed'] or args['map-collapse'] or args['map-collapsed'] local function map_prefix(x) return 'map'..x end local mapnums, prefix = {} if args[1] and args[1] ~= '' then prefix = tonumber for k, v in pairs(args) do if type(k) == 'number' then table.insert(mapnums, k) end end else prefix = map_prefix mapnums = getArgNums('map', args) table.sort(mapnums) end local classes = {} args['title bg color'] = args['title bg color'] or args['title bg'] or args['title-bg'] or '#27404E' args['title color'] = args['title color'] or args['title-color'] or greatercontrast{args['title bg color'], '#FFF', rgb_black} args.legend = args.legend or '' local navbar = require('घटक:Navbar').navbar local navtable = {} if args.navbar then navtable = {args.navbar, mini = i18n.text.navbar_mini, text = i18n.text.navbar_text} args.navbar = navbar(navtable) else args.navbar = '' end local result = '' if args.inline then result = result..'&#32;\n' end result = result..'{|' args.collapse = args.collapse or args.collapsed if args.inline or negative(args.collapsible) then args.collapsible = '0' else table.insert(classes, 'collapsible') if args.collapse then table.insert(classes, 'collapsed') end end args.float = args.float or 'right' if args.float == 'right' then args.margin = 'margin-left:1em;' elseif args.float == 'left' then args.margin = 'margin-right:1em;' else args.margin = '' end args.fontsize2 = 10000/88 if args.inline then table.insert(classes, 'RMinline') args.fontsize = 100 else table.insert(classes, 'RMbox') args.fontsize = 88 -- as above: CSS rule for .infobox in % end args.bg = args.bg or 'var(--background-color-neutral-subtle, f8f9fa)' args.style = args.style or '' result = result .. 'class="' .. table.concat(classes, ' ') .. '" cellspacing="0" cellpadding="0" style="float:' .. args.float .. ';clear:' .. args.float .. ';margin-top:0;margin-bottom:1em;' .. args.margin .. 'empty-cells:show;border-collapse:collapse;font-size:' .. args.fontsize .. '%;background:' .. args.bg .. ';color:inherit;' .. args.style .. '"' args.title = args.title or '' if args.inline or args.title == 'no' or args.title == '0' then else result = result .. '\n! style="color:' .. args['title color'] .. ';background:' .. args['title bg color'] .. ';text-align:center;padding:5px"|' if args['navbar pos'] then result = result .. '<div>' else if args.navbar ~= '' then navtable.mini = true navtable.brackets = true navtable.style = 'float:left;margin-right:5px;white-space:nowrap' navtable.fontstyle = 'font-size:'..args.fontsize2..'%;color:' .. args['title color'] args.navbar = navbar(navtable) .. '<div style="margin-left:55px">' else args.navbar = '<div>' end result = result .. args.navbar end result = result .. '<div style="white-space:nowrap;' if args.collapsible == '0' and (args['navbar pos'] or args.navbar == '<div>') then else result = result .. 'margin-right:55px;' if args['navbar pos'] or args.navbar == '<div>' then result = result .. 'margin-left:55px;' end end result = result .. 'font-size:'..args.fontsize2..'%">' .. args.title .. '</div></div>' end args.top = args.top or args['on top'] if args.top then result = result .. '\n|-\n|style="padding:0px 5px;text-align:center;'..(args.topstyle or '')..'"|' .. args.top end result = result .. '\n|-\n|style="line-height:normal;padding:4px 5px"|' if args.navbar ~= '' and args['navbar pos'] == '1' then if not positive(args['navbar long']) and not negative(args['navbar mini']) then navtable.mini = true; args.navbar = navbar(navtable) end result = result .. '<div style="float:left;padding-right:5px">' .. args.navbar .. '</div>' end args.legend2 = mw.ustring.lower(args.legend) if args.legend2 ~= 'no' and args.legend2 ~= '0' then args.legend = i18n.text.legend[args.legend2] or ((args.legend2 ~= '') and ('[['..args.legend) or i18n.text.legend.default) args.legend = args.legend .. '|' .. (args['legend alt'] or i18n.text.legend_text) .. ']]' result = result .. '<div class="selfreference noprint" style="text-align:right;font-size:97%">' .. args.legend .. '</div>' end if args.inline then args.padding2 = '0px' else args.padding2 = '0px 6px' end for k, v in ipairs(mapnums) do if not mapnums[k + 1] then if not args.inline then args.padding2 = '0px 6px 6px' end end args.ending = '' if args['map'..v..'-title'] then args.header_margin = '0' if k == 1 then args.border_header = 'border-bottom: 5px solid '..args.bg..';' else args.border_header = 'border-top: 5px solid '..args.bg..';border-bottom: 5px solid '..args.bg..';' end if positive(args['map'..v..'-collapsible']) then args.header_margin = '0 55px' args.ending = '\n|}' if positive(args['map'..v..'-collapse']) or positive(args['map'..v..'-collapsed']) then args.map_collapsed = ' mw-collapsed autocollapse' else args.map_collapsed = '' end result = result..'\n|-\n|\n{|class="mw-collapsible'..args.map_collapsed..'" cellpadding="0" cellspacing="0" style="display:table;min-width:100%;margin:0 auto"' end if args.inline then args.header_style2 = ' style="line-height:normal"' else args.header_style2 = '' end result = result..'\n|-'..args.header_style2..'\n!style="'..args.border_header..'padding:3px 5px;text-align:center;vertical-align:middle;color:'..rgb_black..';background:#EEEEEE" | <div style="margin:'..args.header_margin..';font-size:'..10000/args.fontsize..'%">'..args['map'..v..'-title']..'</div>' args.border_top = '' else if k == 1 then args.border_top = '' else args.border_top = 'border-top: 5px solid '..args.bg..';' end end result = result .. '\n|-\n|style="'..args.border_top..'padding:' .. args.padding2 .. '"|\n{|class="nogrid routemap" style="font-size:'..(args.fontsize2 * .95)..'%"\n'..localroute(args[prefix(v)], (args['tw'..v] or args['text-width'..v] or args['text width'..v] or args.tw or ''), args.bg, args.process)..'\n|}'..args.ending end args.bottom = args.bottom or args.footnote if args.bottom then if args.inline then args.padding2 = '6px' else args.padding2 = '0px' end result = result .. '\n|-\n|style="line-height:normal;text-align:right;padding:' .. args.padding2 .. ' 5px 5px;'..(args.bottomstyle or args.footnotestyle or '')..'"|' .. args.bottom if string.find(args.bottom, '&action=edit') then result = result .. (i18n['error-categories']['separate-navbar'] or i18n['error-categories'].default) end end if args.navbar ~= '' and args['navbar pos'] == '2' then if negative(args['navbar long']) or positive(args['navbar mini']) then navtable.mini = true; args.navbar = navbar(navtable) end if args.inline and not args.bottom then args.padding2 = '6px' else args.padding2 = '0px' end result = result .. '\n|-\n|style="line-height:normal;padding:' .. args.padding2 .. ' 5px 3px;text-align:center"|' .. args.navbar end return result .. '\n|}' end local function base(t1,t2,link,stn,italic,it,it2,bold,align,style,bg1,bg2,line,fs1,fs2,lh,v1,swap,inp,bs) --Creates an inline table with two rows of text. Can be used in any Routemap text cell. --Implemented in the BSsplit, BSto, BSsrws and BScvt templates. if not align then if bs == 'cvt' then align = 'right' else align = 'inherit' end end style = style or '' local result = '&#32;<table cellspacing="0" cellpadding="0" class="RMsplit" style="text-align:'..align if italic or it == 'all' then result = result..';font-style:italic' end if bold then result = result..';font-weight:bold' end local rowstart = '<tr><td style="text-align:inherit;padding:0;line-height:' result = result..';'..style..'">'..rowstart..lh if line then result = result..';border-bottom:1px solid gray' end local bgpad = ';padding-left:.5em;padding-right:.5em' local function bgtext(v) return ';color:'..greatercontrast{v, '#FFF', rgb_black} end if bg1 then result = result..bgpad..bgtext(bg1)..';background:'..bg1 elseif bg2 then result = result..bgpad end if fs1 then result = result..';font-size:'..fs1 end result = result..'">' if not t1 or string.find(t1, '^%s*$') then if not t2 then t2 = '' end if string.find(t2, '<br ?/?>') == nil then t1 = '&nbsp;' end end if not t2 or string.find(t2, '^%s*$') then if not t1 then t1 = '' end if string.find(t1, '<br ?/?>') == nil then t2 = '&nbsp;' end end if bs == 'srws' then if stn then link = t1..' '..t2..' '..stn else link = t1..' '..t2..' railway station' end elseif bs == 'cvt' then local split, floor, outp, v2, mult = mw.text.split, math.floor local function trim(x) return string.gsub(x, '%s', '') end local cvt = { -- conversion values ['mi'] = 1.609344, ['ch'] = 20.1168, ['mi;ch'] = 80, ['m'] = 1 / .9144, ['yd'] = .9144, ['ft'] = .3048, } local sf = { -- 10 ^ floor(log10(cvt[inp]) + .5); or 10 ^ floor(log10(cvt[inps[1]] * cvt[inp]) + .5) for dual-unit inputs. this corrects the accuracy of result so that it usually has same significant figures ['mi'] = 1, ['ch'] = 10, ['mi;ch'] = .01, ['m'] = 1, ['yd'] = 1, ['ft'] = .1, } if not inp then inp = 'mi' end inp = string.lower(trim(inp)) if inp == 'ch' or inp == 'yd' or inp == 'ft' then -- output unit outp = 'm' elseif inp == 'm' then outp = 'yd' else if inp ~= 'mi;ch' then inp = 'mi' end outp = 'km' end local pos = string.find(v1, '%.') if not pos then mult = 1 else mult = 10 ^ (string.len(v1) - pos) end local inps = string.find(inp, ';') if inps then inps = split(inp, ';') if swap then t1 = v1..'&nbsp;'..outp v1 = tonumber(v1) t2 = floor(v1 / cvt[inps[1]])..'&nbsp;'..inps[1]..'&nbsp;'..floor(v1 % cvt[inps[1]] / cvt[inps[1]] * cvt[inp] * mult * sf[inp] + .5) / mult / sf[inp]..'&nbsp;'..inps[2] else v1 = split(trim(v1), ';') t1 = v1[1]..'&nbsp;'..inps[1]..'&nbsp;'..v1[2]..'&nbsp;'..inps[2] t2 = floor((tonumber(v1[1]) * cvt[inps[1]] + tonumber(v1[2]) * cvt[inps[1]] / cvt[inp]) * mult / sf[inp] + .5) / mult * sf[inp]..'&nbsp;'..outp end else if swap then v2 = floor(tonumber(v1) / cvt[inp] * mult * sf[inp] + .5) / mult / sf[inp] inp, outp = outp, inp else v2 = floor(tonumber(v1) * cvt[inp] * mult / sf[inp] + .5) / mult * sf[inp] end t1 = v1..'&nbsp;'..inp t2 = v2..'&nbsp;'..outp end end if t1 then if link then result = result..'[['..link..'|'..t1..']]' else result = result..t1 end end local rowend = '</td></tr>' result = result..rowend..rowstart..lh if bg2 then result = result..bgpad..bgtext(bg2)..';background:'..bg2 elseif bg1 then result = result..bgpad end if fs2 then result = result..';font-size:'..fs2 end if (it ~= 'off' and bs == 'to') or it2 == 'italic' then result = result..';font-style:italic' elseif it == 'off' then result = result..';font-style:normal' end result = result..'">' if t2 then if link then result = result..'[['..link..'|'..t2..']]' else result = result..t2 end end result = result..rowend..'</table>&#32;' if bs == 'to' or bs == 'srws' then if t1 == '&nbsp;' or t2 == '&nbsp;' then result = result..(i18n['error-categories']['missing-text-values'] or i18n['error-categories'].default) end end if string.find(t1, '<br ?/?>') ~= nil or string.find(t2, '<br ?/?>') ~= nil then result = result..(i18n['error-categories']['br-tags'] or i18n['error-categories'].default) end if bs == 'split' then if link and t1 and t2 then if string.find(link, '^'..t1..' '..t2..' ') then result = result..(i18n['error-categories']['srws'] or i18n['error-categories'].default) end end end return result end p.BSto = makeInvokeFunction('_BSto') function p._BSto(args) args[3] = args[3] or args.L args[4] = args[4] or args.it or args.i args[5] = args[5] or args.b return base(args[1],args[2],args[3],nil,nil,args[4],nil,args[5],args.align,args.style,args.bg1,args.bg2,args.line,'105%','inherit','.9',nil,nil,nil,'to') end p.BSsplit = makeInvokeFunction('_BSsplit') function p._BSsplit(args) args[3] = args[3] or args.L args[4] = args[4] or args.it or args.i args[5] = args[5] or args.b return base(args[1],args[2],args[3],nil,args[4],nil,nil,args[5],args.align,args.style,args.bg1,args.bg2,args.line,'inherit','inherit','.9',nil,nil,nil,'split') end p.BSsrws = makeInvokeFunction('_BSsrws') function p._BSsrws(args) args[3] = args[3] or args.S args[4] = args[4] or args.it or args.i args[5] = args[5] or args.b return base(args[1],args[2],nil,args[3],args[4],nil,nil,args[5],args.align,args.style,args.bg1,args.bg2,args.line,'inherit','inherit','.9',nil,nil,nil,'srws') end p.BScvt = makeInvokeFunction('_BScvt') function p._BScvt(args) return base(nil,nil,nil,nil,nil,nil,args.alt,nil,args.align,args.style,args.bg1,args.bg2,args.line,'inherit','inherit','.9',args[1],args[2],args['in'],'cvt') end p.rmri = makeInvokeFunction('_rmri') function p._rmri(args)--[[ Displays a blue arrow pointing in one of eight directions. Implemented in the RoutemapRouteIcon template. ]] local directions, result = { ['Up'] = {'u', 'up'}, ['Down'] = {'d', 'dn', 'down'}, ['Left'] = {'l', 'left'}, ['Right'] = {'r', 'right'}, ['UpperRight'] = {'ur', 'ne', 'c1', 'upperright'}, ['LowerRight'] = {'lr', 'se', 'c2', 'lowerright'}, ['LowerLeft'] = {'ll', 'sw', 'c3', 'lowerleft'}, ['UpperLeft'] = {'ul', 'nw', 'c4', 'upperleft'}, } local d, link, size = args[1], args[2], args[3] if not d then if args[4] ~= ' ' then d, link, size = args[2], args[3], 's' end end for k, v in pairs(directions) do for _, name in ipairs(v) do if d:lower() == name then if size == 's' then size = '7' elseif not size then size = '10' end if not link then link = '' end result = '[[सञ्चिका:Arrow Blue '..k..' 001.svg|'..size..'px|alt='..k..' arrow|link='..link..']]' end end end if not result then return '<span style="color:#f00">Invalid [[साँचा:RoutemapRoute]] arrow value "<span style="font-style:italic">'..d..'</span>".</span>'..(i18n['error-categories']['rmr-error'] or i18n['error-categories'].default) else return result end end p.rmr = makeInvokeFunction('_rmr') function p._rmr(args)--[[ Displays text between two blue arrows (or to the left/right side of one). Text can be split with an en dash if entered in both first and second numbered parameters. Implemented in the RoutemapRoute template. ]] args.l = args.l or args.Licon or args.licon or args.L args.r = args.r or args.Ricon or args.ricon or args.R if args.l then args.l = p._rmri{args.l,args.Llink or args.llink,(args.Lsize or args.lsize or args.size),' '}..'&nbsp;' else args.l = '' end if args.r then args.r = '&nbsp;'..p._rmri{args.r,args.Rlink or args.rlink,(args.Rsize or args.rsize or args.size),' '} else args.r = '' end if args[1] then if args[2] then args[1] = args[1]..'&nbsp;–&nbsp;'..args[2] end else args[1] = args[2] or '' end if args[1] == '' or args.enclosed == 'no' then args.b1, args.b2 = '', '' else args.b1, args.b2 = '(', ')' end return args.b1..args.l..args[1]..args.r..args.b2 end function p.BSrow(frame) local args = getArgs(frame, { parentOnly = true, removeBlanks = false, }) return p._BSrow(args) end function p._BSrow(args)--[[ Creates Routemap syntax for a diagram row based on parameters. Implemented in the RDTr template. ]] args.n = tonumber(args.n or '') if not args.n then local icontotal = getArgNums('', args) table.sort(icontotal) args.n = icontotal[#icontotal] or 1 end local count, icons, overlaps, overlapCalc = tonumber(args['$count']) or 1, {}, {}, math.log10(args.n) local text = (args.text and '*') or '' if overlapCalc == math.floor(overlapCalc) then overlapCalc = 10^(overlapCalc) else overlapCalc = 10^(math.floor(overlapCalc) + 1) end while count <= args.n do local cellparams, overlapn = {}, (string.match(count/overlapCalc, '%.(0+)') or '')..count table.insert(icons, (text..(args[count] or ''))) if args['O'..overlapn] then local iconparams, overlapparams, overlapt = {}, {}, {} for k, v in pairs({bg = (args['O'..overlapn..'0-bg'] or args['O'..overlapn..'0-background'] or args['O'..overlapn..'0-bgcolor']), color = (args['O'..overlapn..'0-color'] or args['O'..overlapn..'0-colour']), b = (args['O'..overlapn..'0-b'] or args['O'..overlapn..'0-bold']), i = (args['O'..overlapn..'0-i'] or args['O'..overlapn..'0-it'] or args['O'..overlapn..'0-italic']), align = args['O'..overlapn..'0-align'], fontsize = args['O'..overlapn..'0-fontsize'], abbr = args['O'..overlapn..'0-abbr'], style = args['O'..overlapn..'0-style']}) do if v then table.insert(iconparams, k..'='..v) end end if iconparams[1] then icons[count] = icons[count]..'__'..table.concat(iconparams, ',') end for k, v in pairs({bg = (args['O'..overlapn..'-bg'] or args['O'..overlapn..'-background'] or args['O'..overlapn..'-bgcolor']), color = (args['O'..overlapn..'-color'] or args['O'..overlapn..'-colour']), b = (args['O'..overlapn..'-b'] or args['O'..overlapn..'-bold']), i = (args['O'..overlapn..'-i'] or args['O'..overlapn..'-it'] or args['O'..overlapn..'-italic']), align = args['O'..overlapn..'-align'], fontsize = args['O'..overlapn..'-fontsize'], abbr = args['O'..overlapn..'-abbr'], style = args['O'..overlapn..'-style']}) do if v then table.insert(overlapparams, k..'='..v) end end if overlapparams[1] then args['O'..overlapn] = args['O'..overlapn]..'__'..table.concat(overlapparams, ',') end overlaps = getArgNums('O'..overlapn, args) or {} table.sort(overlaps) if overlaps[1] then for i, v in ipairs(overlaps) do overlapparams = {} for k, v2 in pairs({bg = (args['O'..overlapn..v..'-bg'] or args['O'..overlapn..v..'-background'] or args['O'..overlapn..v..'-bgcolor']), color = (args['O'..overlapn..v..'-color'] or args['O'..overlapn..v..'-colour']), b = (args['O'..overlapn..v..'-b'] or args['O'..overlapn..v..'-bold']), i = (args['O'..overlapn..v..'-i'] or args['O'..overlapn..v..'-it'] or args['O'..overlapn..v..'-italic']), align = args['O'..overlapn..v..'-align'], fontsize = args['O'..overlapn..v..'-fontsize'], abbr = args['O'..overlapn..v..'-abbr'], style = args['O'..overlapn..v..'-style']}) do if v2 then table.insert(overlapparams, k..'='..v2) end end if overlapparams[1] then args['O'..overlapn..v] = args['O'..overlapn..v]..'__'..table.concat(overlapparams, ',') end table.insert(overlapt, text..args['O'..overlapn..v]) end overlaps = '!~'..text..args['O'..overlapn]..'!~'..table.concat(overlapt, '!~') else overlaps = '!~'..text..args['O'..overlapn] end icons[count] = icons[count]..overlaps else if args[count..'-abbr'] then table.insert(cellparams, 'abbr='..args[count..'-abbr']) end end if args[count..'-link'] then icons[count] = icons[count]..'!@'..args[count..'-link'] end for k, v in pairs({bg = (args[count..'-bg'] or args[count..'-background'] or args[count..'-bgcolor']), color = (args[count..'-color'] or args[count..'-colour']), b = (args[count..'-b'] or args[count..'-bold']), i = (args[count..'-i'] or args[count..'-it'] or args[count..'-italic']), align = args[count..'-align'], fontsize = args[count..'-fontsize'], style = args[count..'-style']}) do if v then table.insert(cellparams, k..'='..v) end end if cellparams[1] then icons[count] = icons[count]..'!_'..table.concat(cellparams, ',') end count = count + 1 end local row, rowparams, left, right = table.concat(icons, '\\'), {} for k, v in pairs({bg = (args.bg or args.background or args.bgcolor), color = (args.color or args.colour), b = (args.b or args.bold), i = (args.i or args.it or args.italic), align = args.align, fontsize = args.fontsize, style = args.style}) do if v then table.insert(rowparams, k..'='..v) end end if rowparams[1] then args.R5 = table.concat(rowparams, ',') end for i, v in ipairs({'R1', 'R2', 'R3', 'R4', 'R5', 'L1', 'L2', 'L3', 'L4'}) do if not args[v] or string.find(args[v], '^%s*$') then args[v] = nil end end if args.R5 then right = {(args.R1 or ' '), (args.R2 or ' '), (args.R3 or ' '), (args.R4 or ' '), args.R5} elseif args.R4 then right = {(args.R1 or ' '), (args.R2 or ' '), (args.R3 or ' '), args.R4} elseif args.R3 then right = {(args.R1 or ' '), (args.R2 or ' '), args.R3} elseif args.R1 then right = {args.R1, (args.R2 or '')} elseif args.R2 then right = {args.R2} end if right then row = row..'~~'..table.concat(right, '~~') end if args.L4 then left = {args.L4, (args.L3 or ' '), (args.L2 or ' '), (args.L1 or '')} elseif args.L3 then left = {args.L3, (args.L2 or ' '), (args.L1 or '')} elseif args.L1 then left = {(args.L2 or ''), args.L1} elseif args.L2 then left = {args.L2} end if left then row = table.concat(left, '~~')..'! !'..row end return row end function p.BSrow_lite(frame) local args = getArgs(frame, { removeBlanks = false, }) return p._BSrow_lite(args) end function p._BSrow_lite(args)--[[ Creates Routemap syntax for a diagram row based on parameters. Intended to be used to substitute legacy templates. Note that for compatibility the link and sidebar parameter names are different. ]] args.n = tonumber(args.n or '') if not args.n then local icontotal = getArgNums('', args) table.sort(icontotal) args.n = icontotal[#icontotal] or 1 end local count, icons, overlaps, overlapCalc = tonumber(args['$count']) or 1, {}, {}, math.log10(args.n) local text = (args.text and '*') or '' if overlapCalc == math.floor(overlapCalc) then overlapCalc = 10^(overlapCalc) else overlapCalc = 10^(math.floor(overlapCalc) + 1) end while count <= args.n do local cellparams, overlapn = {}, (string.match(count/overlapCalc, '%.(0+)') or '')..count table.insert(icons, (text..(args[count] or ''))) if args['O'..overlapn] then local overlapt = {} overlaps = getArgNums('O'..overlapn, args) or {} table.sort(overlaps) if overlaps[1] then for i, v in ipairs(overlaps) do table.insert(overlapt, text..args['O'..overlapn..v]) end overlaps = '!~'..text..args['O'..overlapn]..'!~'..table.concat(overlapt, '!~') else overlaps = '!~'..text..args['O'..overlapn] end icons[count] = icons[count]..overlaps end if args['L'..count] then icons[count] = icons[count]..'!@'..args['L'..count] end count = count + 1 end local row, rowparams, left, right = table.concat(icons, '\\'), {} for k, v in pairs({bg = (args.bg or args.background or args.bgcolor), style = args.style}) do if v then table.insert(rowparams, k..'='..v) end end if rowparams[1] then args.r5 = table.concat(rowparams, ',') end for i, v in ipairs({'r1', 'r2', 'r3', 'r4', 'r5', 'l1', 'l2', 'l3', 'l4'}) do if not args[v] or string.find(args[v], '^%s*$') then args[v] = nil end end if args.r5 then right = {(args.r1 or ' '), (args.r2 or ' '), (args.r3 or ' '), (args.r4 or ' '), args.r5} elseif args.r4 then right = {(args.r1 or ' '), (args.r2 or ' '), (args.r3 or ' '), args.r4} elseif args.r3 then right = {(args.r1 or ' '), (args.r2 or ' '), args.r3} elseif args.r1 then right = {args.r1, (args.r2 or '')} elseif args.r2 then right = {args.r2} end if right then row = row..'~~'..table.concat(right, '~~') end if args.l4 then left = {args.l4, (args.l3 or ' '), (args.l2 or ' '), (args.l1 or '')} elseif args.l3 then left = {args.l3, (args.l2 or ' '), (args.l1 or '')} elseif args.l1 then left = {(args.l2 or ''), args.l1} elseif args.l2 then left = {args.l2} end if left then row = table.concat(left, '~~')..'! !'..row end return row end local function pre_block(text) -- Pre tags returned by a module do not act like wikitext <pre>...</pre>. return '<pre>' .. mw.text.nowiki(text) .. (text:sub(-1) == '\n' and '' or '\n') .. '</pre>\n' end function p.convertbs(frame)--[[ Converts a legacy route diagram into Routemap format. Code to be used is displayed in preview mode or after saving the page, above the original code. {{#invoke:Routemap|convertbs|<nowiki> (Original diagram) </nowiki>}} ]] local org = mw.text.unstripNoWiki(frame.args[1] or 'Paste legacy RDT markup between nowiki tags') local res = org res = string.gsub(res, '{{[Bb][Ss]%-?map', '{{Routemap') -- "%-" is an escape for hyphen which is used as "between" in pattern. res = string.gsub(res, '{|%s?{{[Rr]ailway line header}}', '{{Routemap') res = string.gsub(res, '{{[Bb][Ss]%-header%d?|', '{{safesubst:BS-header/safesubst|') -- "%d?" means optional digit in case use of variant template like BS-header3. res = string.gsub(res, '{{[Bb][Ss]%-table%d?}}', '|map =') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)|', '{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-replace|', '!replace{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-startCollapsible|', '-startCollapsible-collapsed\n{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-sc|', '-startCollapsible-collapsed\n{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%text|', '{{safesubst:BS%1%2text/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-2|', '{{safesubst:BS%1%2-2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-2replace|', '!replace{{safesubst:BS%1%2-2|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-2sc|', '-startCollapsible-collapsed\n{{safesubst:BS%1%2-2|') res = string.gsub(res, '{{!}}}', '-endCollapsible-') res = string.gsub(res, '{{[Ee]nd}}', '-endCollapsible-') res = string.gsub(res, '|}\n?|}', '}}') -- Replace ending of Railway line header map setup. res = string.gsub(res, '{{[Bb][Ss]%-colspan}}\n{{safesubst', '{{safesubst') -- BS-colspan is unnecessary and would cause error in Routemap. res = string.gsub(res, '{{[Bb][Ss]%-colspan}}\n%-%-%-%-', '-colspan-2\n----') res = string.gsub(res, '&lt;', '<') res = string.gsub(res, '&gt;', '>') if string.find(res, '!replace') or string.find(res, '|%s*bg%s*=') then local restable = mw.text.split(res, '\n') for i, v in ipairs(restable) do if string.find(v, '!replace') then restable[i] = string.gsub(restable[i], '!replace', '') restable[i-2] = string.gsub(restable[i-2], 'collapsed', 'collapsed-replace') end if (string.find(v, '|%s*bg%s*=%s*#?[a-zA-Z0-9]+') or string.find(v, '|%s*bg%s*=%s*#?{{[^{}]+}}%s*|') or string.find(v, '|%s*bg%s*=%s*#?{{[^{}]+}}%s*}}')) and string.find(restable[i-1], '^-startCollapsible') then local bg = string.match(v, '|%s*bg%s*=%s*(#?[a-zA-Z0-9]+)') or string.find(v, '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*|') or string.find(v, '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*}}') restable[i] = string.gsub(restable[i], '|%s*bg%s*=%s*'..bg, '') restable[i-1] = string.gsub(restable[i-1], '%-?$', '--bg=')..bg if string.find(restable[i+1], '!replace') then restable[i+1] = string.gsub(restable[i+1], '!replace', '') restable[i-1] = string.gsub(restable[i-1], 'collapsed%-', 'collapsed-replace') if (string.find(restable[i+1], '|%s*bg%s*=%s*#?[a-zA-Z0-9]+') or string.find(restable[i+1], '|%s*bg%s*=%s*#?{{[^{}]+}}%s*|') or string.find(restable[i+1], '|%s*bg%s*=%s*#?{{[^{}]+}}%s*}}')) then local bg2 = string.match(restable[i+1], '|%s*bg%s*=%s*(#?[a-zA-Z0-9]+)') or string.find(restable[i+1], '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*|') or string.find(restable[i+1], '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*}}') if bg2 == bg then restable[i+1] = string.gsub(restable[i], '|%s*bg%s*=%s*'..bg2, '') end end end end end res = table.concat(restable, '\n') end return "\n'''Safe substitution''':\n" .. pre_block(res) .. "'''''Original''''':\n" .. pre_block(org) end return p tim4andtg6wtu7lm4c9kvp3ejnbsym9 साँचा:ज्ञानसन्दूक स्टेशन 10 18268 80421 80373 2026-09-21T18:28:40Z ऐक्टिवेटेड् 76 80421 wikitext text/x-wiki {{ज्ञानसन्दूक | templatestyles = Infobox station/styles.css | bodyclass = vcard ib-station | autoheaders = yes | headerstyle = {{#invoke:Adjacent stations|style|subheader|{{{style|}}}|{{{style2|}}}}} | above = {{#if:{{{custom_header|}}}|{{{custom_header|}}}|<div style="display: table; width: 100%; border-collapse: collapse"><div class="ib-station-name">{{Br separated entries | 1 = <div style="display:inline" class="fn org" {{#if:{{{name_lang|}}}|lang="{{{name_lang}}}"}}>{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}}</div> | 2 = {{#if:{{{native_name|}}}|<div class="nickname" style="display:inline" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}" {{#switch:{{lc:{{{native_name_lang}}}}}|zh|zh-hans|zh-hans-cn|zh-hant|zh-hant-tw|zh-hant-hk|zh-cn|zh-hk|zh-mo|zh-tw|zh-sg|ko|ko-kr|ko-kp|ko-cn|ja=style="font-weight: normal"}}}}>{{{native_name}}}</div>}} }}</div>{{#if:{{{symbol|}}}|{{#invoke:Rail-interchange multi|{{#if:{{{native_name|}}}|double}}row|div=y|{{{symbol_location|}}}\{{{symbol|}}}\<!-- -->{{#if:{{{symbol6|}}}{{{symbol_location6|}}}{{#if:{{{symbol5|}}}{{{symbol_location5|}}}||1}}|{{#if:{{{symbol4|}}}{{{symbol_location4|}}}{{#if:{{{symbol3|}}}{{{symbol_location3|}}}||1}}||+}}|+}}<!-- -->{{#if:{{{symbol_location2|}}}{{{symbol2|}}}|+{{{symbol_location2|}}}\{{{symbol2|}}}\}}<!-- -->{{#if:{{{symbol_location3|}}}{{{symbol3|}}}|+{{{symbol_location3|}}}\{{{symbol3|}}}\}}<!-- -->{{#if:{{{symbol_location4|}}}{{{symbol4|}}}|+{{{symbol_location4|}}}\{{{symbol4|}}}\}}<!-- -->{{#if:{{{symbol_location5|}}}{{{symbol5|}}}|+{{{symbol_location5|}}}\{{{symbol5|}}}\}}<!-- -->{{#if:{{{symbol_location6|}}}{{{symbol6|}}}|+{{{symbol_location6|}}}\{{{symbol6|}}}\}}}}}}</div>}} | abovestyle = {{#invoke:Adjacent stations|style|header|{{{style|}}}|{{{style2|}}}}} | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|upright={{if empty|{{{image_upright|}}}|1.2}}|alt={{{alt|}}}}} | caption = {{{caption|}}} | data1 = {{#if:{{{mlanguage|}}}|{{{mlanguage}}}{{#ifexpr:{{#invoke:string|find|{{{mlanguage}}}|class{{=}}"infobox"}}>0|[[श्रेणी:Pages using infobox station with a non-child infobox]]|}}}} | header2 = सामान्य जानकारी | label3 = अन्यनाम | data3 = {{{other_name|}}} | class3 = उपनाम | label4 = स्थान | data4 = {{Br separated entries|{{{address|}}}|{{{borough|}}}|{{{country|}}}}} | class4 = लेबल | label5 = निर्देशाङ्क | data5 = {{#if:{{{coordinates|}}}|{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:railwaystation|{{#if:{{{country|}}}{{if empty|{{#property:P17}}}}|region:{{ISO 3166 code|{{if empty|{{{country|}}}|{{#property:P17}}}}|{{#invoke:String2|split|{{#invoke:delink|delink|{{{borough|}}}}}|,|-1}}}}}}}}}} | label6 = {{if empty|{{{grid_name|}}}|ग्रिड&nbsp;स्थान}} | data6 = {{{grid_position|}}} | label7 = उन्नति | data7 = {{{elevation|}}} | label8 = प्रणाली | data8 = {{{system|}}} | label9 = स्वामित्व | data9 = {{{owner|}}} | label10 = सञ्चालक | data10 = {{{operator|}}} | label11 = प्रबन्धक | data11 = {{{manager|}}} | label12 = {{longitem|पारगमन प्राधिकरण}} | data12 = {{{transit_authority|}}} | label13 = लाइन{{pluralize from text|{{if empty|{{{lines|}}}|{{{line|}}}}}|plural=s}} | data13 = {{if empty|{{{lines|}}}|{{{line|}}}}} | label14 = दूरी | data14 = {{{distance|}}} | label15 = प्लेटफार्म | data15 = {{if empty|{{{platforms|}}}|{{{platform|}}}}} | label16 = ट्रैक | data16 = {{{tracks|}}} | label17 = {{longitem|ट्रेन सञ्चालक}} | data17 = {{{train_operators|}}} | label18 = {{longitem|ट्राम मार्ग}} | data18 = {{{tram_routes|}}} | label19 = {{longitem|ट्राम सञ्चालक}} | data19 = {{if empty|{{{tram_operators|}}}|{{{tram_operator|}}}}} | label20 = बस मार्ग | data20 = {{{bus_routes|}}} | label21 = बस स्टैण्ड | data21 = {{{bus_stands|}}} | label22 = बस सञ्चालक | data22 = {{{bus_operators|}}} | label23 = सम्पर्क | data23 = {{{connections|}}} | header24 = निर्माण | label25 = {{longitem|संरचना प्रकार}} | data25 = {{{structure|}}} | label26 = गहराई | data26 = {{{depth|}}} | label27 = {{longitem|प्लेटफार्म स्तर}} | data27 = {{{levels|}}} | label28 = पार्किङ्ग | data28 = {{{parking|}}} | label29 = {{longitem|साइकिल सुविधा}} | data29 = {{{cyclepark|}}} | label30 = सुलभ | data30 = {{{accessible|}}} | label31 = वास्तुकला | data31 = {{{architect|}}} | label32 = {{longitem|वास्तुकला शैली}} | data32 = {{{architectural_style|}}} | header33 = अन्य जानकारी | label34 = स्थिति | data34 = {{{status|}}} | label35 = स्टेशन सूचकाङ्क | data35 = {{{code|}}} | class35 = उपनाम | label36 = ठहरावके सङ्ख्या | data36 = {{{number|}}} | class36 = उपनाम | label37 = [[आइएटिए-सूचीबद्ध रेलवे स्टेशनके सूची|आइएटिए&nbsp;सूचकाङ्क]] | data37 = {{{iata|}}} | label38 = भाड़ा क्षेत्र | data38 = {{{zone|}}} | label39 = वर्गीकरण | data39 = {{{classification|}}} | label40 = जालस्थल | data40 = {{{website|}}} | header41 = इतिहास | label42 = आरम्भ | data42 = {{{opened|}}} | label43 = उद्घाटन | data43 = {{{opening|}}} | label44 = बन्द | data44 = {{{closed|}}} | label45 = पुनःनिर्मित | data45 = {{{rebuilt|}}} | label46 = विद्युतित | data46 = {{#if:{{{electrified_date|}}}|{{{electrified_date|}}}|{{#if:{{{electrified|}}}|{{yesno|{{{electrified|}}}|def={{{electrified|}}}|yes=[[श्रेणी:Pages calling infobox station with invalid electrified value|y]]|no=[[श्रेणी:Pages calling infobox station with invalid electrified value|n]]}}}}}} | label47 = पूर्वनाम | data47 = {{{former|}}} | class47 = उपनाम | label48 = {{longitem|मूल कम्पनी}} | data48 = {{{original|}}} | label49 = वर्गीकरणके पहिले | data49 = {{{pregroup|}}} | label50 = वर्गीकरणके बाद | data50 = {{{postgroup|}}} | label51 = राष्ट्रियकरणसे पहिले | data51 = {{{prenational|}}} | header52 = प्रमुख तिथि | label53 = {{{years}}} | data53 = {{#if:{{{years|}}}|{{{events|}}}}} | label54 = {{{years1}}} | data54 = {{#if:{{{years1|}}}|{{{events1|}}}}} | label55 = {{{years2}}} | data55 = {{#if:{{{years2|}}}|{{{events2|}}}}} | label56 = {{{years3}}} | data56 = {{#if:{{{years3|}}}|{{{events3|}}}}} | label57 = {{{years4}}} | data57 = {{#if:{{{years4|}}}|{{{events4|}}}}} | label58 = {{{years5}}} | data58 = {{#if:{{{years5|}}}|{{{events5|}}}}} | label59 = {{{years6}}} | data59 = {{#if:{{{years6|}}}|{{{events6|}}}}} | label60 = {{{years7}}} | data60 = {{#if:{{{years7|}}}|{{{events7|}}}}} | label61 = {{{years8}}} | data61 = {{#if:{{{years8|}}}|{{{events8|}}}}} | label62 = {{{years9}}} | data62 = {{#if:{{{years9|}}}|{{{events9|}}}}} | label63 = {{{years10}}} | data63 = {{#if:{{{years10|}}}|{{{events10|}}}}} | label64 = {{{years11}}} | data64 = {{#if:{{{years11|}}}|{{{events11|}}}}} | label65 = {{{years12}}} | data65 = {{#if:{{{years12|}}}|{{{events12|}}}}} | header66 = यात्री | data67 = {{#if:{{{passengers|}}}|{{Rail pass box|system={{{pass_system|}}}|passengers={{{passengers|}}}|pass_year={{{pass_year|}}}|pass_percent={{{pass_percent|}}}|pass_rank={{{pass_rank|}}}|yearonly=yes}}}}<!-- -->{{{mpassengers|}}} | header68 = _BLANK_ | data69 = {{Infobox station/services|services={{{services|}}}|collapsed={{{services_collapsible|}}}|style={{{style|}}}|style2={{{style2|}}}}} | rowstyle69 = display: none | data70 = {{Infobox station/services|services={{{other_services|}}}|collapsed={{{other_services_collapsible|}}}| header = {{if empty|{{{other_services_header|}}}|Other services}}|style={{{style|}}}|style2={{{style2|}}}}} | rowstyle70 = display: none | data71 = {{Infobox station/services|services={{{other_services2|}}}|collapsed={{{other_services2_collapsible|}}}|header={{if empty|{{{other_services2_header|}}}|Other services}}|style={{{style|}}}|style2={{{style2|}}}}} | rowstyle71 = display: none | data74 = {{{embedded|}}} | data75 = {{{nrhp|}}} | rowcellstyle75 = padding: 0 | data76 = {{#if:{{{route_map|}}}{{{map_name|}}}| {{ infobox | bodystyle = {{Subinfobox bodystyle}} | bodyclass = {{#if:{{{map_state|}}}|collapsible {{{map_state}}}|}} | headerstyle = {{#invoke:Adjacent stations|style|subheader|{{{style|}}}|{{{style2|}}}}} | header1 = {{#if:{{{map_name|}}}|<div style="margin:0 3.5em">{{{map_name}}}</div>|<div style="margin:0 3.5em">{{#ifeq:{{#invoke:String|find|{{{route_map}}}|[[साँचा:Railway track legend|Legend]]}}|0|मार्ग मानचित्र|Track layout}}</div>}} | data2 = {{{route_map}}} }}}} | data77 = {{#if:{{{pushpin_map|}}}{{{mapframe|}}}{{{coordinates|}}}{{#invoke:wd|property|P625}}{{{map_image|}}}| {{ infobox | bodystyle = {{Subinfobox bodystyle}} | bodyclass = {{#if:{{{location_state|}}}|collapsible {{{location_state}}}|}} | headerstyle = {{#invoke:Adjacent stations|style|subheader|{{{style|}}}|{{{style2|}}}}} | header1 = <div style="margin:0 3.5em">अवस्थिति</div> | data2 = {{#invoke:Location map|infobox_pushpin_map | pushpin_label = {{if empty|{{{name|}}}|{{PAGENAMEBASE}}}} }} | data3 = {{#if:{{{map_image|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{map_image|}}}|size={{{map_size|}}}|upright={{if empty|{{{map_image_upright|}}}|{{{image_upright|}}}|1.35}}|alt={{{map_alt|}}}}}{{#if:{{{map_caption|}}}|<div style="padding:0.2em 0;">{{{map_caption}}}</div>|}}|}} | data4 = {{#invoke:Infobox mapframe | autoWithCaption | onByDefault = {{#if:{{{map_image|}}}{{{pushpin_map|}}}|no|yes}} | mapframe-marker={{#switch:{{#invoke:wd|property|P31}} |{{label|Q494829}}=bus |{{label|Q55488}}=rail |{{label|Q55491}}|{{label|Q14562709}}=rail-metro |{{label|Q2175765}}=rail-light }} | mapframe-type = landmark }} }} }} | data79 = {{#if:{{{footnotes|}}}| {{ infobox | bodystyle = {{Subinfobox bodystyle}} | bodyclass = {{#if:{{{footnotes_state|}}}|collapsible {{{footnotes_state}}}|}} | headerstyle = {{#invoke:Adjacent stations|style|subheader|{{{style|}}}|{{{style2|}}}}} | header1 = {{#if:{{{footnotes|}}}|<div style="margin:0 3.5em">Notes</div>}} | data2 = <div style="text-align: left;">{{{footnotes}}}</div>}}}} }}{{Main other| {{#if:{{{local_authority|}}}|[[श्रेणी:Articles using Infobox station with local_authority]]}}<!-- -->{{#ifeq:{{{country|}}}|United Kingdom|{{#ifexpr:{{#ifeq:{{{system|}}}|Station on [[heritage railway]]|1|0}} or {{#ifeq:{{{status|}}}|Disused|1|0}}||{{for loop||2014/15|2015/16|2016/17|2017/18|2018/19|call=साँचा:Infobox station/gbtracking|pc1n=mpassengers|pc1v={{{mpassengers|}}}}}}}}}<!-- -->{{#if:{{{name|}}}{{{native_name|}}}|{{#ifeq:{{#invoke:String|find|{{{name}}}{{{native_name}}}|<}}{{#invoke:String|find|{{{name}}}{{{native_name}}}|''}}|00||[[श्रेणी:Articles using Infobox station with markup inside name]]}}{{#ifeq:{{#invoke:String|find|{{{name}}}{{{native_name}}}|[}}|0||[[श्रेणी:Articles using Infobox station with links or images inside name]]}}}}<!-- -->{{#if:{{{system|}}}|{{#ifeq:{{#invoke:String|find|{{{system}}}|<}}{{#invoke:String|find|{{{system}}}|''}}|00||[[श्रेणी:Articles using Infobox station with markup inside system]]}}{{#ifeq:{{#invoke:String|find|{{lc:{{{system}}}}}|[file:}}{{#invoke:String|find|{{lc:{{{system}}}}}|[image:}}|00||[[श्रेणी:Articles using Infobox station with images inside system]]}}}}}}<!-- -->{{#if:{{{opened|}}}{{{start|}}}{{{opening|}}}{{{starting|}}}||{{मुख्य अन्य|[[श्रेणी:Pages with no open date in Infobox station]]}}}}<!-- -->{{#invoke:Parameter validation|validateparams|module_options = घटक:Parameter validation/default config}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[श्रेणी:Pages using infobox station with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[साँचा:Infobox station]] with unknown parameter "_VALUE_" | ignoreblank = y | mapframe_args = y | pushpin_map_args = y | accessible | address | alt | architect | architectural_style | borough | bus_operators | bus_routes | bus_stands | caption | classification | closed | code | connections | coordinates | country | custom_header | cyclepark | depth | distance | electrified | electrified_date | elevation | embedded | events | events1 | events2 | events3 | events4 | events5 | events6 | events7 | events8 | events9 | events10 | events11 | events12 | footnotes | footnotes_state | former | grid_name | grid_position | iata | image | image_upright | levels | line | lines | local_authority | location_state | manager | map_alt | map_caption | map_image | map_image_upright | map_name | map_size | map_state | mlanguage | mpassengers | name | name_lang | native_name | native_name_lang | nrhp | number | opened | opening | operator | original | other_name | other_services | other_services_collapsible | other_services_header | other_services2 | other_services2_collapsible | other_services2_header | owner | parking | pass_percent | pass_rank | pass_system | pass_year | passengers | platform | platforms | postgroup | pregroup | prenational | rebuilt | route_map | services | services_collapsible | start | starting | status | structure | style | style2 | symbol | symbol_location | symbol_location2 | symbol_location3 | symbol_location4 | symbol_location5 | symbol_location6 | symbol2 | symbol3 | symbol4 | symbol5 | symbol6 | system | tracks | train_operators | tram_operator | tram_operators | tram_routes | transit_authority | website | years | years1 | years2 | years3 | years4 | years5 | years6 | years7 | years8 | years9 | years10 | years11 | years12 | zone }}{{#invoke:Check for conflicting parameters|check | template = [[साँचा:Infobox station]] | cat = {{main other|श्रेणी:Pages using infobox station with conflicting parameters}} | lines; line | platforms; platform | tram_operators; tram_operator }}<noinclude> {{documentation}} <!-- Add categories to the /doc sub-page --> </noinclude> 89y0h04j4nb5qi7cg6c9e92r18gbkii पटना जङ्क्शन रेलवे स्टेशन 0 18275 80381 2026-09-21T16:21:30Z ऐक्टिवेटेड् 76 "[[:en:Special:Redirect/revision/1373686993|Patna Junction railway station]]" पन्नाके अनुवाद करके निर्मित कैल गेलै 80381 wikitext text/x-wiki   '''[[पटना]] जङ्क्शन''' (स्टेशन कोड '''पिएनबिइ''') भारतके [[बिहार]] राज्यके राजधानी पटनामे स्थित एगो प्रमुख रेलवे स्टेशन हे । ई पटनाके मुख्य रेलवे स्टेशन हे ।[a] एकर सञ्चालन [[भारतीय रेल]]<nowiki/>के पूर्व मध्य रेल क्षेत्रके दानापुर विभागके अन्तर्गत कैल जा हे । पटना जङ्क्शन देशके सबसे व्यस्त रेलवे स्टेशनमे से एक हे । पटना जङ्क्शन रेलवे स्टेशन भारतके अधिकांश प्रमुख नगरके रेलवे नेटवर्कसे जुड़ल हे । ई नगर एगो प्रमुख रेलवे केन्द्र हे आउ हियाँ पाँच प्रमुख स्टेशन हे - पटना जङ्क्शन, राजेन्द्रनगर टर्मिनल, दानापुर रेलवे स्टेशन, पाटलिपुत्र जङ्क्शन आउ पटना साहिब स्टेशन । पटनासे खाली २० किमी के दूरी पर हाजीपुर जङ्क्शन आउ सोनपुर जङ्क्शन - दु प्रमुख रेलवे स्टेशनो हे ।&nbsp;पटना रोजमर्राके यात्री आउ एक्सप्रेस ट्रेन सेवाके माध्यमसे आरा, गया, जहानाबाद, बिहारशरीफ, राजगीर, इस्लामपुर, सोनपुर, हाजीपुर, मुजफ्फरपुर, छपरासे निमन जुड़ल हे । == इतिहास == पटना जङ्क्शन रेलवे स्टेशन १८६२ मे बाँकीपुर कस्बा, विभाग आउ पटना जिलाके मुख्यालय, [[बङ्गाल]], ब्रिटिश भारतमे बाँकीपुर जङ्क्शनके नामसे खोलल गेलै हल । पटनाके होके पार करेवाला रेलमार्गके निर्माण १८५५ मे शुरू होलै हल आउ १८६२ मे पूरा होल आउ खोलल गेलैै । एकरासे पहिले कच्चा माल आउ तैयार वस्तुके परिवहन [[गङ्गानदी|गङ्गा नदी]]<nowiki/>के माध्यम से कैल जा हलै । दानापुर विभाग १ जनवरी १९२५ के अस्तित्वमे ऐले । वर्तमान विभागीय रेलवे प्रबन्धकके कार्यालय भवन १९२९ मे बनावल गेलै हल । १९४८ मे पूर्व रेल (इआर) १ अक्टूबर १९४८ के "जनता एक्सप्रेस" से जानल जाएवाला एक विशेष तृतीय श्रेणीके एक्सप्रेस ट्रेन शुरू कैलकै । ई शुरुआतमे पटना आउ दिल्लीके बीच चललै आउ बादमे १९४९ मे दिल्लीसे हावड़ा तक बढ़ावल गेलै । एह भारतमे पहिला जनता एक्सप्रेस ट्रेन हलै । == चित्रदीर्घा == <gallery widths="180"> File:Patna_Junction_platform_4_to_1.jpg|पटना जङ्क्शन पर प्लेटफार्म ४ से १ File:Train_on_Platform_3_of_Patna_Junction.jpg|पटना जङ्क्शनके प्लेटफार्म ३ पर खड़ा एगो पैसेञ्जर ट्रेन File:Howrah-New_Delhi_Duronto_Express_standing_on_Patna_Junction.jpg|पटना जङ्क्शन पर खड़ा १२२७३ हावड़ा-नवदिल्ली दुरन्तो एक्सप्रेस File:Locomotive_party_at_Patna_yard_(7139628441).jpg|पटनामे डब्लुडिपि-४बि वर्गके लोकोमोटिव </gallery> == ट्रेन == === पटनासे चलेवाला ट्रेन === * [[गङ्गा दामोदर एक्सप्रेस|धनबाद - पटना गङ्गा दामोदर एक्सप्रेस]] * [[धनबाद-पटना इण्टरसिटी एक्सप्रेस]] * [[पटना-हटिया पाटलिपुत्र एक्सप्रेस]] * [[एर्णाकुलम्-पटना सुपरफास्ट एक्सप्रेस|एर्णाकुलम्-पटना सुपरफास्ट एक्सप्रेस (आसनसोल होके)]] * [[पटना-मुम्बई सिएसएमटि सुपरफास्ट एक्सप्रेस]] * [[पटना-कोटा एक्सप्रेस]] * [[हावड़ा-पटना जनशताब्दी एक्सप्रेस]] * [[पटना-राँची जनशताब्दी एक्सप्रेस]] * [[पटना-हावड़ा वन्देभारत एक्सप्रेस]] * [[पटना-राँची वन्देभारत एक्सप्रेस]] == निकटतम विमानस्थल == पटना जङ्क्शनके सबसे निकटतम विमानस्थल हे:{{साञ्चा:उद्धरण आवश्यक|date=April 2018}} # [[लोकनायक जयप्रकाश विमानस्थल]], पटना ५ किमी (३.१ मील) # [[गया विमानस्थल]] १०८ किलोमीटर (६७ मील) # [[दरभङ्गा विमानस्थल]] १३८ किलोमीटर (८६ मील) == लोकप्रिय संस्कृतिमे == * पटना जङ्क्शन [[हिन्दी चलच्चित्र|बालीवुड]] चलच्चित्र हाफ गर्लफ्रेण्डके फिल्माङ्कन स्थलमे से एगो हलै । == एकरो देखल जाये == <templatestyles src="Module:Portal bar/styles.css"></templatestyles>{{साञ्चा:Portal bar|India|Transport|Railways}} * [[पटना मेट्रो]]   == सन्दर्भ == <templatestyles src="Reflist/styles.css" />{{साञ्चा:Notelist}} == बाहरी कड़ी == <templatestyles src="Module:Side box/styles.css"></templatestyles>{{साञ्चा:Commons}} * [http://indiarailinfo.com/station/map/332 पटना जङ्क्शन मानचित्र] * [https://web.archive.org/web/20100416105758/http://www.patna.nic.in/ पटना जिलाके आधिकारिक जालस्थल] {{Railway stations in Bihar}}{{पटना}}{{Transport in Bihar}} mfdzgtg85kmmxc1jxa5b59yezlpedom 80426 80381 2026-09-21T19:16:03Z ऐक्टिवेटेड् 76 80426 wikitext text/x-wiki {{ज्ञानसन्दूक स्टेशन | name = [[File:Indian_Railways_Suburban_Railway_Logo.svg|50px]]<br />{{font color|blue|पटना जङ्क्शन}} | system = [[File:Indian_Railways_Suburban_Railway_Logo.svg|30px]] '''''[[भारतीय रेल]] स्टेशन''''' | style = भारतीय रेल | image = Patna Junction .jpg | caption = पटना जङ्क्शन रेल स्टेशनके प्रवेशद्वारके दृश्य | address = स्टेशन रोड, महावीर मन्दिर भिरु, पटना - ८००००१, बिहार | country = {{झण्डा|भारत}} | coordinates = {{Coord|25|36|10|N|85|8|15|E|display=inline}} | elevation = {{convert|57|m|ft}} | line = *[[नवदिल्ली-हावड़ा मुख्य रेलमार्ग]], *[[पटना-सोनपुर-हाजीपुर रेलखण्ड]], *[[आसनसोल-पटना रेलखण्ड]], *[[पटना-मुगलसराय रेलखण्ड]], *[[पटना-गया रेलमार्ग]] | connections = {{ric|Patna Metro}} {{rcb|Patna Metro|Blue|croute}} {{rcb|Patna Metro|Red|croute}} [[पटना जङ्क्शन मेट्रो स्टेशन|पटना जङ्क्शन]] (निर्माणाधीन) | structure = मानक (भूमिस्थित स्टेशन) | platform = १० प्लेटफार्म<br> '''लम्बाई–''' '''''{{cvt|650-700|m}}'''''<ref name="rri_installed">{{cite news|title=Route relay interlocking system now operational at Patna junction|url=http://articles.timesofindia.indiatimes.com/2012-02-20/patna/31079041_1_patna-junction-rri-system-patna-gaya|archive-url=https://archive.today/20130103224132/http://articles.timesofindia.indiatimes.com/2012-02-20/patna/31079041_1_patna-junction-rri-system-patna-gaya|url-status=dead|archive-date=3 जनवरी 2013|access-date=6 अप्रैल 2012|newspaper=[[द टाइम्स आफ इण्डिया]]|date=20 फरवरी 2012}}</ref> | tracks = १५ | cyclepark = अनुपलब्ध | parking = {{Parking symbol}} <span style="background-color:#ffc; border:1px solid darkgray; border-radius:10px; font-weight:bold; padding:1px; font-size:smaller;">&nbsp;{{small|'''कार पार्किङ्ग'''}}&nbsp;</span> {{color|green|उपलब्ध}} | opened = {{start date and age|df=yes|1862|12|25}}<ref name="Intra Urban Market Geography"/> | closed = | rebuilt = {{start date and age|2002}}<br /> '''प्रतीक्षालय'''<br />{{start date and age|2019}} | metro = | electrified = [[File:Electric.svg|20px]] 2003–{{start date and age|2004}}<ref name=elec>{{cite web|title=History of Electrification|url=https://www.irfca.org/docs/electrification-history.html|work=कोर (रेलवे विद्युतीकरण लागि केन्द्रीय सङ्गठन) द्वारा प्रकाशित जानकारी|publisher=कोर (रेलवे विद्युतीकरण लागि केन्द्रीय सङ्गठन)|access-date=1 अप्रैल 2012}}</ref> | classification = [[व्यावसायिक महत्व अनुसार भारतीय रेलवे स्टेशनके वर्गीकरण#वर्तमान (२०१७-)|एनसिडि-१]] | accessible = {{Access icon|20px}} {{color|green|उपलब्ध}} | code = {{Indian railway code | code = '''PNBE''' | zone = [[पूर्वमध्य रेल क्षेत्र|पूर्वमध्य रेल]] | division = {{rwd|दानापुर}} }} | website = {{URL|https://www.irctc.co.in/nget/train-search}} | owner = [[भारतीय रेल]] | operator = [[पूर्वमध्य रेल क्षेत्र|पूर्वमध्य रेल]] | status = कार्यात्मक | former = बाँकीपुर जङ्क्शन | passengers = २६.४ लाख प्रतिदिन<ref>{{cite web | url=http://articles.timesofindia.indiatimes.com/2021-22-17/patna/45294328_1_two-escalators-patna-junction-platform-number | archive-url=https://web.archive.org/web/20140103234505/http://articles.timesofindia.indiatimes.com/2013-12-17/patna/45294328_1_two-escalators-patna-junction-platform-number | url-status=dead | archive-date=3 जनवरी 2014 | title=Patna Junction to get two escalators by Jan-end | date=17 दिसम्बर 2022 | access-date=4 जनवरी 2021 | work=[[द टाइम्स आफ इण्डिया]] | author=कुमोद वर्मा}}</ref> | other_services = [[File:Waiting_Room_-_The_Noun_Project.svg|20px|प्रतीक्षालय]] [[File:AB-Autobahnkiosk.svg|20px|भोजन एवं पेय]] [[File:BSicon_REST.svg|15px|फूड प्लाजा]] [[File:Elevator_(AIGA_based).svg|15px|लिफ्ट]] [[File:Surveillance_camera.svg|40px|CCTV]] [[File:Aiga_escalator_down_mirror.svg|20px|स्वाचलित सीढ़ी]] [[File:Wifiservice.svg|15px|रेलवायर निःशुल्क वाइफाइ]] [[File:Font_Awesome_5_solid_bed.svg|20px|Retiring Rooms]][[File:Money atm.svg|20px|एटिएम]] | pass_system = {{increase}} {{color|#fc5|उच्च}} | mpassengers = | map_state = | pass_year = २०२२<!-- Based on the publish reference used for the passengers parameter above --> | pass_percent = | pass_rank = [[भारतीय रेलवे]] अन्तर्गत शीर्ष ५ बुकिङ्ग स्टेशन | services = {{Adjacent stations|noclear=y |header1=[[पूर्वमध्य रेल क्षेत्र|पूर्वमध्य रेल]] |system2=भारतीय रेल |line2=दीघा, पटना|left2=सचिवालय हाल्ट|right2=राजेन्द्र नगर टर्मिनल|note-mid2=[[गङ्गा रेल-सड़क सेतु]] दने ([[हाजीपुर]]⬅[[सोनपुर, बिहार|सोनपुर]]➡[[छपरा]]) [[File:16 cardinal points NNW.png|15px|उत्तर बिहार]] |line3=पटना-मुगलसराय रेलखण्ड|left3=सचिवालय हाल्ट|right3=राजेन्द्र नगर टर्मिनल|note-mid3={{stnlnk|दानापुर}}/[[पाटलिपुत्र जङ्क्शन रेलवे स्टेशन|पाटलिपुत्र]] दने [[File:16 cardinal points WSW.png|15px|दिल्ली/उप्र]] |line4=पटना-गया रेलमार्ग|left4=परसा बजार|right4=गुलजारबाग|note-mid4=जहानाबाद दने [[File:16 cardinal points SSW.png|15px|झारखण्ड]]}} | services_collapsible = yes | route_map = {{पटनामे रेल}} | pushpin_map = भारत#भारत बिहार#भारत पटना | pushpin_label = '''पटना जङ्क्शन''' | map_alt = | map_caption = [[पटना]]मे स्थिति##भारतमे स्थिति | mapframe = yes | mapframe-caption = पटना जङ्क्शनके क्रियाशील मानचित्र | mapframe-custom = {{Maplink|frame=yes|plain=yes|frame-align=center|frame-width=300|frame-height=180|zoom=14|type=point|marker=rail}} }} '''[[पटना]] जङ्क्शन''' (स्टेशन कोड '''पिएनबिइ''') भारतके [[बिहार]] राज्यके राजधानी पटनामे स्थित एगो प्रमुख रेलवे स्टेशन हे ।<ref>{{cite news|title=Patna serial blasts|url=http://m.indiatoday.in/story/patna-serial-blasts-terror-suspect-sent-to-high-beur-jail/1/320712.html|work=[[इण्डिया टूडे]]|date=29 अक्टुबर 2013|url-status=live|archive-url=https://web.archive.org/web/20160918174848/http://m.indiatoday.in/story/patna-serial-blasts-terror-suspect-sent-to-high-beur-jail/1/320712.html|archive-date=18 सितम्बर 2016}}</ref> ई पटनाके मुख्य रेलवे स्टेशन हे ।{{Efn|पटना जिलाके अन्य रेलवे स्टेशन हे: [[पाटलिपुत्र जङ्क्शन]], [[दानापुर रेलवे स्टेशन]] आउ [[पटना साहिब रेलवे स्टेशन]] ।}} एकर सञ्चालन [[भारतीय रेल]]के पूर्व मध्य रेल क्षेत्रके दानापुर मण्डलके अन्तर्गत कैल जा हे । पटना जङ्क्शन देशके सबसे व्यस्त रेलवे स्टेशनमे से एक हे ।<ref name="go4patna">{{cite web |title=Patna by Railways |url=http://www.go4patna.com/index.php/travel/transportation/patna-by-railways |work=go4patna.com |url-status=usurped |archive-url=https://web.archive.org/web/20161019113554/http://go4patna.com/index.php/travel/transportation/patna-by-railways |archive-date=19 अक्टुबर 2016}}</ref> पटना जङ्क्शन रेलवे स्टेशन भारतके अधिकांश प्रमुख नगरके रेलवे नेटवर्कसे जुड़ल हे । ई नगर एगो प्रमुख रेलवे केन्द्र हे आउ हियाँ पाँच प्रमुख स्टेशन हे - पटना जङ्क्शन, राजेन्द्रनगर टर्मिनल, दानापुर रेलवे स्टेशन, पाटलिपुत्र जङ्क्शन आउ पटना साहिब स्टेशन । पटनासे खाली २० किमी के दूरी पर हाजीपुर जङ्क्शन आउ सोनपुर जङ्क्शन - दु प्रमुख रेलवे स्टेशनो हे । पटना रोजमर्राके यात्री आउ एक्सप्रेस ट्रेन सेवाके माध्यमसे आरा, गया, जहानाबाद, बिहारशरीफ, राजगीर, इस्लामपुर, सोनपुर, हाजीपुर, मुजफ्फरपुर, छपरासे निमन जुड़ल हे । == इतिहास == पटना जङ्क्शन रेलवे स्टेशन १८६२ मे बाँकीपुर कस्बा, विभाग आउ पटना जिलाके मुख्यालय, [[बङ्गाल]], ब्रिटिश भारतमे बाँकीपुर जङ्क्शनके<ref name="mahatma">{{cite web |author=Amit Bhelari |url=http://www.telegraphindia.com/1150228/jsp/bihar/story_6048.jsp#.VnMe_7Z97IU |title=Train to trace travels of Mahatma |work=टेलिग्राफ इण्डिया |date=2015-02-28 |access-date=2015-12-18 |url-status=dead |archive-url=https://web.archive.org/web/20151222094121/http://www.telegraphindia.com/1150228/jsp/bihar/story_6048.jsp#.VnMe_7Z97IU |archive-date=22 दिसम्बर 2015}}</ref> नामसे खोलल गेलै हल ।<ref>{{cite web |url=https://dsal.uchicago.edu/reference/gazetteer/text.html?objectid=DS405.1.I34_V06_388.gif |title=Imperial Gazetteer2 of India, Volume 6, page 382 – Imperial Gazetteer of India&nbsp;— Digital South Asia Library |publisher=Dsal.uchicago.edu |date=2013-02-18 |access-date=2015-12-18 |url-status=live |archive-url=https://web.archive.org/web/20151222110216/http://dsal.uchicago.edu/reference/gazetteer/text.html?objectid=DS405.1.I34_V06_388.gif |archive-date=22 दिसम्बर 2015}}</ref> पटनाके होके पार करेवाला रेलमार्गके निर्माण १८५५ मे शुरू होलै हल आउ १८६२ मे पूरा होल आउ खोलल गेलै ।<ref>{{cite book |url=https://books.google.com/books?id=a-QaOP5nK-MC&q=bankipore+junction&pg=PA131 |title=Bihar And Orissa District Gazetteers Patna&nbsp;— L.S.S. O'malley&nbsp;— Google Books |isbn=9788172681210 |access-date=2015-12-18 |url-status=live |archive-url=https://web.archive.org/web/20151222155044/https://books.google.com/books?id=a-QaOP5nK-MC&pg=PA131&lpg=PA131&dq=bankipore+junction&source=bl&ots=5MS1mi2mAb&sig=MICPQscPfRlRIav-QtSlV9UvK8Q&hl=en&sa=X&ved=0ahUKEwjp-cXw4uPJAhUBqiwKHSMUCbMQ6AEIMTAE#v=onepage&q=bankipore%20junction&f=false |archive-date=22 दिसम्बर 2015|last1=O'Malley |first1=L. S. S. |year=1924 }}</ref> एकरासे पहिले कच्चा माल आउ तैयार वस्तुके परिवहन [[गङ्गा नदी]]के माध्यम से कैल जा हलै ।<ref name="Intra Urban Market Geography">{{cite book|title=Intra Urban Market Geography|year = 1980|url=https://books.google.com/books?id=GfRyNIyl9RkC&pg=PA35|access-date=6 अप्रैल 2012|publisher=Concept Publishing Company|pages=35–|id=GGKEY:H0N03P8ZTPB}}</ref> दानापुर मण्डल १ जनवरी १९२५ के अस्तित्वमे ऐले । वर्तमान मण्डलीय रेलवे प्रबन्धकके कार्यालय भवन १९२९ मे बनावल गेलै हल ।<ref name=danapur_gov>{{cite web|title=Danapur Division|url=http://www.ecr.indianrailways.gov.in/view_section.jsp?lang=0&id=0,6,335|work=Background|publisher=पूर्वमध्य रेल, भारत सरकारके आधिकारिक जालस्थल|access-date=6 अप्रैल 2012|url-status=live|archive-url=https://web.archive.org/web/20140506030134/http://www.ecr.indianrailways.gov.in/view_section.jsp?lang=0&id=0,6,335|archive-date=6 मई 2014}}</ref> १९४८ मे पूर्व रेल (इआर) १ अक्टूबर १९४८ के "जनता एक्सप्रेस" से जानल जाएवाला एक विशेष तृतीय श्रेणीके एक्सप्रेस ट्रेन शुरू कैलकै । ई शुरुआतमे पटना आउ दिल्लीके बीच चललै आउ बादमे १९४९ मे दिल्लीसे हावड़ा तक बढ़ावल गेलै । एह भारतमे पहिला जनता एक्सप्रेस ट्रेन हलै ।<ref name=timeline>{{cite web|title=Indian Railway History Time line|url=http://irse.bravehost.com/IRHTML.htm|access-date=7 अप्रैल 2012|url-status=dead|archive-url=https://archive.today/20120714085533/http://irse.bravehost.com/IRHTML.htm|archive-date=14 जुलाई 2012}}</ref> == चित्रदीर्घा == <gallery widths="180"> File:Patna_Junction_platform_4_to_1.jpg|पटना जङ्क्शन पर प्लेटफार्म ४ से १ File:Train_on_Platform_3_of_Patna_Junction.jpg|पटना जङ्क्शनके प्लेटफार्म ३ पर खड़ा एगो पैसेञ्जर ट्रेन File:Howrah-New_Delhi_Duronto_Express_standing_on_Patna_Junction.jpg|पटना जङ्क्शन पर खड़ा १२२७३ हावड़ा-नवदिल्ली दुरन्तो एक्सप्रेस File:Locomotive_party_at_Patna_yard_(7139628441).jpg|पटनामे डब्लुडिपि-४बि वर्गके लोकोमोटिव </gallery> == ट्रेन == === पटनासे चलेवाला ट्रेन === * [[गङ्गा दामोदर एक्सप्रेस|धनबाद - पटना गङ्गा दामोदर एक्सप्रेस]] * [[धनबाद-पटना इण्टरसिटी एक्सप्रेस]] * [[पटना-हटिया पाटलिपुत्र एक्सप्रेस]] * [[एर्णाकुलम्-पटना सुपरफास्ट एक्सप्रेस|एर्णाकुलम्-पटना सुपरफास्ट एक्सप्रेस (आसनसोल होके)]] * [[पटना-मुम्बई सिएसएमटि सुपरफास्ट एक्सप्रेस]] * [[पटना-कोटा एक्सप्रेस]] * [[हावड़ा-पटना जनशताब्दी एक्सप्रेस]] * [[पटना-राँची जनशताब्दी एक्सप्रेस]] * [[पटना-हावड़ा वन्देभारत एक्सप्रेस]] * [[पटना-राँची वन्देभारत एक्सप्रेस]] == निकटतम विमानस्थल == पटना जङ्क्शनके सबसे निकटतम विमानस्थल हे:{{उद्धरण आवश्यक|date=अप्रैल 2018}} # [[लोकनायक जयप्रकाश विमानस्थल]], पटना ५ किमी (३.१ मील) # [[गया विमानस्थल]] १०८ किलोमीटर (६७ मील) # [[दरभङ्गा विमानस्थल]] १३८ किलोमीटर (८६ मील) == लोकप्रिय संस्कृतिमे == * पटना जङ्क्शन [[हिन्दी चलच्चित्र|बालीवुड]] चलच्चित्र हाफ गर्लफ्रेण्डके फिल्माङ्कन स्थलमे से एगो हलै । == एकरो देखल जाये == {{Portal bar|भारत|परिवहन|रेलवे}} * [[पटना मेट्रो]] == टिप्पणी == {{टिप्पणीसूची|group="lower-alpha"}} == सन्दर्भ == {{टिप्पणीसूची}} == बाहरी कड़ी == {{Commons}} * [http://indiarailinfo.com/station/map/332 पटना जङ्क्शन मानचित्र] * [https://web.archive.org/web/20100416105758/http://www.patna.nic.in/ पटना जिलाके आधिकारिक जालस्थल] {{बिहारमे रेलवे स्टेशन}} {{पटना}} {{बिहारमे परिवहन}} [[श्रेणी:भारतमे १८६२ मे खुलल रेलवे स्टेशन]] [[श्रेणी:दानापुर रेल मण्डल]] [[श्रेणी:पटनामे रेलवे स्टेशन]] [[श्रेणी:पटना जिलामे रेलवे स्टेशन]] [[श्रेणी:बिहारमे रेलवे जङ्क्शन स्टेशन]] [[श्रेणी:भारतीय रेलके एआइ श्रेणीके स्टेशन]] byvdoqfcjb05ladcyag546z7ihtkq2b 80434 80426 2026-09-21T19:21:08Z ऐक्टिवेटेड् 76 80434 wikitext text/x-wiki {{ज्ञानसन्दूक स्टेशन | name = [[File:Indian_Railways_Suburban_Railway_Logo.svg|50px]]<br />{{font color|blue|पटना जङ्क्शन}} | system = [[File:Indian_Railways_Suburban_Railway_Logo.svg|30px]] '''''[[भारतीय रेल]] स्टेशन''''' | style = भारतीय रेल | image = Patna Junction .jpg | caption = पटना जङ्क्शन रेल स्टेशनके प्रवेशद्वारके दृश्य | address = स्टेशन रोड, महावीर मन्दिर भिरु, पटना - ८००००१, बिहार | country = {{झण्डा|भारत}} | coordinates = {{Coord|25|36|10|N|85|8|15|E|display=inline}} | elevation = {{convert|57|m|ft}} | line = *[[नवदिल्ली-हावड़ा मुख्य रेलमार्ग]], *[[पटना-सोनपुर-हाजीपुर रेलखण्ड]], *[[आसनसोल-पटना रेलखण्ड]], *[[पटना-मुगलसराय रेलखण्ड]], *[[पटना-गया रेलमार्ग]] | connections = {{ric|Patna Metro}} {{rcb|Patna Metro|Blue|croute}} {{rcb|Patna Metro|Red|croute}} [[पटना जङ्क्शन मेट्रो स्टेशन|पटना जङ्क्शन]] (निर्माणाधीन) | structure = मानक (भूमिस्थित स्टेशन) | platform = १० प्लेटफार्म<br> '''लम्बाई–''' '''''{{cvt|650-700|m}}'''''<ref name="rri_installed">{{cite news|title=Route relay interlocking system now operational at Patna junction|url=http://articles.timesofindia.indiatimes.com/2012-02-20/patna/31079041_1_patna-junction-rri-system-patna-gaya|archive-url=https://archive.today/20130103224132/http://articles.timesofindia.indiatimes.com/2012-02-20/patna/31079041_1_patna-junction-rri-system-patna-gaya|url-status=dead|archive-date=3 जनवरी 2013|access-date=6 अप्रैल 2012|newspaper=[[द टाइम्स आफ इण्डिया]]|date=20 फरवरी 2012}}</ref> | tracks = १५ | cyclepark = अनुपलब्ध | parking = {{Parking symbol}} <span style="background-color:#ffc; border:1px solid darkgray; border-radius:10px; font-weight:bold; padding:1px; font-size:smaller;">&nbsp;{{small|'''कार पार्किङ्ग'''}}&nbsp;</span> {{color|green|उपलब्ध}} | opened = {{start date and age|df=yes|1862|12|25}}<ref name="Intra Urban Market Geography"/> | closed = | rebuilt = {{start date and age|2002}}<br /> '''प्रतीक्षालय'''<br />{{start date and age|2019}} | metro = | electrified = [[File:Electric.svg|20px]] 2003–{{start date and age|2004}}<ref name=elec>{{cite web|title=History of Electrification|url=https://www.irfca.org/docs/electrification-history.html|work=कोर (रेलवे विद्युतीकरण लागि केन्द्रीय सङ्गठन) द्वारा प्रकाशित जानकारी|publisher=कोर (रेलवे विद्युतीकरण लागि केन्द्रीय सङ्गठन)|access-date=1 अप्रैल 2012}}</ref> | classification = [[व्यावसायिक महत्व अनुसार भारतीय रेलवे स्टेशनके वर्गीकरण#वर्तमान (२०१७-)|एनसिडि-१]] | accessible = {{Access icon|20px}} {{color|green|उपलब्ध}} | code = {{Indian railway code | code = '''PNBE''' | zone = [[पूर्वमध्य रेल क्षेत्र|पूर्वमध्य रेल]] | division = {{rwd|दानापुर}} }} | website = {{URL|https://www.irctc.co.in/nget/train-search}} | owner = [[भारतीय रेल]] | operator = [[पूर्वमध्य रेल क्षेत्र|पूर्वमध्य रेल]] | status = कार्यात्मक | former = बाँकीपुर जङ्क्शन | passengers = २६.४ लाख प्रतिदिन<ref>{{cite web | url=http://articles.timesofindia.indiatimes.com/2021-22-17/patna/45294328_1_two-escalators-patna-junction-platform-number | archive-url=https://web.archive.org/web/20140103234505/http://articles.timesofindia.indiatimes.com/2013-12-17/patna/45294328_1_two-escalators-patna-junction-platform-number | url-status=dead | archive-date=3 जनवरी 2014 | title=Patna Junction to get two escalators by Jan-end | date=17 दिसम्बर 2022 | access-date=4 जनवरी 2021 | work=[[द टाइम्स आफ इण्डिया]] | author=कुमोद वर्मा}}</ref> | other_services = [[File:Waiting_Room_-_The_Noun_Project.svg|20px|प्रतीक्षालय]] [[File:AB-Autobahnkiosk.svg|20px|भोजन एवं पेय]] [[File:BSicon_REST.svg|15px|फूड प्लाजा]] [[File:Elevator_(AIGA_based).svg|15px|लिफ्ट]] [[File:Surveillance_camera.svg|40px|CCTV]] [[File:Aiga_escalator_down_mirror.svg|20px|स्वाचलित सीढ़ी]] [[File:Wifiservice.svg|15px|रेलवायर निःशुल्क वाइफाइ]] [[File:Font_Awesome_5_solid_bed.svg|20px|Retiring Rooms]][[File:Money atm.svg|20px|एटिएम]] | pass_system = {{increase}} {{color|#fc5|उच्च}} | mpassengers = | map_state = | pass_year = २०२२<!-- Based on the publish reference used for the passengers parameter above --> | pass_percent = | pass_rank = [[भारतीय रेलवे]] अन्तर्गत शीर्ष ५ बुकिङ्ग स्टेशन | services = {{Adjacent stations|noclear=y |header1=[[पूर्वमध्य रेल क्षेत्र|पूर्वमध्य रेल]] |system2=भारतीय रेल |line2=दीघा, पटना|left2=सचिवालय हाल्ट|right2=राजेन्द्र नगर टर्मिनल|note-mid2=[[गङ्गा रेल-सड़क सेतु]] दने ([[हाजीपुर]]⬅[[सोनपुर, बिहार|सोनपुर]]➡[[छपरा]]) [[File:16 cardinal points NNW.png|15px|उत्तर बिहार]] |line3=पटना-मुगलसराय रेलखण्ड|left3=सचिवालय हाल्ट|right3=राजेन्द्र नगर टर्मिनल|note-mid3={{stnlnk|दानापुर}}/[[पाटलिपुत्र जङ्क्शन रेलवे स्टेशन|पाटलिपुत्र]] दने [[File:16 cardinal points WSW.png|15px|दिल्ली/उप्र]] |line4=पटना-गया रेलमार्ग|left4=परसा बजार|right4=गुलजारबाग|note-mid4=जहानाबाद दने [[File:16 cardinal points SSW.png|15px|झारखण्ड]]}} | services_collapsible = yes | route_map = {{पटनामे रेल}} | pushpin_map = भारत#भारत बिहार#भारत पटना | pushpin_label = '''पटना जङ्क्शन''' | map_alt = | map_caption = [[पटना]]मे स्थिति##भारतमे स्थिति | mapframe = yes | mapframe-caption = पटना जङ्क्शनके क्रियाशील मानचित्र | mapframe-custom = {{Maplink|frame=yes|plain=yes|frame-align=center|frame-width=300|frame-height=180|zoom=14|type=point|marker=rail}} }} '''[[पटना]] जङ्क्शन''' (स्टेशन कोड '''पिएनबिइ''') [[भारत]]के [[बिहार]] राज्यके राजधानी [[पटना]]मे स्थित एगो प्रमुख रेलवे स्टेशन हे ।<ref>{{cite news|title=Patna serial blasts|url=http://m.indiatoday.in/story/patna-serial-blasts-terror-suspect-sent-to-high-beur-jail/1/320712.html|work=[[इण्डिया टूडे]]|date=29 अक्टुबर 2013|url-status=live|archive-url=https://web.archive.org/web/20160918174848/http://m.indiatoday.in/story/patna-serial-blasts-terror-suspect-sent-to-high-beur-jail/1/320712.html|archive-date=18 सितम्बर 2016}}</ref> ई पटनाके मुख्य रेलवे स्टेशन हे ।{{Efn|पटना जिलाके अन्य रेलवे स्टेशन हे: [[पाटलिपुत्र जङ्क्शन]], [[दानापुर रेलवे स्टेशन]] आउ [[पटना साहिब रेलवे स्टेशन]] ।}} एकर सञ्चालन [[भारतीय रेल]]के [[पूर्वमध्य रेल क्षेत्र]]के [[दानापुर रेल मण्डल|दानापुर मण्डल]]के अन्तर्गत कैल जा हे । पटना जङ्क्शन देशके सबसे व्यस्त रेलवे स्टेशनमे से एक हे ।<ref name="go4patna">{{cite web |title=Patna by Railways |url=http://www.go4patna.com/index.php/travel/transportation/patna-by-railways |work=go4patna.com |url-status=usurped |archive-url=https://web.archive.org/web/20161019113554/http://go4patna.com/index.php/travel/transportation/patna-by-railways |archive-date=19 अक्टुबर 2016}}</ref> पटना जङ्क्शन रेलवे स्टेशन भारतके अधिकांश प्रमुख नगरके रेलवे नेटवर्कसे जुड़ल हे । ई नगर एगो प्रमुख रेलवे केन्द्र हे आउ हियाँ पाँच प्रमुख स्टेशन हे - पटना जङ्क्शन, [[राजेन्द्रनगर टर्मिनल]], [[दानापुर रेलवे स्टेशन]], [[पाटलिपुत्र जङ्क्शन]] आउ [[पटना साहिब स्टेशन]] । पटनासे खाली २० किमी के दूरी पर [[हाजीपुर जङ्क्शन]] आउ [[सोनपुर जङ्क्शन]] - दु प्रमुख रेलवे स्टेशनो हे । पटना रोजमर्राके यात्री आउ एक्सप्रेस ट्रेन सेवाके माध्यमसे [[आरा]], [[गया]], [[जहानाबाद]], [[बिहारशरीफ]], [[राजगीर]], [[इस्लामपुर]], [[सोनपुर]], [[हाजीपुर]], [[मुजफ्फरपुर]], [[छपरा]]से निमन जुड़ल हे । == इतिहास == पटना जङ्क्शन रेलवे स्टेशन १८६२ मे [[बाँकीपुर]] कस्बा, विभाग आउ [[पटना जिला]]के मुख्यालय, [[बङ्गाल]], [[ब्रिटिश भारत]]मे बाँकीपुर जङ्क्शनके<ref name="mahatma">{{cite web |author=Amit Bhelari |url=http://www.telegraphindia.com/1150228/jsp/bihar/story_6048.jsp#.VnMe_7Z97IU |title=Train to trace travels of Mahatma |work=टेलिग्राफ इण्डिया |date=2015-02-28 |access-date=2015-12-18 |url-status=dead |archive-url=https://web.archive.org/web/20151222094121/http://www.telegraphindia.com/1150228/jsp/bihar/story_6048.jsp#.VnMe_7Z97IU |archive-date=22 दिसम्बर 2015}}</ref> नामसे खोलल गेलै हल ।<ref>{{cite web |url=https://dsal.uchicago.edu/reference/gazetteer/text.html?objectid=DS405.1.I34_V06_388.gif |title=Imperial Gazetteer2 of India, Volume 6, page 382 – Imperial Gazetteer of India&nbsp;— Digital South Asia Library |publisher=Dsal.uchicago.edu |date=2013-02-18 |access-date=2015-12-18 |url-status=live |archive-url=https://web.archive.org/web/20151222110216/http://dsal.uchicago.edu/reference/gazetteer/text.html?objectid=DS405.1.I34_V06_388.gif |archive-date=22 दिसम्बर 2015}}</ref> पटनाके होके पार करेवाला रेलमार्गके निर्माण १८५५ मे शुरू होलै हल आउ १८६२ मे पूरा होल आउ खोलल गेलै ।<ref>{{cite book |url=https://books.google.com/books?id=a-QaOP5nK-MC&q=bankipore+junction&pg=PA131 |title=Bihar And Orissa District Gazetteers Patna&nbsp;— L.S.S. O'malley&nbsp;— Google Books |isbn=9788172681210 |access-date=2015-12-18 |url-status=live |archive-url=https://web.archive.org/web/20151222155044/https://books.google.com/books?id=a-QaOP5nK-MC&pg=PA131&lpg=PA131&dq=bankipore+junction&source=bl&ots=5MS1mi2mAb&sig=MICPQscPfRlRIav-QtSlV9UvK8Q&hl=en&sa=X&ved=0ahUKEwjp-cXw4uPJAhUBqiwKHSMUCbMQ6AEIMTAE#v=onepage&q=bankipore%20junction&f=false |archive-date=22 दिसम्बर 2015|last1=O'Malley |first1=L. S. S. |year=1924 }}</ref> एकरासे पहिले कच्चा माल आउ तैयार वस्तुके परिवहन [[गङ्गा नदी]]के माध्यम से कैल जा हलै ।<ref name="Intra Urban Market Geography">{{cite book|title=Intra Urban Market Geography|year = 1980|url=https://books.google.com/books?id=GfRyNIyl9RkC&pg=PA35|access-date=6 अप्रैल 2012|publisher=Concept Publishing Company|pages=35–|id=GGKEY:H0N03P8ZTPB}}</ref> दानापुर मण्डल १ जनवरी १९२५ के अस्तित्वमे ऐले । वर्तमान मण्डलीय रेलवे प्रबन्धकके कार्यालय भवन १९२९ मे बनावल गेलै हल ।<ref name=danapur_gov>{{cite web|title=Danapur Division|url=http://www.ecr.indianrailways.gov.in/view_section.jsp?lang=0&id=0,6,335|work=Background|publisher=पूर्वमध्य रेल, भारत सरकारके आधिकारिक जालस्थल|access-date=6 अप्रैल 2012|url-status=live|archive-url=https://web.archive.org/web/20140506030134/http://www.ecr.indianrailways.gov.in/view_section.jsp?lang=0&id=0,6,335|archive-date=6 मई 2014}}</ref> १९४८ मे पूर्व रेल (इआर) १ अक्टूबर १९४८ के "जनता एक्सप्रेस" से जानल जाएवाला एक विशेष तृतीय श्रेणीके एक्सप्रेस ट्रेन शुरू कैलकै । ई शुरुआतमे पटना आउ दिल्लीके बीच चललै आउ बादमे १९४९ मे दिल्लीसे हावड़ा तक बढ़ावल गेलै । एह भारतमे पहिला जनता एक्सप्रेस ट्रेन हलै ।<ref name=timeline>{{cite web|title=Indian Railway History Time line|url=http://irse.bravehost.com/IRHTML.htm|access-date=7 अप्रैल 2012|url-status=dead|archive-url=https://archive.today/20120714085533/http://irse.bravehost.com/IRHTML.htm|archive-date=14 जुलाई 2012}}</ref> == चित्रदीर्घा == <gallery widths="180"> File:Patna_Junction_platform_4_to_1.jpg|पटना जङ्क्शन पर प्लेटफार्म ४ से १ File:Train_on_Platform_3_of_Patna_Junction.jpg|पटना जङ्क्शनके प्लेटफार्म ३ पर खड़ा एगो पैसेञ्जर ट्रेन File:Howrah-New_Delhi_Duronto_Express_standing_on_Patna_Junction.jpg|पटना जङ्क्शन पर खड़ा १२२७३ हावड़ा-नवदिल्ली दुरन्तो एक्सप्रेस File:Locomotive_party_at_Patna_yard_(7139628441).jpg|पटनामे डब्लुडिपि-४बि वर्गके लोकोमोटिव </gallery> == ट्रेन == === पटनासे चलेवाला ट्रेन === * [[गङ्गा दामोदर एक्सप्रेस|धनबाद - पटना गङ्गा दामोदर एक्सप्रेस]] * [[धनबाद-पटना इण्टरसिटी एक्सप्रेस]] * [[पटना-हटिया पाटलिपुत्र एक्सप्रेस]] * [[एर्णाकुलम्-पटना सुपरफास्ट एक्सप्रेस|एर्णाकुलम्-पटना सुपरफास्ट एक्सप्रेस (आसनसोल होके)]] * [[पटना-मुम्बई सिएसएमटि सुपरफास्ट एक्सप्रेस]] * [[पटना-कोटा एक्सप्रेस]] * [[हावड़ा-पटना जनशताब्दी एक्सप्रेस]] * [[पटना-राँची जनशताब्दी एक्सप्रेस]] * [[पटना-हावड़ा वन्देभारत एक्सप्रेस]] * [[पटना-राँची वन्देभारत एक्सप्रेस]] == निकटतम विमानस्थल == पटना जङ्क्शनके सबसे निकटतम विमानस्थल हे:{{उद्धरण आवश्यक|date=अप्रैल 2018}} # [[लोकनायक जयप्रकाश विमानस्थल]], पटना ५ किमी (३.१ मील) # [[गया विमानस्थल]] १०८ किलोमीटर (६७ मील) # [[दरभङ्गा विमानस्थल]] १३८ किलोमीटर (८६ मील) == लोकप्रिय संस्कृतिमे == * पटना जङ्क्शन [[हिन्दी चलच्चित्र|बालीवुड]] चलच्चित्र हाफ गर्लफ्रेण्डके फिल्माङ्कन स्थलमे से एगो हलै । == एकरो देखल जाये == {{Portal bar|भारत|परिवहन|रेलवे}} * [[पटना मेट्रो]] == टिप्पणी == {{टिप्पणीसूची|group="lower-alpha"}} == सन्दर्भ == {{टिप्पणीसूची}} == बाहरी कड़ी == {{Commons}} * [http://indiarailinfo.com/station/map/332 पटना जङ्क्शन मानचित्र] * [https://web.archive.org/web/20100416105758/http://www.patna.nic.in/ पटना जिलाके आधिकारिक जालस्थल] {{बिहारमे रेलवे स्टेशन}} {{पटना}} {{बिहारमे परिवहन}} [[श्रेणी:भारतमे १८६२ मे खुलल रेलवे स्टेशन]] [[श्रेणी:दानापुर रेल मण्डल]] [[श्रेणी:पटनामे रेलवे स्टेशन]] [[श्रेणी:पटना जिलामे रेलवे स्टेशन]] [[श्रेणी:बिहारमे रेलवे जङ्क्शन स्टेशन]] [[श्रेणी:भारतीय रेलके एआइ श्रेणीके स्टेशन]] rtqcq9noat3gzmwgy5rj543fukfrt8s 80436 80434 2026-09-21T19:24:34Z ऐक्टिवेटेड् 76 80436 wikitext text/x-wiki {{ज्ञानसन्दूक स्टेशन | name = [[File:Indian_Railways_Suburban_Railway_Logo.svg|50px]]<br />{{font color|blue|पटना जङ्क्शन}} | system = [[File:Indian_Railways_Suburban_Railway_Logo.svg|30px]] '''''[[भारतीय रेल]] स्टेशन''''' | style = भारतीय रेल | image = Patna Junction .jpg | caption = पटना जङ्क्शन रेल स्टेशनके प्रवेशद्वारके दृश्य | address = स्टेशन रोड, महावीर मन्दिर भिरु, पटना - ८००००१, बिहार | country = {{झण्डा|भारत}} | coordinates = {{Coord|25|36|10|N|85|8|15|E|display=inline}} | elevation = {{convert|57|m|ft}} | line = *[[नवदिल्ली-हावड़ा मुख्य रेलमार्ग]], *[[पटना-सोनपुर-हाजीपुर रेलखण्ड]], *[[आसनसोल-पटना रेलखण्ड]], *[[पटना-मुगलसराय रेलखण्ड]], *[[पटना-गया रेलमार्ग]] | connections = {{ric|Patna Metro}} {{rcb|Patna Metro|Blue|croute}} {{rcb|Patna Metro|Red|croute}} [[पटना जङ्क्शन मेट्रो स्टेशन|पटना जङ्क्शन]] (निर्माणाधीन) | structure = मानक (भूमिस्थित स्टेशन) | platform = १० प्लेटफार्म<br> '''लम्बाई–''' '''''{{cvt|650-700|m}}'''''<ref name="rri_installed">{{cite news|title=Route relay interlocking system now operational at Patna junction|url=http://articles.timesofindia.indiatimes.com/2012-02-20/patna/31079041_1_patna-junction-rri-system-patna-gaya|archive-url=https://archive.today/20130103224132/http://articles.timesofindia.indiatimes.com/2012-02-20/patna/31079041_1_patna-junction-rri-system-patna-gaya|url-status=dead|archive-date=3 जनवरी 2013|access-date=6 अप्रैल 2012|newspaper=[[द टाइम्स आफ इण्डिया]]|date=20 फरवरी 2012}}</ref> | tracks = १५ | cyclepark = अनुपलब्ध | parking = {{Parking symbol}} <span style="background-color:#ffc; border:1px solid darkgray; border-radius:10px; font-weight:bold; padding:1px; font-size:smaller;">&nbsp;{{small|'''कार पार्किङ्ग'''}}&nbsp;</span> {{color|green|उपलब्ध}} | opened = {{start date and age|df=yes|1862|12|25}}<ref name="Intra Urban Market Geography"/> | closed = | rebuilt = {{start date and age|2002}}<br /> '''प्रतीक्षालय'''<br />{{start date and age|2019}} | metro = | electrified = [[File:Electric.svg|20px]] 2003–{{start date and age|2004}}<ref name=elec>{{cite web|title=History of Electrification|url=https://www.irfca.org/docs/electrification-history.html|work=कोर (रेलवे विद्युतीकरण लागि केन्द्रीय सङ्गठन) द्वारा प्रकाशित जानकारी|publisher=कोर (रेलवे विद्युतीकरण लागि केन्द्रीय सङ्गठन)|access-date=1 अप्रैल 2012}}</ref> | classification = [[व्यावसायिक महत्व अनुसार भारतीय रेलवे स्टेशनके वर्गीकरण#वर्तमान (२०१७-)|एनसिडि-१]] | accessible = {{Access icon|20px}} {{color|green|उपलब्ध}} | code = {{Indian railway code | code = '''PNBE''' | zone = [[पूर्वमध्य रेल क्षेत्र|पूर्वमध्य रेल]] | division = {{rwd|दानापुर}} }} | website = {{URL|https://www.irctc.co.in/nget/train-search}} | owner = [[भारतीय रेल]] | operator = [[पूर्वमध्य रेल क्षेत्र|पूर्वमध्य रेल]] | status = कार्यात्मक | former = बाँकीपुर जङ्क्शन | passengers = २६.४ लाख प्रतिदिन<ref>{{cite web | url=http://articles.timesofindia.indiatimes.com/2021-22-17/patna/45294328_1_two-escalators-patna-junction-platform-number | archive-url=https://web.archive.org/web/20140103234505/http://articles.timesofindia.indiatimes.com/2013-12-17/patna/45294328_1_two-escalators-patna-junction-platform-number | url-status=dead | archive-date=3 जनवरी 2014 | title=Patna Junction to get two escalators by Jan-end | date=17 दिसम्बर 2022 | access-date=4 जनवरी 2021 | work=[[द टाइम्स आफ इण्डिया]] | author=कुमोद वर्मा}}</ref> | other_services = [[File:Waiting_Room_-_The_Noun_Project.svg|20px|प्रतीक्षालय]] [[File:AB-Autobahnkiosk.svg|20px|भोजन एवं पेय]] [[File:BSicon_REST.svg|15px|फूड प्लाजा]] [[File:Elevator_(AIGA_based).svg|15px|लिफ्ट]] [[File:Surveillance_camera.svg|40px|CCTV]] [[File:Aiga_escalator_down_mirror.svg|20px|स्वाचलित सीढ़ी]] [[File:Wifiservice.svg|15px|रेलवायर निःशुल्क वाइफाइ]] [[File:Font_Awesome_5_solid_bed.svg|20px|Retiring Rooms]][[File:Money atm.svg|20px|एटिएम]] | pass_system = {{increase}} {{color|#fc5|उच्च}} | mpassengers = | map_state = | pass_year = २०२२<!-- Based on the publish reference used for the passengers parameter above --> | pass_percent = | pass_rank = [[भारतीय रेलवे]] अन्तर्गत शीर्ष ५ बुकिङ्ग स्टेशन | services = {{Adjacent stations|noclear=y |header1=[[पूर्वमध्य रेल क्षेत्र|पूर्वमध्य रेल]] |system2=भारतीय रेल |line2=दीघा, पटना|left2=सचिवालय हाल्ट|right2=राजेन्द्र नगर टर्मिनल|note-mid2=[[गङ्गा रेल-सड़क सेतु]] दने ([[हाजीपुर]]⬅[[सोनपुर, बिहार|सोनपुर]]➡[[छपरा]]) [[File:16 cardinal points NNW.png|15px|उत्तर बिहार]] |line3=पटना-मुगलसराय रेलखण्ड|left3=सचिवालय हाल्ट|right3=राजेन्द्र नगर टर्मिनल|note-mid3={{stnlnk|दानापुर}}/[[पाटलिपुत्र जङ्क्शन रेलवे स्टेशन|पाटलिपुत्र]] दने [[File:16 cardinal points WSW.png|15px|दिल्ली/उप्र]] |line4=पटना-गया रेलमार्ग|left4=परसा बजार|right4=गुलजारबाग|note-mid4=जहानाबाद दने [[File:16 cardinal points SSW.png|15px|झारखण्ड]]}} | services_collapsible = yes | route_map = {{पटनामे रेल}} | pushpin_map = भारत#भारत बिहार#भारत पटना | pushpin_label = '''पटना जङ्क्शन''' | map_alt = | map_caption = [[पटना]]मे स्थिति##भारतमे स्थिति | mapframe = yes | mapframe-caption = पटना जङ्क्शनके क्रियाशील मानचित्र | mapframe-custom = {{Maplink|frame=yes|plain=yes|frame-align=center|frame-width=300|frame-height=180|zoom=14|type=point|marker=rail}} }} '''[[पटना]] जङ्क्शन''' (स्टेशन कोड '''पिएनबिइ''') [[भारत]]के [[बिहार]] राज्यके राजधानी [[पटना]]मे स्थित एगो प्रमुख रेलवे स्टेशन हे ।<ref>{{cite news|title=Patna serial blasts|url=http://m.indiatoday.in/story/patna-serial-blasts-terror-suspect-sent-to-high-beur-jail/1/320712.html|work=[[इण्डिया टूडे]]|date=29 अक्टुबर 2013|url-status=live|archive-url=https://web.archive.org/web/20160918174848/http://m.indiatoday.in/story/patna-serial-blasts-terror-suspect-sent-to-high-beur-jail/1/320712.html|archive-date=18 सितम्बर 2016}}</ref> ई पटनाके मुख्य रेलवे स्टेशन हे ।{{Efn|पटना जिलाके अन्य रेलवे स्टेशन हे: [[पाटलिपुत्र जङ्क्शन]], [[दानापुर रेलवे स्टेशन]] आउ [[पटना साहिब रेलवे स्टेशन]] ।}} एकर सञ्चालन [[भारतीय रेल]]के [[पूर्वमध्य रेल क्षेत्र]]के [[दानापुर रेल मण्डल|दानापुर मण्डल]]के अन्तर्गत कैल जा हे । पटना जङ्क्शन देशके सबसे व्यस्त रेलवे स्टेशनमे से एक हे ।<ref name="go4patna">{{cite web |title=Patna by Railways |url=http://www.go4patna.com/index.php/travel/transportation/patna-by-railways |work=go4patna.com |url-status=usurped |archive-url=https://web.archive.org/web/20161019113554/http://go4patna.com/index.php/travel/transportation/patna-by-railways |archive-date=19 अक्टुबर 2016}}</ref> पटना जङ्क्शन रेलवे स्टेशन भारतके अधिकांश प्रमुख नगरके रेलवे नेटवर्कसे जुड़ल हे । ई नगर एगो प्रमुख रेलवे केन्द्र हे आउ हियाँ पाँच प्रमुख स्टेशन हे - पटना जङ्क्शन, [[राजेन्द्रनगर टर्मिनल]], [[दानापुर रेलवे स्टेशन]], [[पाटलिपुत्र जङ्क्शन]] आउ [[पटना साहिब स्टेशन]] । पटनासे खाली २० किमी के दूरी पर [[हाजीपुर जङ्क्शन]] आउ [[सोनपुर जङ्क्शन]] - दु प्रमुख रेलवे स्टेशनो हे । पटना रोजमर्राके यात्री आउ एक्सप्रेस ट्रेन सेवाके माध्यमसे [[आरा]], [[गया]], [[जहानाबाद]], [[बिहारशरीफ]], [[राजगीर]], [[इस्लामपुर, नालन्दा|इस्लामपुर]], [[सोनपुर, बिहार|सोनपुर]], [[हाजीपुर]], [[मुजफ्फरपुर]], [[छपरा]]से निमन जुड़ल हे । == इतिहास == पटना जङ्क्शन रेलवे स्टेशन १८६२ मे [[बाँकीपुर]] कस्बा, विभाग आउ [[पटना जिला]]के मुख्यालय, [[बङ्गाल]], [[ब्रिटिश भारत]]मे बाँकीपुर जङ्क्शनके<ref name="mahatma">{{cite web |author=Amit Bhelari |url=http://www.telegraphindia.com/1150228/jsp/bihar/story_6048.jsp#.VnMe_7Z97IU |title=Train to trace travels of Mahatma |work=टेलिग्राफ इण्डिया |date=2015-02-28 |access-date=2015-12-18 |url-status=dead |archive-url=https://web.archive.org/web/20151222094121/http://www.telegraphindia.com/1150228/jsp/bihar/story_6048.jsp#.VnMe_7Z97IU |archive-date=22 दिसम्बर 2015}}</ref> नामसे खोलल गेलै हल ।<ref>{{cite web |url=https://dsal.uchicago.edu/reference/gazetteer/text.html?objectid=DS405.1.I34_V06_388.gif |title=Imperial Gazetteer2 of India, Volume 6, page 382 – Imperial Gazetteer of India&nbsp;— Digital South Asia Library |publisher=Dsal.uchicago.edu |date=2013-02-18 |access-date=2015-12-18 |url-status=live |archive-url=https://web.archive.org/web/20151222110216/http://dsal.uchicago.edu/reference/gazetteer/text.html?objectid=DS405.1.I34_V06_388.gif |archive-date=22 दिसम्बर 2015}}</ref> पटनाके होके पार करेवाला रेलमार्गके निर्माण १८५५ मे शुरू होलै हल आउ १८६२ मे पूरा होल आउ खोलल गेलै ।<ref>{{cite book |url=https://books.google.com/books?id=a-QaOP5nK-MC&q=bankipore+junction&pg=PA131 |title=Bihar And Orissa District Gazetteers Patna&nbsp;— L.S.S. O'malley&nbsp;— Google Books |isbn=9788172681210 |access-date=2015-12-18 |url-status=live |archive-url=https://web.archive.org/web/20151222155044/https://books.google.com/books?id=a-QaOP5nK-MC&pg=PA131&lpg=PA131&dq=bankipore+junction&source=bl&ots=5MS1mi2mAb&sig=MICPQscPfRlRIav-QtSlV9UvK8Q&hl=en&sa=X&ved=0ahUKEwjp-cXw4uPJAhUBqiwKHSMUCbMQ6AEIMTAE#v=onepage&q=bankipore%20junction&f=false |archive-date=22 दिसम्बर 2015|last1=O'Malley |first1=L. S. S. |year=1924 }}</ref> एकरासे पहिले कच्चा माल आउ तैयार वस्तुके परिवहन [[गङ्गा नदी]]के माध्यम से कैल जा हलै ।<ref name="Intra Urban Market Geography">{{cite book|title=Intra Urban Market Geography|year = 1980|url=https://books.google.com/books?id=GfRyNIyl9RkC&pg=PA35|access-date=6 अप्रैल 2012|publisher=Concept Publishing Company|pages=35–|id=GGKEY:H0N03P8ZTPB}}</ref> दानापुर मण्डल १ जनवरी १९२५ के अस्तित्वमे ऐले । वर्तमान मण्डलीय रेलवे प्रबन्धकके कार्यालय भवन १९२९ मे बनावल गेलै हल ।<ref name=danapur_gov>{{cite web|title=Danapur Division|url=http://www.ecr.indianrailways.gov.in/view_section.jsp?lang=0&id=0,6,335|work=Background|publisher=पूर्वमध्य रेल, भारत सरकारके आधिकारिक जालस्थल|access-date=6 अप्रैल 2012|url-status=live|archive-url=https://web.archive.org/web/20140506030134/http://www.ecr.indianrailways.gov.in/view_section.jsp?lang=0&id=0,6,335|archive-date=6 मई 2014}}</ref> १९४८ मे पूर्व रेल (इआर) १ अक्टूबर १९४८ के "जनता एक्सप्रेस" से जानल जाएवाला एक विशेष तृतीय श्रेणीके एक्सप्रेस ट्रेन शुरू कैलकै । ई शुरुआतमे पटना आउ दिल्लीके बीच चललै आउ बादमे १९४९ मे दिल्लीसे हावड़ा तक बढ़ावल गेलै । एह भारतमे पहिला जनता एक्सप्रेस ट्रेन हलै ।<ref name=timeline>{{cite web|title=Indian Railway History Time line|url=http://irse.bravehost.com/IRHTML.htm|access-date=7 अप्रैल 2012|url-status=dead|archive-url=https://archive.today/20120714085533/http://irse.bravehost.com/IRHTML.htm|archive-date=14 जुलाई 2012}}</ref> == चित्रदीर्घा == <gallery widths="180"> File:Patna_Junction_platform_4_to_1.jpg|पटना जङ्क्शन पर प्लेटफार्म ४ से १ File:Train_on_Platform_3_of_Patna_Junction.jpg|पटना जङ्क्शनके प्लेटफार्म ३ पर खड़ा एगो पैसेञ्जर ट्रेन File:Howrah-New_Delhi_Duronto_Express_standing_on_Patna_Junction.jpg|पटना जङ्क्शन पर खड़ा १२२७३ हावड़ा-नवदिल्ली दुरन्तो एक्सप्रेस File:Locomotive_party_at_Patna_yard_(7139628441).jpg|पटनामे डब्लुडिपि-४बि वर्गके लोकोमोटिव </gallery> == ट्रेन == === पटनासे चलेवाला ट्रेन === * [[गङ्गा दामोदर एक्सप्रेस|धनबाद - पटना गङ्गा दामोदर एक्सप्रेस]] * [[धनबाद-पटना इण्टरसिटी एक्सप्रेस]] * [[पटना-हटिया पाटलिपुत्र एक्सप्रेस]] * [[एर्णाकुलम्-पटना सुपरफास्ट एक्सप्रेस|एर्णाकुलम्-पटना सुपरफास्ट एक्सप्रेस (आसनसोल होके)]] * [[पटना-मुम्बई सिएसएमटि सुपरफास्ट एक्सप्रेस]] * [[पटना-कोटा एक्सप्रेस]] * [[हावड़ा-पटना जनशताब्दी एक्सप्रेस]] * [[पटना-राँची जनशताब्दी एक्सप्रेस]] * [[पटना-हावड़ा वन्देभारत एक्सप्रेस]] * [[पटना-राँची वन्देभारत एक्सप्रेस]] == निकटतम विमानस्थल == पटना जङ्क्शनके सबसे निकटतम विमानस्थल हे:{{उद्धरण आवश्यक|date=अप्रैल 2018}} # [[लोकनायक जयप्रकाश विमानस्थल]], पटना ५ किमी (३.१ मील) # [[गया विमानस्थल]] १०८ किलोमीटर (६७ मील) # [[दरभङ्गा विमानस्थल]] १३८ किलोमीटर (८६ मील) == लोकप्रिय संस्कृतिमे == * पटना जङ्क्शन [[हिन्दी चलच्चित्र|बालीवुड]] चलच्चित्र हाफ गर्लफ्रेण्डके फिल्माङ्कन स्थलमे से एगो हलै । == एकरो देखल जाये == {{Portal bar|भारत|परिवहन|रेलवे}} * [[पटना मेट्रो]] == टिप्पणी == {{टिप्पणीसूची|group="lower-alpha"}} == सन्दर्भ == {{टिप्पणीसूची}} == बाहरी कड़ी == {{Commons}} * [http://indiarailinfo.com/station/map/332 पटना जङ्क्शन मानचित्र] * [https://web.archive.org/web/20100416105758/http://www.patna.nic.in/ पटना जिलाके आधिकारिक जालस्थल] {{बिहारमे रेलवे स्टेशन}} {{पटना}} {{बिहारमे परिवहन}} [[श्रेणी:भारतमे १८६२ मे खुलल रेलवे स्टेशन]] [[श्रेणी:दानापुर रेल मण्डल]] [[श्रेणी:पटनामे रेलवे स्टेशन]] [[श्रेणी:पटना जिलामे रेलवे स्टेशन]] [[श्रेणी:बिहारमे रेलवे जङ्क्शन स्टेशन]] [[श्रेणी:भारतीय रेलके एआइ श्रेणीके स्टेशन]] 1akgd4dm7cctdbvohnq3i1lrt3myg4j साँचा:Font color 10 18276 80382 2026-09-21T16:27:37Z ऐक्टिवेटेड् 76 "<includeonly>{{ safesubst:#if: {{{text|{{{3|}}}}}} | {{ safesubst:#if: {{{link|}}} | {{ safesubst:#ifeq: {{{link|}}} | yes | [[ {{ safesubst:#if:trim | {{{text|{{{3|}}}}}} }}|<span style="background-color:{{ safesubst:#if:trim | {{{bg|{{{2|inherit}}}}}} }}; color:{{ safesubst:#if:trim | {{{fg|{{{1|inherit}}}}}} }};">{{ safesubst:#if:trim | {{{text|{{{3|}}}}}} }}</span>]] | {{{link|}}}|<span style="..." सङ्गे नया पन्ना बनावल गेलै 80382 wikitext text/x-wiki <includeonly>{{ safesubst:#if: {{{text|{{{3|}}}}}} | {{ safesubst:#if: {{{link|}}} | {{ safesubst:#ifeq: {{{link|}}} | yes | [[ {{ safesubst:#if:trim | {{{text|{{{3|}}}}}} }}|<span style="background-color:{{ safesubst:#if:trim | {{{bg|{{{2|inherit}}}}}} }}; color:{{ safesubst:#if:trim | {{{fg|{{{1|inherit}}}}}} }};">{{ safesubst:#if:trim | {{{text|{{{3|}}}}}} }}</span>]] | [[{{{link|}}}|<span style="background-color:{{ safesubst:#if:trim | {{{bg|{{{2|inherit}}}}}} }}; color:{{ safesubst:#if:trim | {{{fg|{{{1|inherit}}}}}} }};">{{ safesubst:#if:trim | {{{text|{{{3|}}}}}} }}</span>]] }} | <span style="background-color:{{ safesubst:#if:trim | {{{bg|{{{2|inherit}}}}}} }}; color:{{ safesubst:#if:trim | {{{fg|{{{1|inherit}}}}}} }};">{{ safesubst:#if:trim | {{{text|{{{3|}}}}}} }}</span> }} | {{ safesubst:#if: {{{link|}}} | {{ safesubst:#ifeq: {{{link|}}} | yes | [[ {{ safesubst:#if:trim | {{{bg|{{{2|}}}}}} }} |<span style="color:{{ safesubst:#if:trim | {{{fg|{{{1|inherit}}}}}} }};">{{ safesubst:#if:trim | {{{bg|{{{2|}}}}}} }}</span>]] | [[ {{ safesubst:#if:trim | {{{link|}}} }} |<span style="color:{{ safesubst:#if:trim | {{{fg|{{{1|inherit}}}}}} }};">{{ safesubst:#if:trim | {{{bg|{{{2|}}}}}} }}</span>]] }} | <span style="color:{{ safesubst:#if:trim | {{{fg|{{{1|inherit}}}}}} }};">{{ safesubst:#if:trim | {{{bg|{{{2|}}}}}} }}</span> }} }}</includeonly><noinclude> {{documentation}} </noinclude> ie83cnoicyekcaw9x4vxa0nhbwv8ull साँचा:Rail icon 10 18277 80384 2026-09-21T16:30:14Z ऐक्टिवेटेड् 76 "<includeonly>{{#invoke:Adjacent stations|icon}}</includeonly><noinclude> {{documentation}} </noinclude>" सङ्गे नया पन्ना बनावल गेलै 80384 wikitext text/x-wiki <includeonly>{{#invoke:Adjacent stations|icon}}</includeonly><noinclude> {{documentation}} </noinclude> nf44jlki17lvz51z36jzomdujd55y7h 80385 80384 2026-09-21T16:30:58Z ऐक्टिवेटेड् 76 ऐक्टिवेटेड् पन्ना [[साँचा:Ric]] के [[साँचा:Rail icon]] पर स्थानान्तरित कैलन 80384 wikitext text/x-wiki <includeonly>{{#invoke:Adjacent stations|icon}}</includeonly><noinclude> {{documentation}} </noinclude> nf44jlki17lvz51z36jzomdujd55y7h साँचा:Ric 10 18278 80386 2026-09-21T16:30:58Z ऐक्टिवेटेड् 76 ऐक्टिवेटेड् पन्ना [[साँचा:Ric]] के [[साँचा:Rail icon]] पर स्थानान्तरित कैलन 80386 wikitext text/x-wiki #REDIRECT [[साँचा:Rail icon]] 9rz1ljk67i1rd68wuvjct4k6q47pijk साँचा:Indian railway code 10 18280 80388 2026-09-21T16:48:02Z ऐक्टिवेटेड् 76 "<noinclude> <table style="float:right;"><td>{{Infobox | label1 = सङ्केत | data1 = </noinclude> {{{code<includeonly>|</includeonly>}}}{{ #if:{{{zone<includeonly>|</includeonly>}}} |</td></tr><tr> <th>[[भारतीय रेल#रेल क्षेत्र|क्षेत्र(सभ)]]</th> <td>{{{zone}}} }}{{ #if:{{{division<includeonly>|</includeonly>}}} |</td></tr><tr> <th>भारतीय र..." सङ्गे नया पन्ना बनावल गेलै 80388 wikitext text/x-wiki <noinclude> <table style="float:right;"><td>{{Infobox | label1 = सङ्केत | data1 = </noinclude> {{{code<includeonly>|</includeonly>}}}{{ #if:{{{zone<includeonly>|</includeonly>}}} |</td></tr><tr> <th>[[भारतीय रेल#रेल क्षेत्र|क्षेत्र(सभ)]]</th> <td>{{{zone}}} }}{{ #if:{{{division<includeonly>|</includeonly>}}} |</td></tr><tr> <th>[[भारतीय रेल#रेल क्षेत्र|विभाग(सभ)]]</th> <td>{{{division}}} }}<noinclude> </td></table> }} {{documentation|content= एह साँचाके प्रयोग [[भारतीय रेल]]के स्टेशनला {{tl|ज्ञानसन्दूक स्टेशन}} मे सङ्केत/विभाग/क्षेत्र जोड़ेला कैल जा हे । == Usage == <syntaxhighlight lang="wikitext"> {{ज्ञानसन्दूक स्टेशन | name = ... | code = {{Indian railway code | code = | zone = | division = }} }} </syntaxhighlight> }} [[श्रेणी:रेल परिवहन ज्ञानसन्दूक साँचा]] </noinclude> 9zevwgvwnd7yuh1xfflsufrbv27on39 80390 80388 2026-09-21T16:50:39Z ऐक्टिवेटेड् 76 80390 wikitext text/x-wiki <noinclude> <table style="float:right;"><td>{{Infobox | label1 = सङ्केत | data1 = </noinclude> {{{code<includeonly>|</includeonly>}}}{{ #if:{{{zone<includeonly>|</includeonly>}}} |</td></tr><tr> <th>[[भारतीय रेल#रेल क्षेत्र|क्षेत्र(सभ)]]</th> <td>{{{zone}}} }}{{ #if:{{{division<includeonly>|</includeonly>}}} |</td></tr><tr> <th>[[भारतीय रेल#रेल क्षेत्र|विभाग(सभ)]]</th> <td>{{{division}}} }}<noinclude> </td></table> }} {{documentation|content= एह साँचाके प्रयोग [[भारतीय रेल]]के स्टेशनला {{tl|ज्ञानसन्दूक स्टेशन}} मे सङ्केत/विभाग/क्षेत्र जोड़ेला कैल जा हे । == प्रयोग == <syntaxhighlight lang="wikitext"> {{ज्ञानसन्दूक स्टेशन | name = ... | code = {{Indian railway code | code = | zone = | division = }} }} </syntaxhighlight> }} [[श्रेणी:रेल परिवहन ज्ञानसन्दूक साँचा]] </noinclude> o5vw12gw4xox77avt2iczi4epf4q3lp साँचा:Access icon 10 18281 80389 2026-09-21T16:49:05Z ऐक्टिवेटेड् 76 "[[File:Wheelchair symbol.svg|class=skin-invert-image|{{#if:{{{1|}}}|{{{1}}}|12px}}|{{{2|Disabled access}}}|link={{{3|Accessibility}}}]]<noinclude> {{documentation}} </noinclude>" सङ्गे नया पन्ना बनावल गेलै 80389 wikitext text/x-wiki [[File:Wheelchair symbol.svg|class=skin-invert-image|{{#if:{{{1|}}}|{{{1}}}|12px}}|{{{2|Disabled access}}}|link={{{3|Accessibility}}}]]<noinclude> {{documentation}} </noinclude> cl5y5zgp77m9z4hsd5nkn21m9otca6g साँचा:Parking symbol 10 18282 80391 2026-09-21T16:51:04Z ऐक्टिवेटेड् 76 "[[File:{{#ifeq:{{{bg|}}}|blue|Centro free car parking large.svg|Centro other car parking large.svg}}|{{{size|15}}}px|{{{notes|Car parking}}}]]<noinclude> {{Documentation|content= == प्रयोग: == <code>'''<nowiki>{{Parking symbol|bg=blue|size=</nowiki>'''''n'''''<nowiki>|notes=</nowiki>'''''text'''''<nowiki>}}</nowiki>'''</code> * If <code>bg=blue</code> is specified, then a white on blue background symbol ([..." सङ्गे नया पन्ना बनावल गेलै 80391 wikitext text/x-wiki [[File:{{#ifeq:{{{bg|}}}|blue|Centro free car parking large.svg|Centro other car parking large.svg}}|{{{size|15}}}px|{{{notes|Car parking}}}]]<noinclude> {{Documentation|content= == प्रयोग: == <code>'''<nowiki>{{Parking symbol|bg=blue|size=</nowiki>'''''n'''''<nowiki>|notes=</nowiki>'''''text'''''<nowiki>}}</nowiki>'''</code> * If <code>bg=blue</code> is specified, then a white on blue background symbol ([[File:Centro free car parking large.svg|15px]]) is inserted instead. * The default size of the icon is 15 pixels high, but can be changed by the <code>size=</code> parameter. * The notes parameter is displayed as a [[tooltip]]. The default is <span style="background-color:#ffc; border:1px solid darkgray;">&nbsp;{{small|'''Car parking'''}}&nbsp;</span>. }} [[श्रेणी:प्रतीक साँचा|पार्किङ्ग प्रतीक]] </noinclude> 24xayps1e3ohkwk6h7fu72l5yunp0b5 साँचा:Rail pass box 10 18283 80392 2026-09-21T16:53:12Z ऐक्टिवेटेड् 76 "<includeonly>{{ज्ञानसन्दूक | child = yes | decat = yes | header1 = {{#if:{{{subtitle|}}}|{{{subtitle}}}}} | label2 = {{#ifeq:{{yesno-yes|{{{yearonly|}}}}}|yes||यात्री}} {{#if:{{{pass_year|}}}|{{#ifeq:{{yesno-yes|{{{yearonly|}}}}}|yes|{{{pass_year}}}|({{{pass_year}}})}}}} | data2 = {{#if:{{{passengers|}}}|{{{passengers}}}{{#if:{{{pass_percent|}}}|&emsp;{{#ifexpr:{{{pass_percent}}} > 0|..." सङ्गे नया पन्ना बनावल गेलै 80392 wikitext text/x-wiki <includeonly>{{ज्ञानसन्दूक | child = yes | decat = yes | header1 = {{#if:{{{subtitle|}}}|{{{subtitle}}}}} | label2 = {{#ifeq:{{yesno-yes|{{{yearonly|}}}}}|yes||यात्री}} {{#if:{{{pass_year|}}}|{{#ifeq:{{yesno-yes|{{{yearonly|}}}}}|yes|{{{pass_year}}}|({{{pass_year}}})}}}} | data2 = {{#if:{{{passengers|}}}|{{{passengers}}}{{#if:{{{pass_percent|}}}|&emsp;{{#ifexpr:{{{pass_percent}}} > 0|{{profit}}|{{#ifexpr:{{{pass_percent}}} < 0|{{loss}}|{{steady}}}}}}&nbsp;{{#expr:abs {{{pass_percent}}}}}%}}{{#if:{{{system|}}}|&#32;({{{system}}})}}}} | label3 = {{pad}}इण्टर्चेञ्ज | data3 = {{#if:{{{interchange|}}}|{{{interchange}}}{{#if:{{{int_percent|}}}|&emsp;{{#ifexpr:{{{int_percent}}} > 0|{{profit}}|{{#ifexpr:{{{int_percent}}} < 0|{{loss}}|{{steady}}}}}}&nbsp;{{#expr:abs {{{int_percent}}}}}%}}}} | label4 = श्रेणी | data4 = {{{pass_rank|}}} }}</includeonly><noinclude> {{Documentation}} </noinclude> 1566rzk7qvrd456xhye82dgnckcirgv साँचा:BSto 10 18284 80393 2026-09-21T16:58:24Z ऐक्टिवेटेड् 76 "<includeonly><templatestyles src="Routemap/styles.css"/>{{#invoke:Routemap|BSto}}</includeonly><noinclude> {{Documentation}} </noinclude>" सङ्गे नया पन्ना बनावल गेलै 80393 wikitext text/x-wiki <includeonly><templatestyles src="Routemap/styles.css"/>{{#invoke:Routemap|BSto}}</includeonly><noinclude> {{Documentation}} </noinclude> svfqvnjr6balfzm8aeglcrizkw1kx2q साँचा:पटनामे रेल 10 18285 80397 2026-09-21T17:20:55Z ऐक्टिवेटेड् 76 "{{routemap |title = पटनामे रेल |collapse =<includeonly>yes</includeonly> |navbar = पटनामे रेल |map = ~~किमी~~ CONTg\\~~ ~~ ~~{{BSto|[[हावड़ा–दिल्ली मुख्य रेलमार्ग]]|[[पटना–मुगलसराय रेलखण्ड]]}} जाइत WASSERl\WASSERq\hKRZWae\WASSERq\WASSERq\WASSER+r\~~ ~~ ~~[[सोन नदी]]..." सङ्गे नया पन्ना बनावल गेलै 80397 wikitext text/x-wiki {{routemap |title = पटनामे रेल |collapse =<includeonly>yes</includeonly> |navbar = पटनामे रेल |map = ~~किमी~~ CONTg\\~~ ~~ ~~{{BSto|[[हावड़ा–दिल्ली मुख्य रेलमार्ग]]|[[पटना–मुगलसराय रेलखण्ड]]}} जाइत WASSERl\WASSERq\hKRZWae\WASSERq\WASSERq\WASSER+r\~~ ~~ ~~[[सोन नदी]] पार [[कोइलवार सेतु]] \STR\\\WASSER~~ ~~ ~~[[गङ्गा]] \STR+GRZq\\\WASSER~~''{{BSsplit|[[भोजपुर जिला, भारत|भोजपुर जिला]]|[[पटना जिला]]|line=-}}'' \HST\\\WASSER~~३०~~पाली ए (हाल्ट) \HST\\\WASSER~~२७~~{{rws|बिहटा}} \STR\FLUG\\WASSER~~[[बिहटा वायुसेना स्टेशन|बिहता एएफएस]] \HST\\\WASSER~~१५~~{{rws|नेओरा}} \BHF\\\WASSER~~१०~~{{rws|दानापुर}} \ABZgl\BHFq\STR2+r\WASSER!~STRc3~~१२~~{{rws|पाटलिपुत्र जङ्क्शन}} \\STR\\STRc1\WKRZ2+4u\STRc3~~ \\STR\\\WASSER!~STRc1\CONT4~~{{BSto|[[दीघा-सोनपुर सेतु]]|उत्तर बिहार जाइत}} \\HST\\\WASSER\~~६~~{{rws|फुलवारी शरीफ}} \\STR\FLUG\\WASSER\~~[[जयप्रकाश नारायण विमानस्थल|पटना विमानस्थल]] \\ABZgl\STRq\KDSTeq\WASSER\~~८~~दीघा घाट/एफसिआइ गोदाम \\HST\\WASSER+l\WASSERr\~~२~~सचिवालय हाल्ट CONTg\STR\\WASSER\~~[[पटना-गया रेलमार्ग]] HST2\STR!~STRc3\\WASSER\~~६~~परसा बजार (हाल्ट) STRc1\ABZg+4\\WASSER\ BHF\WASSER+l\WASSERr~~०~~'''{{rws|पटना जङ्क्शन}}''' BHF\WASSER\~~३~~{{rws|राजेन्द्र नगर टर्मिनल}} HST\WASSER\~~७~~{{rws|गुलजारबाग}} HST\WASSER\~~१०~~{{rws|पटना साहिब}} HST\WASSER\~~१३~~दीदारगञ्ज (हाल्ट) BHF\WASSER\~~२२~~{{rws|फतुहा जङ्क्शन}} CONTg\STR\WASSER\\~~{{BSto|[[फतुहा-तिलैया रेलमार्ग]]|हिलसा/इस्लामपुर तक}} HST2\STR!~STRc3\WASSER\\~~३२~~दानियावाँ बजार हाल्ट STRc1\ABZg+4\WASSER\\ \\HST\WASSER\\\~~३०~~कुशरूपुर (हाल्ट) \\HST\WASSER\\\~~४५~~{{rws|बख्तियारपुर जङ्क्शन}} CONTg\STR\WASSER\\~~{{BSto|[[बख्तियारपुर-तिलैया रेलमार्ग]]| बिहारशरीफ जाइत}} HST2\STR!~STRc3\WASSER\\~~{{rws|राजगीर}} STRc1\ABZg+4\WASSER\\ HST\WASSER\~~६३~~{{rws|बाढ़}} BHF\WASSER\~~८९~~{{rws|मोकामा जङ्क्शन}} HST\WASSERl\WASSER+r~~१०१~~रामपुर डुमरा हाल्ट STR+GRZq\\~~''{{BSsplit|[[पटना जिला]]|[[बेगूसराय जिला]]|line=-}}'' CONTf\\~~ ~~ ~~{{BSto|[[हावड़ा-दिल्ली मुख्य रेलमार्ग]]|[[आसनसोल-पटना रेलखण्ड]]}} जाइत }}<noinclude> स्रोत: इण्डियारेलइन्फो, गूगल मैप्स {{railway-routemap|IND}} {{बिहारमे रेल}} [[श्रेणी:भारतके रेलमार्गला साँचा]] [[श्रेणी:पटना साँचा]] </noinclude> f8ij4gyrzn85xwpvheggix0w54rlc6n 80405 80397 2026-09-21T17:39:15Z ऐक्टिवेटेड् 76 80405 wikitext text/x-wiki {{routemap |title = पटनामे रेल |collapse =<includeonly>yes</includeonly> |navbar = पटनामे रेल |map = ~~किमी~~ CONTg\\~~ ~~ ~~{{BSto|[[हावड़ा–दिल्ली मुख्य रेलमार्ग]]|[[पटना–मुगलसराय रेलखण्ड]]}} जाइत WASSERl\WASSERq\hKRZWae\WASSERq\WASSERq\WASSER+r\~~ ~~ ~~[[सोन नदी]] पार [[कोइलवार सेतु]] \STR\\\WASSER~~ ~~ ~~[[गङ्गा]] \STR+GRZq\\\WASSER~~''{{BSsplit|[[भोजपुर जिला, भारत|भोजपुर जिला]]|[[पटना जिला]]|line=-}}'' \HST\\\WASSER~~३०~~पाली ए (हाल्ट) \HST\\\WASSER~~२७~~{{rws|बिहटा}} \STR\FLUG\\WASSER~~[[बिहटा वायुसेना स्टेशन|बिहता एएफएस]] \HST\\\WASSER~~१५~~{{rws|नेओरा}} \BHF\\\WASSER~~१०~~{{rws|दानापुर}} \ABZgl\BHFq\STR2+r\WASSER!~STRc3~~१२~~{{rws|पाटलिपुत्र जङ्क्शन}} \\STR\\STRc1\WKRZ2+4u\STRc3~~ \\STR\\\WASSER!~STRc1\CONT4~~{{BSto|[[दीघा-सोनपुर सेतु]]|उत्तर बिहार जाइत}} \\HST\\\WASSER\~~६~~{{rws|फुलवारी शरीफ}} \\STR\FLUG\\WASSER\~~[[जयप्रकाश नारायण विमानस्थल|पटना विमानस्थल]] \\ABZgl\STRq\KDSTeq\WASSER\~~८~~दीघा घाट/एफसिआइ गोदाम \\HST\\WASSER+l\WASSERr\~~२~~सचिवालय हाल्ट CONTg\STR\\WASSER\~~[[पटना-गया रेलमार्ग]] HST2\STR!~STRc3\\WASSER\~~६~~परसा बजार (हाल्ट) STRc1\ABZg+4\\WASSER\ BHF\WASSER+l\WASSERr~~०~~'''{{rws|पटना जङ्क्शन}}''' BHF\WASSER\~~३~~{{rws|राजेन्द्र नगर टर्मिनल}} HST\WASSER\~~७~~{{rws|गुलजारबाग}} HST\WASSER\~~१०~~{{rws|पटना साहिब}} HST\WASSER\~~१३~~दीदारगञ्ज (हाल्ट) BHF\WASSER\~~२२~~{{rws|फतुहा जङ्क्शन}} CONTg\STR\WASSER\\~~{{BSto|[[फतुहा-तिलैया रेलमार्ग]]|हिलसा/इस्लामपुर तक}} HST2\STR!~STRc3\WASSER\\~~३२~~दानियावाँ बजार हाल्ट STRc1\ABZg+4\WASSER\\ \\HST\WASSER\\\~~३०~~कुशरूपुर (हाल्ट) \\HST\WASSER\\\~~४५~~{{rws|बख्तियारपुर जङ्क्शन}} CONTg\STR\WASSER\\~~{{BSto|[[बख्तियारपुर-तिलैया रेलमार्ग]]| बिहारशरीफ जाइत}} HST2\STR!~STRc3\WASSER\\~~{{rws|राजगीर}} STRc1\ABZg+4\WASSER\\ HST\WASSER\~~६३~~{{rws|बाढ़}} BHF\WASSER\~~८९~~{{rws|मोकामा जङ्क्शन}} HST\WASSERl\WASSER+r~~१०१~~रामपुर डुमरा हाल्ट STR+GRZq\\~~''{{BSsplit|[[पटना जिला]]|[[बेगूसराय जिला]]|line=-}}'' CONTf\\~~ ~~ ~~{{BSto|[[हावड़ा-दिल्ली मुख्य रेलमार्ग]]|[[आसनसोल-पटना रेलखण्ड]]}} जाइत }}<noinclude> स्रोत: इण्डियारेलइन्फो, गूगल मैप्स {{railway-routemap|भारत}} {{बिहारमे रेल}} [[श्रेणी:भारतके रेलमार्गला साँचा]] [[श्रेणी:पटना साँचा]] </noinclude> mxk1gwgbail7286wtty63gp0z0x2tl0 साँचा:पटनामे रेलवे 10 18286 80398 2026-09-21T17:21:49Z ऐक्टिवेटेड् 76 [[साँचा:पटनामे रेल]] के पुनर्निर्देशित 80398 wikitext text/x-wiki #REDIRECT [[साँचा:पटनामे रेल]] cijfgda11um9fhxpl4meishaep5fr90 साँचा:पटना में रेलवे 10 18287 80399 2026-09-21T17:21:51Z ऐक्टिवेटेड् 76 [[साँचा:पटनामे रेल]] के पुनर्निर्देशित 80399 wikitext text/x-wiki #REDIRECT [[साँचा:पटनामे रेल]] cijfgda11um9fhxpl4meishaep5fr90 साँचा:Railways in Patna 10 18288 80400 2026-09-21T17:21:55Z ऐक्टिवेटेड् 76 [[साँचा:पटनामे रेल]] के पुनर्निर्देशित 80400 wikitext text/x-wiki #REDIRECT [[साँचा:पटनामे रेल]] cijfgda11um9fhxpl4meishaep5fr90 साँचा:Railway division link 10 18289 80406 2026-09-21T17:58:31Z ऐक्टिवेटेड् 76 "[[{{{1}}} रेल विभाग|{{{1}}}]]<noinclude> {{documentation}}</noinclude>" सङ्गे नया पन्ना बनावल गेलै 80406 wikitext text/x-wiki [[{{{1}}} रेल विभाग|{{{1}}}]]<noinclude> {{documentation}}</noinclude> lz1qyhq38mk06mfnjbt3uoibwlwtk2w 80407 80406 2026-09-21T17:59:23Z ऐक्टिवेटेड् 76 ऐक्टिवेटेड् पन्ना [[साँचा:Rwd]] के [[साँचा:Railway division link]] पर स्थानान्तरित कैलन 80406 wikitext text/x-wiki [[{{{1}}} रेल विभाग|{{{1}}}]]<noinclude> {{documentation}}</noinclude> lz1qyhq38mk06mfnjbt3uoibwlwtk2w साँचा:Rwd 10 18290 80408 2026-09-21T17:59:24Z ऐक्टिवेटेड् 76 ऐक्टिवेटेड् पन्ना [[साँचा:Rwd]] के [[साँचा:Railway division link]] पर स्थानान्तरित कैलन 80408 wikitext text/x-wiki #REDIRECT [[साँचा:Railway division link]] 02y1plq8la2c6kzt9v7nopszyns03d2 साँचा:बिहारमे परिवहन 10 18291 80410 2026-09-21T18:07:24Z ऐक्टिवेटेड् 76 "{{navbox | name = बिहारमे परिवहन | title = [[बिहारमे परिवहन]] | bodyclass = hlist | state = {{{state<includeonly>|collapsed</includeonly>}}} | border = {{{border|{{{1|}}}}}} | group1 = सङ्गठन | list1 = {{navbox | subgroup | groupstyle = text-align: left;background-color: #eee; | groupwidth = 8em | group1 = योजना आउ प्रशासन | lis..." सङ्गे नया पन्ना बनावल गेलै 80410 wikitext text/x-wiki {{navbox | name = बिहारमे परिवहन | title = [[बिहारमे परिवहन]] | bodyclass = hlist | state = {{{state<includeonly>|collapsed</includeonly>}}} | border = {{{border|{{{1|}}}}}} | group1 = सङ्गठन | list1 = {{navbox | subgroup | groupstyle = text-align: left;background-color: #eee; | groupwidth = 8em | group1 = योजना आउ प्रशासन | list1 = * [[बिहार नगरी बुनियादी ढाँचा विकास निगम]] | group2 = [[भारत सरकार|केन्द्रीय संस्था]] | list2 = * [[नागरिक उड्डयन मन्त्रालय (भारत)|नागरिक उड्डयन मन्त्रालय]] ** [[भारतीय विमानस्थल प्राधिकरण]] ** [[नागरिक उड्डयन महानिदेशालय (भारत)|नागरिक उड्डयन महानिदेशालय]] * [[रेल मन्त्रालय (भारत)|रेल मन्त्रालय]] ** [[भारतीय रेल]] ** [[रेल व्हील प्लाण्ट, बेला|रेल व्हील प्लाण्ट]] ** [[भारत वैगन एण्ड इञ्जीनियरिङ्ग]] ** [[उत्तर रेल (भारत)|उत्तर रेल]] * [[पोत परिवहन मन्त्रालय (भारत)|पोत परिवहन मन्त्रालय]] | group3 = [[बिहार सरकार|राज्य संस्था]] | list3 = * [[बिहार राज्य सड़क विकास निगम]] * [[बिहार राज्य सड़क परिवहन निगम]] * [[बिहार पुलिस|बिहार यातायात पुलिस]] | group4 = [[भारतीय सशस्त्र बल]] | list4 = * [[भारतीय वायुसेना]] * [[भारतीय तटरक्षक बल]] * [[भारतीय नौसेना]] ** [[भारतीय नौसेना वायु शाखा|नौसेना वायु शाखा]] * [[भारतीय थलसेना]] ** [[आर्म्ड व्हीकल्स निगम]] | group5 = अन्य | list5 = * [[पटना मेट्रो|पटना मेट्रो रेल निगम]] }} | group2 = वायु | list2 = {{navbox | subgroup | groupstyle = text-align: left;background-color: #eee; | groupwidth = 8em | group1 = [[भारतके विमानस्थलके सूची|नागरिक]] | list1 = * [[जयप्रकाश नारायण विमानस्थल]] * [[गया विमानस्थल]] * [[दरभङ्गा विमानस्थल]] * [[पूर्णिया विमानस्थल]] | group2 = [[भारतीय वायुसेना अड्डाके सूची|सेना]] | list2 = * [[बिहटा वायुसेना स्टेशन]] * [[सबेया विमानस्थल]] }} | group3 = रेल | list3 = {{Navbox|subgroup|groupwidth = 5em |group1 = [[साँचा:बिहारमे रेलवे स्टेशन|रेलवे स्टेशन]] |list1 ={{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 3.5em |group1=[[पूर्वमध्य रेल क्षेत्र|पूम]] |list1= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 2em |group1= {{rwd|दानापुर}} |list1= *{{Stnlnk|आरा जङ्क्शन}} *{{Stnlnk|बख्तियारपुर जङ्क्शन}} *{{Stnlnk|बाढ़}} *{{Stnlnk|बरहिया}} *{{Stnlnk|बिहारशरीफ जङ्क्शन}} *{{Stnlnk|बिहटा}} *{{Stnlnk|बक्सर}} *{{Stnlnk|दानापुर}} *{{Stnlnk|दीघा ब्रिज हाल्ट}} *{{Stnlnk|फतुहा जङ्क्शन}} *{{Stnlnk|गुलजारबाग}} *{{Stnlnk|हाथिदाह जङ्क्शन}} *{{Stnlnk|हरनौत}} *{{Stnlnk|जहानाबाद}} *{{Stnlnk|जमुई}} *{{Stnlnk|झाझा}} *{{Stnlnk|खुसरोपुर}} *{{Stnlnk|किऊल जङ्क्शन}} *{{Stnlnk|लखीसराय जङ्क्शन}} *{{Stnlnk|मोकामा जङ्क्शन}} *{{Stnlnk|नालन्दा}} *{{Stnlnk|नवादा}} *{{Stnlnk|नोओरा}} *{{Stnlnk|पाटलिपुत्र जङ्क्शन}} *{{Stnlnk|पटना जङ्क्शन}} *{{Stnlnk|पटना साहिब}} *{{Stnlnk|फुलवारीशरीफ}} *{{Stnlnk|राजेन्द्र नगर टर्मिनल}} *{{Stnlnk|राजगीर}} *{{Stnlnk|सिलाओ}} *{{Stnlnk|तिलैया जङ्क्शन}} *{{Stnlnk|वारिसलीगञ्ज}} |group2= {{rwd|पण्डित दीन दयाल उपाध्याय}} |list2= *{{Stnlnk|अनुग्रह नारायण रोड}} *{{Stnlnk|भभुआ रोड}} *{{Stnlnk|डेहरी-आन-सोन}} *{{Stnlnk|गया जङ्क्शन}} *{{Stnlnk|सासाराम जङ्क्शन}} *{{Stnlnk|सोननगर जङ्क्शन}} |group3= {{rwd|समस्तीपुर}} |list3= *{{Stnlnk|अमोलवा}} *{{Stnlnk|बाबा रघुनी हाल्ट द्वारिका}} *{{Stnlnk|बनमनखी जङ्क्शन}} *{{Stnlnk|बापूधाम मोतिहारी}} *{{Stnlnk|बरहरा कोठी}} *{{Stnlnk|भिखना थोरी}} *{{Stnlnk|भितिहरवा आश्रम}} *{{Stnlnk|दरभङ्गा जङ्क्शन}} *[[दौरम मधेपुरा रेलवे स्टेशन|दौरम मधेपुरा]] *{{Stnlnk|गौनाहा}} *{{Stnlnk|जयनगर}} *{{Stnlnk|जनकपुर रोड}} *{{Stnlnk|कपरपुरा}} *{{Stnlnk|लहेरियासराय}} *{{Stnlnk|लौकहा बजार}} *{{Stnlnk|मधुबनी}} *{{Stnlnk|मिथिला दीप}} *{{Stnlnk|नरकटियागञ्ज जङ्क्शन}} *{{Stnlnk|पूर्णिया कोर्ट}} *{{Stnlnk|रक्सौल जङ्क्शन}} *{{Stnlnk|सगौली जङ्क्शन}} *{{Stnlnk|सहरसा जङ्क्शन}} *[[सिमरी बख्तियारपुर रेलवे स्टेशन|सिमरी बख्तियारपुर]] *{{Stnlnk|सोनबरसा कचहरी}} *{{Stnlnk|समस्तीपुर जङ्क्शन}} *{{Stnlnk|सीतामढ़ी जङ्क्शन}} |group4= {{rwd|सोनपुर}} |list4= *{{Stnlnk|अक्षयवत राय नगर}} *{{Stnlnk|बरौनी जङ्क्शन}} *{{Stnlnk|बेगूसराय}} *{{Stnlnk|भरपुरा पहलेजा घाट जङ्क्शन}} *{{Stnlnk|चक सिकन्दर}} *{{Stnlnk|देसारी}} *{{Stnlnk|हाजीपुर जङ्क्शन}} *{{Stnlnk|खगड़िया जङ्क्शन}} *{{Stnlnk|खुदीराम बोस पूसा}} *{{Stnlnk|मोहिउद्दीननगर}} *{{Stnlnk|मुजफ्फरपुर जङ्क्शन}} *{{Stnlnk|राम दयालु नगर}} *{{Stnlnk|नयागाँव}} *{{Stnlnk|सोनपुर जङ्क्शन}} }} |group2=[[पूर्व रेल क्षेत्र|पूर्व]] |list2= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|मालदा}} |list1= *{{Stnlnk|बाँका जङ्क्शन}} *{{Stnlnk|भागलपुर जङ्क्शन}} *{{Stnlnk|जमालपुर जङ्क्शन}} *{{Stnlnk|मन्दार हिल}} *{{Stnlnk|मुङ्गेर}} *{{Stnlnk|पूरबसराय}} *{{Stnlnk|सुल्तानगञ्ज}} }} |group3= [[पूर्वोत्तर रेल क्षेत्र|पूर्वोत्तर]] |list3= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|वाराणसी}} |list1= *{{Stnlnk|छपरा जङ्क्शन}} *{{Stnlnk|दुरौन्धा जङ्क्शन}} *{{Stnlnk|सिवान जङ्क्शन}} }} |group4= [[पूर्वोत्तर सीमान्त रेल क्षेत्र|पूर्वोत्तर सीमान्त]] |list4= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|कटिहार}} |list1= *{{Stnlnk|बारसोई जङ्क्शन}} *{{Stnlnk|कटिहार जङ्क्शन}} *{{Stnlnk|किशनगञ्ज}} *{{Stnlnk|पूर्णिया जङ्क्शन}} *{{Stnlnk|तेजनारायणपुर}} *{{Stnlnk|ठाकुरगञ्ज}} }} }} |group2 = [[पटना मेट्रो|मेट्रो स्टेशन]] |list2 = {{Navbox|subgroup |groupwidth=5em| groupstyle = line-height:1.5em; | group2style = {{box-shadow border|r|#{{rail color|Patna Metro|Red}}|2.5px}} | group1style = {{box-shadow border|r|#{{rail color|Patna Metro|Blue}}|2.5px}} | group1 = [[नीला मार्ग (पटना मेट्रो)|नीला मार्ग]] | list1 = * {{stl|Patna Metro|पटना जङ्क्शन}} * {{stl|Patna Metro|आकाशवाणी}} * {{stl|Patna Metro|गान्धी मैदान}} * {{stl|Patna Metro|पिएमसिएच}} * {{stl|Patna Metro|पटना साइन्स कालेज}} * {{stl|Patna Metro|मोइन-उल-हक स्टेडियम}} * {{stl|Patna Metro|राजेन्द्र नगर}} * {{stl|Patna Metro|मलही पकड़ी}} * {{stl|Patna Metro|खेमनीचक}} * {{stl|Patna Metro|भूतनाथ}} * {{stl|Patna Metro|जीरो माइल}} * {{stl|Patna Metro|पाटलिपुत्र बस टर्मिनल}} | group2 = [[लाल मार्ग (पटना मेट्रो)|लाल मार्ग]] | list2 = * {{stl|Patna Metro|दानापुर छावनी}} * {{stl|Patna Metro|सगुना मोड़}} * {{stl|Patna Metro|आरपिएस मोर}} * {{stl|Patna Metro|पाटलिपुत्र}} * {{stl|Patna Metro|रूकनपुरा}} * {{stl|Patna Metro|राजा बाज़ार}} * {{stl|Patna Metro|पटना चिड़ियाघर}} * {{stl|Patna Metro|विकास भवन}} * {{stl|Patna Metro|विद्युत भवन}} * {{stl|Patna Metro|पटना जङ्क्शन}} * {{stl|Patna Metro|मीठापुर}} * {{stl|Patna Metro|रामकृष्ण नगर}} * {{stl|Patna Metro|जगनपुरा}} }} }} | group4 = सड़क | list4 = {{Navbox|subgroup|groupwidth = 13em |group1 = [[अन्तःराज्यीय बस टर्मिनल|बस टर्मिनल]] |list1 = * [[पाटलिपुत्र अन्तःराज्यीय बस टर्मिनल]] |group2 = [[बिहारमे परिवहन#एक्सप्रेसवे|राजमार्ग/द्रुतमार्ग]] |list2 = * [[बाहरी रिङ्ग रोड, पटना]] * [[लोकनायक गङ्गा पथ|पटना मरीन ड्राइव]] * [[हल्दिया-रक्सौल एक्सप्रेसवे]] }} <!-- Group 5 के जानबूझके खाली छोड़ल गेलै --> | group6 = जल | list6 = * [[राष्ट्रिय जलमार्ग १]] * [[बिहटा शुष्क बन्दरगाह|बिहटा बन्दरगाह]] <!-- | group7 = अन्य | list7 = * [[बिहारमे परिवहन]]--> | below = * {{icon|category}} '''[[:श्रेणी:बिहारमे परिवहन|श्रेणी]]''' * {{Icon|Commons}} [[commons:श्रेणी:Transport in Bihar|'''कामन्स''']] * {{Icon|WikiProject}} '''[[विकिपीडिया:विकिपरियोजना बिहार|विकिपरियोजना]]''' }}<noinclude> {{Documentation|content= {{Align|right|{{Check completeness of transclusions}}}} {{collapsible option}} }} [[श्रेणी:बिहार साँचा]] [[श्रेणी:बिहारमे परिवहन| ]] [[श्रेणी:भारत परिवहन साँचा]] </noinclude> hudr7w2mcc73huzi8gijwenxhyaulod 80411 80410 2026-09-21T18:08:01Z ऐक्टिवेटेड् 76 ऐक्टिवेटेड् पन्ना [[साँचा:Transport in Bihar]] के [[साँचा:बिहारमे परिवहन]] पर स्थानान्तरित कैलन 80410 wikitext text/x-wiki {{navbox | name = बिहारमे परिवहन | title = [[बिहारमे परिवहन]] | bodyclass = hlist | state = {{{state<includeonly>|collapsed</includeonly>}}} | border = {{{border|{{{1|}}}}}} | group1 = सङ्गठन | list1 = {{navbox | subgroup | groupstyle = text-align: left;background-color: #eee; | groupwidth = 8em | group1 = योजना आउ प्रशासन | list1 = * [[बिहार नगरी बुनियादी ढाँचा विकास निगम]] | group2 = [[भारत सरकार|केन्द्रीय संस्था]] | list2 = * [[नागरिक उड्डयन मन्त्रालय (भारत)|नागरिक उड्डयन मन्त्रालय]] ** [[भारतीय विमानस्थल प्राधिकरण]] ** [[नागरिक उड्डयन महानिदेशालय (भारत)|नागरिक उड्डयन महानिदेशालय]] * [[रेल मन्त्रालय (भारत)|रेल मन्त्रालय]] ** [[भारतीय रेल]] ** [[रेल व्हील प्लाण्ट, बेला|रेल व्हील प्लाण्ट]] ** [[भारत वैगन एण्ड इञ्जीनियरिङ्ग]] ** [[उत्तर रेल (भारत)|उत्तर रेल]] * [[पोत परिवहन मन्त्रालय (भारत)|पोत परिवहन मन्त्रालय]] | group3 = [[बिहार सरकार|राज्य संस्था]] | list3 = * [[बिहार राज्य सड़क विकास निगम]] * [[बिहार राज्य सड़क परिवहन निगम]] * [[बिहार पुलिस|बिहार यातायात पुलिस]] | group4 = [[भारतीय सशस्त्र बल]] | list4 = * [[भारतीय वायुसेना]] * [[भारतीय तटरक्षक बल]] * [[भारतीय नौसेना]] ** [[भारतीय नौसेना वायु शाखा|नौसेना वायु शाखा]] * [[भारतीय थलसेना]] ** [[आर्म्ड व्हीकल्स निगम]] | group5 = अन्य | list5 = * [[पटना मेट्रो|पटना मेट्रो रेल निगम]] }} | group2 = वायु | list2 = {{navbox | subgroup | groupstyle = text-align: left;background-color: #eee; | groupwidth = 8em | group1 = [[भारतके विमानस्थलके सूची|नागरिक]] | list1 = * [[जयप्रकाश नारायण विमानस्थल]] * [[गया विमानस्थल]] * [[दरभङ्गा विमानस्थल]] * [[पूर्णिया विमानस्थल]] | group2 = [[भारतीय वायुसेना अड्डाके सूची|सेना]] | list2 = * [[बिहटा वायुसेना स्टेशन]] * [[सबेया विमानस्थल]] }} | group3 = रेल | list3 = {{Navbox|subgroup|groupwidth = 5em |group1 = [[साँचा:बिहारमे रेलवे स्टेशन|रेलवे स्टेशन]] |list1 ={{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 3.5em |group1=[[पूर्वमध्य रेल क्षेत्र|पूम]] |list1= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 2em |group1= {{rwd|दानापुर}} |list1= *{{Stnlnk|आरा जङ्क्शन}} *{{Stnlnk|बख्तियारपुर जङ्क्शन}} *{{Stnlnk|बाढ़}} *{{Stnlnk|बरहिया}} *{{Stnlnk|बिहारशरीफ जङ्क्शन}} *{{Stnlnk|बिहटा}} *{{Stnlnk|बक्सर}} *{{Stnlnk|दानापुर}} *{{Stnlnk|दीघा ब्रिज हाल्ट}} *{{Stnlnk|फतुहा जङ्क्शन}} *{{Stnlnk|गुलजारबाग}} *{{Stnlnk|हाथिदाह जङ्क्शन}} *{{Stnlnk|हरनौत}} *{{Stnlnk|जहानाबाद}} *{{Stnlnk|जमुई}} *{{Stnlnk|झाझा}} *{{Stnlnk|खुसरोपुर}} *{{Stnlnk|किऊल जङ्क्शन}} *{{Stnlnk|लखीसराय जङ्क्शन}} *{{Stnlnk|मोकामा जङ्क्शन}} *{{Stnlnk|नालन्दा}} *{{Stnlnk|नवादा}} *{{Stnlnk|नोओरा}} *{{Stnlnk|पाटलिपुत्र जङ्क्शन}} *{{Stnlnk|पटना जङ्क्शन}} *{{Stnlnk|पटना साहिब}} *{{Stnlnk|फुलवारीशरीफ}} *{{Stnlnk|राजेन्द्र नगर टर्मिनल}} *{{Stnlnk|राजगीर}} *{{Stnlnk|सिलाओ}} *{{Stnlnk|तिलैया जङ्क्शन}} *{{Stnlnk|वारिसलीगञ्ज}} |group2= {{rwd|पण्डित दीन दयाल उपाध्याय}} |list2= *{{Stnlnk|अनुग्रह नारायण रोड}} *{{Stnlnk|भभुआ रोड}} *{{Stnlnk|डेहरी-आन-सोन}} *{{Stnlnk|गया जङ्क्शन}} *{{Stnlnk|सासाराम जङ्क्शन}} *{{Stnlnk|सोननगर जङ्क्शन}} |group3= {{rwd|समस्तीपुर}} |list3= *{{Stnlnk|अमोलवा}} *{{Stnlnk|बाबा रघुनी हाल्ट द्वारिका}} *{{Stnlnk|बनमनखी जङ्क्शन}} *{{Stnlnk|बापूधाम मोतिहारी}} *{{Stnlnk|बरहरा कोठी}} *{{Stnlnk|भिखना थोरी}} *{{Stnlnk|भितिहरवा आश्रम}} *{{Stnlnk|दरभङ्गा जङ्क्शन}} *[[दौरम मधेपुरा रेलवे स्टेशन|दौरम मधेपुरा]] *{{Stnlnk|गौनाहा}} *{{Stnlnk|जयनगर}} *{{Stnlnk|जनकपुर रोड}} *{{Stnlnk|कपरपुरा}} *{{Stnlnk|लहेरियासराय}} *{{Stnlnk|लौकहा बजार}} *{{Stnlnk|मधुबनी}} *{{Stnlnk|मिथिला दीप}} *{{Stnlnk|नरकटियागञ्ज जङ्क्शन}} *{{Stnlnk|पूर्णिया कोर्ट}} *{{Stnlnk|रक्सौल जङ्क्शन}} *{{Stnlnk|सगौली जङ्क्शन}} *{{Stnlnk|सहरसा जङ्क्शन}} *[[सिमरी बख्तियारपुर रेलवे स्टेशन|सिमरी बख्तियारपुर]] *{{Stnlnk|सोनबरसा कचहरी}} *{{Stnlnk|समस्तीपुर जङ्क्शन}} *{{Stnlnk|सीतामढ़ी जङ्क्शन}} |group4= {{rwd|सोनपुर}} |list4= *{{Stnlnk|अक्षयवत राय नगर}} *{{Stnlnk|बरौनी जङ्क्शन}} *{{Stnlnk|बेगूसराय}} *{{Stnlnk|भरपुरा पहलेजा घाट जङ्क्शन}} *{{Stnlnk|चक सिकन्दर}} *{{Stnlnk|देसारी}} *{{Stnlnk|हाजीपुर जङ्क्शन}} *{{Stnlnk|खगड़िया जङ्क्शन}} *{{Stnlnk|खुदीराम बोस पूसा}} *{{Stnlnk|मोहिउद्दीननगर}} *{{Stnlnk|मुजफ्फरपुर जङ्क्शन}} *{{Stnlnk|राम दयालु नगर}} *{{Stnlnk|नयागाँव}} *{{Stnlnk|सोनपुर जङ्क्शन}} }} |group2=[[पूर्व रेल क्षेत्र|पूर्व]] |list2= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|मालदा}} |list1= *{{Stnlnk|बाँका जङ्क्शन}} *{{Stnlnk|भागलपुर जङ्क्शन}} *{{Stnlnk|जमालपुर जङ्क्शन}} *{{Stnlnk|मन्दार हिल}} *{{Stnlnk|मुङ्गेर}} *{{Stnlnk|पूरबसराय}} *{{Stnlnk|सुल्तानगञ्ज}} }} |group3= [[पूर्वोत्तर रेल क्षेत्र|पूर्वोत्तर]] |list3= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|वाराणसी}} |list1= *{{Stnlnk|छपरा जङ्क्शन}} *{{Stnlnk|दुरौन्धा जङ्क्शन}} *{{Stnlnk|सिवान जङ्क्शन}} }} |group4= [[पूर्वोत्तर सीमान्त रेल क्षेत्र|पूर्वोत्तर सीमान्त]] |list4= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|कटिहार}} |list1= *{{Stnlnk|बारसोई जङ्क्शन}} *{{Stnlnk|कटिहार जङ्क्शन}} *{{Stnlnk|किशनगञ्ज}} *{{Stnlnk|पूर्णिया जङ्क्शन}} *{{Stnlnk|तेजनारायणपुर}} *{{Stnlnk|ठाकुरगञ्ज}} }} }} |group2 = [[पटना मेट्रो|मेट्रो स्टेशन]] |list2 = {{Navbox|subgroup |groupwidth=5em| groupstyle = line-height:1.5em; | group2style = {{box-shadow border|r|#{{rail color|Patna Metro|Red}}|2.5px}} | group1style = {{box-shadow border|r|#{{rail color|Patna Metro|Blue}}|2.5px}} | group1 = [[नीला मार्ग (पटना मेट्रो)|नीला मार्ग]] | list1 = * {{stl|Patna Metro|पटना जङ्क्शन}} * {{stl|Patna Metro|आकाशवाणी}} * {{stl|Patna Metro|गान्धी मैदान}} * {{stl|Patna Metro|पिएमसिएच}} * {{stl|Patna Metro|पटना साइन्स कालेज}} * {{stl|Patna Metro|मोइन-उल-हक स्टेडियम}} * {{stl|Patna Metro|राजेन्द्र नगर}} * {{stl|Patna Metro|मलही पकड़ी}} * {{stl|Patna Metro|खेमनीचक}} * {{stl|Patna Metro|भूतनाथ}} * {{stl|Patna Metro|जीरो माइल}} * {{stl|Patna Metro|पाटलिपुत्र बस टर्मिनल}} | group2 = [[लाल मार्ग (पटना मेट्रो)|लाल मार्ग]] | list2 = * {{stl|Patna Metro|दानापुर छावनी}} * {{stl|Patna Metro|सगुना मोड़}} * {{stl|Patna Metro|आरपिएस मोर}} * {{stl|Patna Metro|पाटलिपुत्र}} * {{stl|Patna Metro|रूकनपुरा}} * {{stl|Patna Metro|राजा बाज़ार}} * {{stl|Patna Metro|पटना चिड़ियाघर}} * {{stl|Patna Metro|विकास भवन}} * {{stl|Patna Metro|विद्युत भवन}} * {{stl|Patna Metro|पटना जङ्क्शन}} * {{stl|Patna Metro|मीठापुर}} * {{stl|Patna Metro|रामकृष्ण नगर}} * {{stl|Patna Metro|जगनपुरा}} }} }} | group4 = सड़क | list4 = {{Navbox|subgroup|groupwidth = 13em |group1 = [[अन्तःराज्यीय बस टर्मिनल|बस टर्मिनल]] |list1 = * [[पाटलिपुत्र अन्तःराज्यीय बस टर्मिनल]] |group2 = [[बिहारमे परिवहन#एक्सप्रेसवे|राजमार्ग/द्रुतमार्ग]] |list2 = * [[बाहरी रिङ्ग रोड, पटना]] * [[लोकनायक गङ्गा पथ|पटना मरीन ड्राइव]] * [[हल्दिया-रक्सौल एक्सप्रेसवे]] }} <!-- Group 5 के जानबूझके खाली छोड़ल गेलै --> | group6 = जल | list6 = * [[राष्ट्रिय जलमार्ग १]] * [[बिहटा शुष्क बन्दरगाह|बिहटा बन्दरगाह]] <!-- | group7 = अन्य | list7 = * [[बिहारमे परिवहन]]--> | below = * {{icon|category}} '''[[:श्रेणी:बिहारमे परिवहन|श्रेणी]]''' * {{Icon|Commons}} [[commons:श्रेणी:Transport in Bihar|'''कामन्स''']] * {{Icon|WikiProject}} '''[[विकिपीडिया:विकिपरियोजना बिहार|विकिपरियोजना]]''' }}<noinclude> {{Documentation|content= {{Align|right|{{Check completeness of transclusions}}}} {{collapsible option}} }} [[श्रेणी:बिहार साँचा]] [[श्रेणी:बिहारमे परिवहन| ]] [[श्रेणी:भारत परिवहन साँचा]] </noinclude> hudr7w2mcc73huzi8gijwenxhyaulod साँचा:Transport in Bihar 10 18292 80412 2026-09-21T18:08:01Z ऐक्टिवेटेड् 76 ऐक्टिवेटेड् पन्ना [[साँचा:Transport in Bihar]] के [[साँचा:बिहारमे परिवहन]] पर स्थानान्तरित कैलन 80412 wikitext text/x-wiki #REDIRECT [[साँचा:बिहारमे परिवहन]] e5e9bslh0ca274z6njjese3f5b7z77k साँचा:बिहारमे रेलवे स्टेशन 10 18293 80413 2026-09-21T18:16:01Z ऐक्टिवेटेड् 76 "<!-- Please add only railway station pages, and ''not'' city/ town pages , to this Navbox -->{{Navbox | name = बिहारमे रेलवे स्टेशन | title = [[बिहार]]मे [[रेलवे स्टेशन]] | state = {{{state|autocollapse}}} | listclass = hlist |groupstyle = text-align:center; |liststyle = |evenstyle= |group1=पूर्वमध्य रेल क्षे..." सङ्गे नया पन्ना बनावल गेलै 80413 wikitext text/x-wiki <!-- Please add only railway station pages, and ''not'' city/ town pages , to this Navbox -->{{Navbox | name = बिहारमे रेलवे स्टेशन | title = [[बिहार]]मे [[रेलवे स्टेशन]] | state = {{{state|autocollapse}}} | listclass = hlist |groupstyle = text-align:center; |liststyle = |evenstyle= |group1=[[पूर्वमध्य रेल क्षेत्र|पूम]] |list1= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 5em |group1= {{rwd|दानापुर}} |list1= *{{Stnlnk|आरा जङ्क्शन}} *{{Stnlnk|बख्तियारपुर जङ्क्शन}} *{{Stnlnk|बाढ़}} *{{Stnlnk|बरहिया}} *{{Stnlnk|बिहारशरीफ जङ्क्शन}} *{{Stnlnk|बिहटा}} *{{Stnlnk|बक्सर}} *{{Stnlnk|दानापुर}} *{{Stnlnk|दीघा ब्रिज हाल्ट}} *{{Stnlnk|फतुहा जङ्क्शन}} *{{Stnlnk|गुलजारबाग}} *{{Stnlnk|हाथिदाह जङ्क्शन}} *{{Stnlnk|हरनौत}} *{{Stnlnk|जहानाबाद}} *{{Stnlnk|जमुई}} *{{Stnlnk|झाझा}} *{{Stnlnk|खुसरोपुर}} *{{Stnlnk|किऊल जङ्क्शन}} *{{Stnlnk|लखीसराय जङ्क्शन}} *{{Stnlnk|मोकामा जङ्क्शन}} *{{Stnlnk|नालन्दा}} *{{Stnlnk|नवादा}} *{{Stnlnk|नेओरा}} *{{Stnlnk|पाटलिपुत्र जङ्क्शन}} *{{Stnlnk|पटना जङ्क्शन}} *{{Stnlnk|पटना साहिब}} *{{Stnlnk|फुलवारीशरीफ}} *{{Stnlnk|राजेन्द्र नगर टर्मिनल}} *{{Stnlnk|राजगीर}} *{{Stnlnk|सिलाओ}} *{{Stnlnk|तिलैया जङ्क्शन}} *{{Stnlnk|वारिसलीगञ्ज}} |group2= {{rwd|पण्डित दीन दयाल उपाध्याय}} |list2= *{{Stnlnk|अनुग्रह नारायण रोड}} *{{Stnlnk|भभुआ रोड}} *{{Stnlnk|डेहरी-आन-सोन}} *{{Stnlnk|गया जङ्क्शन}} *{{Stnlnk|सासाराम जङ्क्शन}} *{{Stnlnk|सोननगर जङ्क्शन}} |group3= {{rwd|समस्तीपुर}} |list3= *{{Stnlnk|अमोलवा}} *{{Stnlnk|बाबा रघुनी हाल्ट द्वारिका}} *{{Stnlnk|बनमनखी जङ्क्शन}} *{{Stnlnk|बापूधाम मोतिहारी}} *{{Stnlnk|बरहरा कोठी}} *{{Stnlnk|भिखना थोरी}} *{{Stnlnk|भितिहरवा आश्रम}} *{{Stnlnk|दरभङ्गा जङ्क्शन}} *{{Stnlnk|दौरम मधेपुरा}} *{{Stnlnk|गौनाहा}} *{{Stnlnk|जयनगर}} *{{Stnlnk|जनकपुर रोड}} *{{Stnlnk|कपरपुरा}} *{{Stnlnk|लहेरियासराय}} *{{Stnlnk|लौकहा बाजार}} *{{Stnlnk|मधुबनी}} *{{Stnlnk|मिथिला दीप}} *{{Stnlnk|नरकटियागञ्ज जङ्क्शन}} *{{Stnlnk|पूर्णिया कोर्ट}} *{{Stnlnk|राघोपुर}} *{{Stnlnk|रक्सौल जङ्क्शन}} *{{Stnlnk|सगौली जङ्क्शन}} *{{Stnlnk|सहरसा जङ्क्शन}} *{{Stnlnk|सिमरी बख्तियारपुर}} *{{Stnlnk|सोनबरसा कचहरी}} *{{Stnlnk|समस्तीपुर जङ्क्शन}} *{{Stnlnk|सीतामढ़ी जङ्क्शन}} |group4= {{rwd|सोनपुर}} |list4= *{{Stnlnk|अक्षयवत राय नगर}} *{{Stnlnk|बरौनी जङ्क्शन}} *{{Stnlnk|बेगूसराय}} *{{Stnlnk|भरपुरा पहलेजा घाट जङ्क्शन}} *{{Stnlnk|चक सिकन्दर}} *{{Stnlnk|देसारी}} *{{Stnlnk|हाजीपुर जङ्क्शन}} *{{Stnlnk|खगड़िया जङ्क्शन}} *{{Stnlnk|खुदीराम बोस पूसा}} *{{Stnlnk|मोहिउद्दीननगर}} *{{Stnlnk|मुजफ्फरपुर जङ्क्शन}} *{{Stnlnk|राम दयालु नगर}} *{{Stnlnk|नयागाँव}} *{{Stnlnk|सोनपुर जङ्क्शन}} }} |group2=[[पूर्व रेल क्षेत्र|पूर्व]] |list2= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|मालदा}} |list1= *{{Stnlnk|बाँका जङ्क्शन}} *{{Stnlnk|भागलपुर जङ्क्शन}} *{{Stnlnk|जमालपुर जङ्क्शन}} *{{Stnlnk|मन्दार हिल}} *{{Stnlnk|मुङ्गेर}} *{{Stnlnk|पूरबसराय}} *{{Stnlnk|सुल्तानगञ्ज}} }} |group3= [[पूर्वोत्तर रेल क्षेत्र|पूर्वोत्तर]] |list3= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|वाराणसी}} |list1= *{{Stnlnk|छपरा जङ्क्शन}} *{{Stnlnk|दुरौन्धा जङ्क्शन}} *{{Stnlnk|सिवान जङ्क्शन}} }} |group4= [[पूर्वोत्तर सीमान्त रेल क्षेत्र|पूर्वोत्तर सीमान्त]] |list4= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|कटिहार}} |list1= *{{Stnlnk|बारसोई जङ्क्शन}} *{{Stnlnk|कटिहार जङ्क्शन}} *{{Stnlnk|किशनगञ्ज}} *{{Stnlnk|पूर्णिया जङ्क्शन}} *{{Stnlnk|तेजनारायणपुर}} *{{Stnlnk|ठाकुरगञ्ज}} }} | below= }}<noinclude> {{collapsible option}} [[श्रेणी:राज्य अथवा केन्द्रशासितप्रदेश अनुसार भारतके रेलवे स्टेशन साँचा|बिहार]] [[श्रेणी:बिहारमे रेलवे स्टेशन|साँ]] [[श्रेणी:बिहार साँचा]] </noinclude> ccp5yz0gx88brs6m1otv9dekh38q8s6 80414 80413 2026-09-21T18:16:17Z ऐक्टिवेटेड् 76 ऐक्टिवेटेड् पन्ना [[साँचा:Railway stations in Bihar]] के [[साँचा:बिहारमे रेलवे स्टेशन]] पर स्थानान्तरित कैलन 80413 wikitext text/x-wiki <!-- Please add only railway station pages, and ''not'' city/ town pages , to this Navbox -->{{Navbox | name = बिहारमे रेलवे स्टेशन | title = [[बिहार]]मे [[रेलवे स्टेशन]] | state = {{{state|autocollapse}}} | listclass = hlist |groupstyle = text-align:center; |liststyle = |evenstyle= |group1=[[पूर्वमध्य रेल क्षेत्र|पूम]] |list1= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 5em |group1= {{rwd|दानापुर}} |list1= *{{Stnlnk|आरा जङ्क्शन}} *{{Stnlnk|बख्तियारपुर जङ्क्शन}} *{{Stnlnk|बाढ़}} *{{Stnlnk|बरहिया}} *{{Stnlnk|बिहारशरीफ जङ्क्शन}} *{{Stnlnk|बिहटा}} *{{Stnlnk|बक्सर}} *{{Stnlnk|दानापुर}} *{{Stnlnk|दीघा ब्रिज हाल्ट}} *{{Stnlnk|फतुहा जङ्क्शन}} *{{Stnlnk|गुलजारबाग}} *{{Stnlnk|हाथिदाह जङ्क्शन}} *{{Stnlnk|हरनौत}} *{{Stnlnk|जहानाबाद}} *{{Stnlnk|जमुई}} *{{Stnlnk|झाझा}} *{{Stnlnk|खुसरोपुर}} *{{Stnlnk|किऊल जङ्क्शन}} *{{Stnlnk|लखीसराय जङ्क्शन}} *{{Stnlnk|मोकामा जङ्क्शन}} *{{Stnlnk|नालन्दा}} *{{Stnlnk|नवादा}} *{{Stnlnk|नेओरा}} *{{Stnlnk|पाटलिपुत्र जङ्क्शन}} *{{Stnlnk|पटना जङ्क्शन}} *{{Stnlnk|पटना साहिब}} *{{Stnlnk|फुलवारीशरीफ}} *{{Stnlnk|राजेन्द्र नगर टर्मिनल}} *{{Stnlnk|राजगीर}} *{{Stnlnk|सिलाओ}} *{{Stnlnk|तिलैया जङ्क्शन}} *{{Stnlnk|वारिसलीगञ्ज}} |group2= {{rwd|पण्डित दीन दयाल उपाध्याय}} |list2= *{{Stnlnk|अनुग्रह नारायण रोड}} *{{Stnlnk|भभुआ रोड}} *{{Stnlnk|डेहरी-आन-सोन}} *{{Stnlnk|गया जङ्क्शन}} *{{Stnlnk|सासाराम जङ्क्शन}} *{{Stnlnk|सोननगर जङ्क्शन}} |group3= {{rwd|समस्तीपुर}} |list3= *{{Stnlnk|अमोलवा}} *{{Stnlnk|बाबा रघुनी हाल्ट द्वारिका}} *{{Stnlnk|बनमनखी जङ्क्शन}} *{{Stnlnk|बापूधाम मोतिहारी}} *{{Stnlnk|बरहरा कोठी}} *{{Stnlnk|भिखना थोरी}} *{{Stnlnk|भितिहरवा आश्रम}} *{{Stnlnk|दरभङ्गा जङ्क्शन}} *{{Stnlnk|दौरम मधेपुरा}} *{{Stnlnk|गौनाहा}} *{{Stnlnk|जयनगर}} *{{Stnlnk|जनकपुर रोड}} *{{Stnlnk|कपरपुरा}} *{{Stnlnk|लहेरियासराय}} *{{Stnlnk|लौकहा बाजार}} *{{Stnlnk|मधुबनी}} *{{Stnlnk|मिथिला दीप}} *{{Stnlnk|नरकटियागञ्ज जङ्क्शन}} *{{Stnlnk|पूर्णिया कोर्ट}} *{{Stnlnk|राघोपुर}} *{{Stnlnk|रक्सौल जङ्क्शन}} *{{Stnlnk|सगौली जङ्क्शन}} *{{Stnlnk|सहरसा जङ्क्शन}} *{{Stnlnk|सिमरी बख्तियारपुर}} *{{Stnlnk|सोनबरसा कचहरी}} *{{Stnlnk|समस्तीपुर जङ्क्शन}} *{{Stnlnk|सीतामढ़ी जङ्क्शन}} |group4= {{rwd|सोनपुर}} |list4= *{{Stnlnk|अक्षयवत राय नगर}} *{{Stnlnk|बरौनी जङ्क्शन}} *{{Stnlnk|बेगूसराय}} *{{Stnlnk|भरपुरा पहलेजा घाट जङ्क्शन}} *{{Stnlnk|चक सिकन्दर}} *{{Stnlnk|देसारी}} *{{Stnlnk|हाजीपुर जङ्क्शन}} *{{Stnlnk|खगड़िया जङ्क्शन}} *{{Stnlnk|खुदीराम बोस पूसा}} *{{Stnlnk|मोहिउद्दीननगर}} *{{Stnlnk|मुजफ्फरपुर जङ्क्शन}} *{{Stnlnk|राम दयालु नगर}} *{{Stnlnk|नयागाँव}} *{{Stnlnk|सोनपुर जङ्क्शन}} }} |group2=[[पूर्व रेल क्षेत्र|पूर्व]] |list2= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|मालदा}} |list1= *{{Stnlnk|बाँका जङ्क्शन}} *{{Stnlnk|भागलपुर जङ्क्शन}} *{{Stnlnk|जमालपुर जङ्क्शन}} *{{Stnlnk|मन्दार हिल}} *{{Stnlnk|मुङ्गेर}} *{{Stnlnk|पूरबसराय}} *{{Stnlnk|सुल्तानगञ्ज}} }} |group3= [[पूर्वोत्तर रेल क्षेत्र|पूर्वोत्तर]] |list3= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|वाराणसी}} |list1= *{{Stnlnk|छपरा जङ्क्शन}} *{{Stnlnk|दुरौन्धा जङ्क्शन}} *{{Stnlnk|सिवान जङ्क्शन}} }} |group4= [[पूर्वोत्तर सीमान्त रेल क्षेत्र|पूर्वोत्तर सीमान्त]] |list4= {{Navbox|subgroup |groupstyle = text-align: left;background-color: #eee; |groupwidth = 6em |group1= {{rwd|कटिहार}} |list1= *{{Stnlnk|बारसोई जङ्क्शन}} *{{Stnlnk|कटिहार जङ्क्शन}} *{{Stnlnk|किशनगञ्ज}} *{{Stnlnk|पूर्णिया जङ्क्शन}} *{{Stnlnk|तेजनारायणपुर}} *{{Stnlnk|ठाकुरगञ्ज}} }} | below= }}<noinclude> {{collapsible option}} [[श्रेणी:राज्य अथवा केन्द्रशासितप्रदेश अनुसार भारतके रेलवे स्टेशन साँचा|बिहार]] [[श्रेणी:बिहारमे रेलवे स्टेशन|साँ]] [[श्रेणी:बिहार साँचा]] </noinclude> ccp5yz0gx88brs6m1otv9dekh38q8s6 साँचा:Railway stations in Bihar 10 18294 80415 2026-09-21T18:16:17Z ऐक्टिवेटेड् 76 ऐक्टिवेटेड् पन्ना [[साँचा:Railway stations in Bihar]] के [[साँचा:बिहारमे रेलवे स्टेशन]] पर स्थानान्तरित कैलन 80415 wikitext text/x-wiki #REDIRECT [[साँचा:बिहारमे रेलवे स्टेशन]] qaewz7vm1tdi7k9p24urlzyceio2dta घटक:Side box/styles.css 828 18295 80416 2026-09-21T18:17:33Z ऐक्टिवेटेड् 76 "/* {{pp|small=y}} */ .side-box { margin: 4px 0; box-sizing: border-box; border: 1px solid #aaa; font-size: 88%; line-height: 1.25em; background-color: var(--background-color-interactive-subtle, #f8f9fa);color:inherit; display: flow-root; } /* embedded side boxes need larger font */ .infobox .side-box { font-size: 100%; } .side-box-abovebelow, .side-box-text { padding: 0.25em 0.9em; } .side-box-image { /*..." सङ्गे नया पन्ना बनावल गेलै 80416 sanitized-css text/css /* {{pp|small=y}} */ .side-box { margin: 4px 0; box-sizing: border-box; border: 1px solid #aaa; font-size: 88%; line-height: 1.25em; background-color: var(--background-color-interactive-subtle, #f8f9fa);color:inherit; display: flow-root; } /* embedded side boxes need larger font */ .infobox .side-box { font-size: 100%; } .side-box-abovebelow, .side-box-text { padding: 0.25em 0.9em; } .side-box-image { /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .side-box-imageright { /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* roughly the skin's sidebar + size of side box */ @media (min-width: 500px) { .side-box-flex { display: flex; align-items: center; } .side-box-text { flex: 1; min-width: 0; } } @media (min-width: 640px) { .side-box { width: 238px; } .side-box-right { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin-left: 1em; } /* derives from mbox classes, which do not float left in mbox-small-left * so far as I can tell, that was a deliberate decision, since only .ambox * supports mbox-left */ .side-box-left { /* @noflip */ margin-right: 1em; } } qq1i4w5vxwhm3bo4it30jpdvi25oyrp साँचा:Portal/Images/Default 10 18296 80417 2026-09-21T18:18:31Z ऐक्टिवेटेड् 76 "Portal-puzzle.svg" सङ्गे नया पन्ना बनावल गेलै 80417 wikitext text/x-wiki Portal-puzzle.svg 4lq32v4rmmtnauzp6m5oas7x5kqdyqu घटक:Portal bar/styles.css 828 18297 80418 2026-09-21T18:19:27Z ऐक्टिवेटेड् 76 "/* {{pp|small=y}} */ .portal-bar { font-size: 88%; font-weight: bold; display:flex; justify-content: center; align-items: baseline; } .portal-bar-bordered { padding: 0 2em; background-color: #fdfdfd; border: 1px solid #a2a9b1; clear: both; margin: 1em auto 0; } .portal-bar-related { font-size: 100%; justify-content: flex-start; } .portal-bar-unbordered { padding: 0 1.7em; margin-left: 0; } .portal-bar..." सङ्गे नया पन्ना बनावल गेलै 80418 sanitized-css text/css /* {{pp|small=y}} */ .portal-bar { font-size: 88%; font-weight: bold; display:flex; justify-content: center; align-items: baseline; } .portal-bar-bordered { padding: 0 2em; background-color: #fdfdfd; border: 1px solid #a2a9b1; clear: both; margin: 1em auto 0; } .portal-bar-related { font-size: 100%; justify-content: flex-start; } .portal-bar-unbordered { padding: 0 1.7em; margin-left: 0; } .portal-bar-header { margin: 0 1em 0 0.5em; flex: 0 0 auto; min-height: 24px; } .portal-bar-content { display:flex; flex-flow: row wrap; flex:0 1 auto; padding: 0.15em 0; column-gap: 1em; align-items: baseline; margin: 0; list-style: none; } .portal-bar-content-related { margin: 0; list-style: none; } .portal-bar-item { display:inline-block; margin:0.15em 0.2em; min-height:24px; line-height:24px; } @media screen and (max-width:639px) { .portal-bar { flex-flow: column wrap; } .portal-bar-header { text-align: center; flex:0; padding-left: 0.5em; margin: 0 auto; } .portal-bar-content { align-items: center; flex:0; border-top: 1px solid #a2a9b1; margin: 0 auto; } .portal-bar-content-related { border-top: none; } } /* Single Parsoid empty elements */ .navbox + .mw-empty-elt + .portal-bar, .navbox + .mw-empty-elt + .portal-bar-bordered, .sister-bar + .mw-empty-elt + .portal-bar, .sister-bar + .mw-empty-elt + .portal-bar-bordered, /* Navboxes below portal bar should abut */ .portal-bar + .navbox-styles + .navbox, .portal-bar + .mw-empty-elt + .navbox-styles + .navbox { margin-top: -1px; } 4bh2xoryc713besniunftb7gwwbykbi साँचा:Adjacent stations 10 18298 80420 2026-09-21T18:25:28Z ऐक्टिवेटेड् 76 "<includeonly><templatestyles src="Adjacent stations/styles.css"/>{{safesubst:#invoke:Adjacent stations|main}}</includeonly><noinclude> {{documentation}} </noinclude>" सङ्गे नया पन्ना बनावल गेलै 80420 wikitext text/x-wiki <includeonly><templatestyles src="Adjacent stations/styles.css"/>{{safesubst:#invoke:Adjacent stations|main}}</includeonly><noinclude> {{documentation}} </noinclude> q99wx427wztspgaso2z00zfax8t4u3l पटना जंक्शन रेलवे स्टेशन 0 18299 80427 2026-09-21T19:17:25Z ऐक्टिवेटेड् 76 [[पटना जङ्क्शन रेलवे स्टेशन]] के पुनर्निर्देशित 80427 wikitext text/x-wiki #REDIRECT [[पटना जङ्क्शन रेलवे स्टेशन]] aho7aptu83sgqb9fubf26pus96z368o पटना जंक्शन 0 18300 80428 2026-09-21T19:17:26Z ऐक्टिवेटेड् 76 [[पटना जङ्क्शन रेलवे स्टेशन]] के पुनर्निर्देशित 80428 wikitext text/x-wiki #REDIRECT [[पटना जङ्क्शन रेलवे स्टेशन]] aho7aptu83sgqb9fubf26pus96z368o पटना जङ्क्शन 0 18301 80429 2026-09-21T19:17:27Z ऐक्टिवेटेड् 76 [[पटना जङ्क्शन रेलवे स्टेशन]] के पुनर्निर्देशित 80429 wikitext text/x-wiki #REDIRECT [[पटना जङ्क्शन रेलवे स्टेशन]] aho7aptu83sgqb9fubf26pus96z368o पटना जङ्क्शन स्टेशन 0 18302 80430 2026-09-21T19:17:29Z ऐक्टिवेटेड् 76 [[पटना जङ्क्शन रेलवे स्टेशन]] के पुनर्निर्देशित 80430 wikitext text/x-wiki #REDIRECT [[पटना जङ्क्शन रेलवे स्टेशन]] aho7aptu83sgqb9fubf26pus96z368o पटना जंक्शन स्टेशन 0 18303 80431 2026-09-21T19:17:30Z ऐक्टिवेटेड् 76 [[पटना जङ्क्शन रेलवे स्टेशन]] के पुनर्निर्देशित 80431 wikitext text/x-wiki #REDIRECT [[पटना जङ्क्शन रेलवे स्टेशन]] aho7aptu83sgqb9fubf26pus96z368o पटना जंक्शन रेल स्टेशन 0 18304 80432 2026-09-21T19:17:32Z ऐक्टिवेटेड् 76 [[पटना जङ्क्शन रेलवे स्टेशन]] के पुनर्निर्देशित 80432 wikitext text/x-wiki #REDIRECT [[पटना जङ्क्शन रेलवे स्टेशन]] aho7aptu83sgqb9fubf26pus96z368o पटना जङ्क्शन रेल स्टेशन 0 18305 80433 2026-09-21T19:17:33Z ऐक्टिवेटेड् 76 [[पटना जङ्क्शन रेलवे स्टेशन]] के पुनर्निर्देशित 80433 wikitext text/x-wiki #REDIRECT [[पटना जङ्क्शन रेलवे स्टेशन]] aho7aptu83sgqb9fubf26pus96z368o राजेन्द्रनगर, पटना 0 18306 80435 2026-09-21T19:22:33Z ऐक्टिवेटेड् 76 [[राजेन्द्र नगर, पटना]] के पुनर्निर्देशित 80435 wikitext text/x-wiki #REDIRECT [[राजेन्द्र नगर, पटना]] fxjqcubkxolhrj0oaifg93tikcl3xym