विकिपीडिया
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 }}[[{{{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=प्रतीक लागि कुञ्जी
|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 == "{{{coordinates}}}" 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 == "{{{coordinates}}}" 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, '"', '"')..'">', '</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, '"', '"')..'">', '</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, '"', '">')..'">', '</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..' \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 = ' <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 = ' ' 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 = ' ' 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..' '..outp
v1 = tonumber(v1)
t2 = floor(v1 / cvt[inps[1]])..' '..inps[1]..' '..floor(v1 % cvt[inps[1]] / cvt[inps[1]] * cvt[inp] * mult * sf[inp] + .5) / mult / sf[inp]..' '..inps[2]
else
v1 = split(trim(v1), ';')
t1 = v1[1]..' '..inps[1]..' '..v1[2]..' '..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]..' '..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..' '..inp
t2 = v2..' '..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> '
if bs == 'to' or bs == 'srws' then
if t1 == ' ' or t2 == ' ' 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),' '}..' ' else args.l = '' end
if args.r then args.r = ' '..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]..' – '..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, '<', '<')
res = string.gsub(res, '>', '>')
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|}}}|ग्रिड स्थान}}
| 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 = [[आइएटिए-सूचीबद्ध रेलवे स्टेशनके सूची|आइएटिए सूचकाङ्क]]
| 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/>के पूर्व मध्य रेल क्षेत्रके दानापुर विभागके अन्तर्गत कैल जा हे । पटना जङ्क्शन देशके सबसे व्यस्त रेलवे स्टेशनमे से एक हे ।
पटना जङ्क्शन रेलवे स्टेशन भारतके अधिकांश प्रमुख नगरके रेलवे नेटवर्कसे जुड़ल हे । ई नगर एगो प्रमुख रेलवे केन्द्र हे आउ हियाँ पाँच प्रमुख स्टेशन हे - पटना जङ्क्शन, राजेन्द्रनगर टर्मिनल, दानापुर रेलवे स्टेशन, पाटलिपुत्र जङ्क्शन आउ पटना साहिब स्टेशन । पटनासे खाली २० किमी के दूरी पर हाजीपुर जङ्क्शन आउ सोनपुर जङ्क्शन - दु प्रमुख रेलवे स्टेशनो हे । पटना रोजमर्राके यात्री आउ एक्सप्रेस ट्रेन सेवाके माध्यमसे आरा, गया, जहानाबाद, बिहारशरीफ, राजगीर, इस्लामपुर, सोनपुर, हाजीपुर, मुजफ्फरपुर, छपरासे निमन जुड़ल हे ।
== इतिहास ==
पटना जङ्क्शन रेलवे स्टेशन १८६२ मे बाँकीपुर कस्बा, विभाग आउ पटना जिलाके मुख्यालय, [[बङ्गाल]], ब्रिटिश भारतमे बाँकीपुर जङ्क्शनके नामसे खोलल गेलै हल । पटनाके होके पार करेवाला रेलमार्गके निर्माण १८५५ मे शुरू होलै हल आउ १८६२ मे पूरा होल आउ खोलल गेलैै । एकरासे पहिले कच्चा माल आउ तैयार वस्तुके परिवहन [[गङ्गानदी|गङ्गा नदी]]<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;"> {{small|'''कार पार्किङ्ग'''}} </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 — 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 — L.S.S. O'malley — 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;"> {{small|'''कार पार्किङ्ग'''}} </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 — 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 — L.S.S. O'malley — 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;"> {{small|'''कार पार्किङ्ग'''}} </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 — 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 — L.S.S. O'malley — 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;"> {{small|'''Car parking'''}} </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|}}}| {{#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|}}}| {{#ifexpr:{{{pass_percent}}} > 0|{{profit}}|{{#ifexpr:{{{pass_percent}}} < 0|{{loss}}|{{steady}}}}}} {{#expr:abs {{{pass_percent}}}}}%}}{{#if:{{{system|}}}| ({{{system}}})}}}}
| label3 = {{pad}}इण्टर्चेञ्ज
| data3 = {{#if:{{{interchange|}}}|{{{interchange}}}{{#if:{{{int_percent|}}}| {{#ifexpr:{{{int_percent}}} > 0|{{profit}}|{{#ifexpr:{{{int_percent}}} < 0|{{loss}}|{{steady}}}}}} {{#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