ویکینبشته
fawikisource
https://fa.wikisource.org/wiki/%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C
MediaWiki 1.47.0-wmf.19
first-letter
مدیا
ویژه
بحث
کاربر
بحث کاربر
ویکینبشته
بحث ویکینبشته
پرونده
بحث پرونده
مدیاویکی
بحث مدیاویکی
الگو
بحث الگو
راهنما
بحث راهنما
رده
بحث رده
درگاه
بحث درگاه
پدیدآورنده
بحث پدیدآورنده
برگه
گفتگوی برگه
فهرست
گفتگوی فهرست
TimedText
TimedText talk
پودمان
بحث پودمان
Event
Event talk
پدیدآورنده:صادق هدایت
102
1864
299408
277389
2026-09-12T15:07:47Z
Hanooz
17889
/* آثار درباره هدایت */ حذف مواردی که در مالکیت عمومی نیستند
299408
wikitext
text/x-wiki
{{پدیدآورنده}}
== مجموعه آثار ==
* ''[[رباعیات خیام (صادق هدایت)]]'' (۱۳۰۲)
* ''[[فواید گیاهخواری]]'' (۱۳۰۶)
* ''[[زنده بگور (مجموعه داستان)|زندهبهگور]]'' (۱۳۰۸) (مجموعه داستان کوتاه)
* ''[[پروین دختر ساسان (نمایشنامه)|پروین دختر ساسان]]'' (۱۳۰۹) (نمایشامه)
* ''[[سایه مغول]]'' (۱۳۱۰)
* ''[[اصفهان نصف جهان (سفرنامه)|اصفهان نصف جهان]]'' (۱۳۱۱) (سفرنامه)
* '' [[سه قطره خون]]'' (۱۳۱۱) (مجموعه داستان کوتاه)
* ''[[نیرنگستان]]'' (۱۳۱۲)
* ''[[سایه روشن]]'' (۱۳۱۲)
* ''[[مازیار]]'' (۱۳۱۲) (جستار تاریخی و یک نمایشنامه) با همکاری [[پدیدآورنده:مجتبی مینوی|مجتبی مینوی]]
* ''[[وغوغساهاب]]'' (۱۳۱۳) با همکاری [[مسعود فرزاد]]
* ''[[ترانههای خیام]]'' (۱۳۱۳)
* ''[[بوف کور]]'' (۱۳۱۵)
* ''[[علویه خانم]]'' (۱۳۲۲)
* ''[[حاجی آقا]]'' (۱۳۲۴)
* ''[[افسانه آفرینش]]'' (۱۳۲۵) ([[خیمهشببازی]] در سه پرده)
* ''[[ولنگاری]]'' (۱۳۲۳)
* ''[[توپ مرواری]]'' (۱۳۲۷)
* ''[[سگ ولگرد]]'' (مجموعه داستان کوتاه)
* ''[[کاروان اسلام (البعثة الاسلامیة الی البلاد الافرنجیة)|کاروان اسلام ({{عربی|البعثة الاسلامیة الی البلاد الافرنجیة}})]]''
* ''[[مجموعه نوشتههای پراکنده (صادق هدایت)|مجموعه نوشتههای پراکنده]]'' (به کوشش حسن قائمیان)
* ''[[س. گ. ل. ل]]'' (۱۳۲۱)
=== ترجمهها ===
==== ترجمه از زبان فرانسه ====
* ''[[کور و برادرش]]'' (۱۳۱۰) نوشته [[آرتور شنیتسلر]]
* ''[[کلاغ پیر]]'' (۱۳۱۰) نوشته [[الکساندر لانژ کیلاند]] نویسنده نروژی
* ''[[تمشک تیغ دار]]'' (۱۳۱۰) نوشته [[آنتون چخوف]]
* ''[[مرداب حبشه]]'' (۱۳۱۰) نوشته [[گاستون شرو]] نویسنده فرانسوی
* ''[[جلو قانون]]'' نوشته [[پدیدآورنده:فرانتس کافکا|فرانتس کافکا]]
* ''[[مسخ]]'' نوشته [[پدیدآورنده:فرانتس کافکا|فرانتس کافکا]]
* ''[[گراکوس شکارچی]]'' نوشته [[پدیدآورنده:فرانتس کافکا|فرانتس کافکا]]
* ''[[گروه محکومین]]'' نوشته [[پدیدآورنده:فرانتس کافکا|فرانتس کافکا]]
* ''[[دیوار(ژان پل سارتر)|دیوار]]'' نوشته [[ژان پل سارتر]]
==== ترجمه از متون پهلوی به زبان فارسی ====
* ''[[ماتیکان گجستک ابالیش|گجسته ابالیش]]'' (۱۳۱۹)
* '' [[شکند گمانیک وزار|گزارش گمانشکن]]'' (۱۳۲۲)
* ''[[یادگار جاماسبی|یادگار جاماسب]]'' (۱۳۲۲)
* ''[[کارنامه اردشیر بابکان]]'' (۱۳۲۲)
* ''[[زند وهومن یسن]]'' (۱۳۲۳)
* ''[[آمدن شاه بهرام ورجاوند]] (۱۳۲۴)
=== مقالات ===
* ''[[مقدمهای بر رباعیات خیام]]''
* ''[[انسان و حیوان]]'' (۱۳۰۳)
* ''[[پیام کافکا]]''
== آثار دربارهٔ هدایت ==
* ''کتاب حاجیآقای صادق هدایت''، نوشته [[سعید نفیسی]]، ۱۳۲۴
* ''هدایت و حزب توده''، نوشته [[خلیل ملکی]]، ۱۳۳۰
* ''صادق هدایت از نظر دهخدا'' نوشته [[علی اکبر دهخدا]]، ۱۳۵۲
* ''هدایت بوف کور'' نوشته [[جلال آلاحمد]]، ۱۳۳۰
{{مالکیت عمومی در ایران}}
{{صادق هدایت}}
[[رده:نویسندگان داستان کوتاه]]
[[رده:پدیدآورندگان ایرانی]]
6cvruhxqn1vhm6r21gyczg09cspqesr
بوف کور
0
2280
299409
299350
2026-09-12T15:15:34Z
Hanooz
17889
299409
wikitext
text/x-wiki
{{header
| title = بوف کور
| author = صادق هدایت
| translator =
| section =
| previous = ترانههای خیام
| next = داستان ناز
| year = ۱۳۱۵
| notes =
| portal = ادبیات
}}
<pages index="The Blind Owl.pdf" include=1></pages>
{{page break|label=}}
<pages index="The Blind Owl.pdf" include=2></pages>
{{page break|label=}}
<pages index="The Blind Owl.pdf" include=3></pages>
{{page break|label=}}
<pages index="The Blind Owl.pdf" include=4></pages>
{{page break|label=}}
<pages index="The Blind Owl.pdf" from=5 to=144 />
{{مالکیت عمومی در هند}}
{{authority control}}
[[رده:رمانهای ایرانی]]
[[رده:رمانهای کوتاه]]
k30s7owxycx9y3nwp6sy2pztzu3hjkh
299410
299409
2026-09-12T15:16:22Z
Hanooz
17889
299410
wikitext
text/x-wiki
{{header
| title = بوف کور
| author = صادق هدایت
| translator =
| section =
| previous = [[ترانههای خیام]]
| next = داستان ناز
| year = ۱۳۱۵
| notes =
| portal = ادبیات
}}
<pages index="The Blind Owl.pdf" include=1></pages>
{{page break|label=}}
<pages index="The Blind Owl.pdf" include=2></pages>
{{page break|label=}}
<pages index="The Blind Owl.pdf" include=3></pages>
{{page break|label=}}
<pages index="The Blind Owl.pdf" include=4></pages>
{{page break|label=}}
<pages index="The Blind Owl.pdf" from=5 to=144 />
{{مالکیت عمومی در هند}}
{{authority control}}
[[رده:رمانهای ایرانی]]
[[رده:رمانهای کوتاه]]
kolaspw8pg89cxzywes8r1zvxtpobnj
رده:آثار بدون منبع
14
30334
299411
69955
2026-09-12T15:31:55Z
Hanooz
17889
299411
wikitext
text/x-wiki
برای آثاری که در این رده قرار دارند هیچ منبعی معرفی نشده است. در صورتی که برچسب منبع به شکل طولانیمدت در یک صفحه قرار بگیرد و هیچ کس برای اثر مزبور منبعی ذکر نکند، شما میتوانید پیشنهاد حذف آن اثر را بدهید.
[[رده:وضعیت تکمیل متون]]
teo0r6y93wof7thdu0o4s519v6jepnf
بحث:بوف کور
1
45196
299413
112317
2026-09-12T16:24:06Z
Hanooz
17889
اصالت و نشانهگذاری
299413
wikitext
text/x-wiki
[[:File:The Blind Owl.pdf]] {{رچ}}[[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۳۰ دسامبر ۲۰۲۰، ساعت ۱۷:۴۲ (UTC)
::{{پب|Hanooz}} سلام. باتشکر بابت بارگذاری این کتاب، [[فهرست:The Blind Owl.pdf|صفحهی فهرست مربوطه]] را ایجاد کردم. --<span style="font-family:times; text-shadow: 0 0 .11em #6af; font-size:12pt">[[User:Arash.z|Arash.z]] <small>([[User talk:Arash.z|بحث]])</small></span> چهارشنبه،۱۰ دی ۱۳۹۹، ساعت ۲۲:۴۸ (ایران) ۳۰ دسامبر ۲۰۲۰، ساعت ۱۹:۱۸ (UTC)
== اصالت و نشانهگذاری ==
محمد بهارلو در مجله تجربه (فروردین ۱۳۹۷، صص ۴۶-۵۰) درباره اصالت نسخهها و نشانهگذاری بوف کور نوشته. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۱۲ سپتامبر ۲۰۲۶، ساعت ۱۶:۲۴ (UTC)
ft4dlalrdc4afbtihesi2dbx1vpeh48
299414
299413
2026-09-12T16:24:24Z
Hanooz
17889
/* اصالت و نشانهگذاری */ اصلاح ارقام
299414
wikitext
text/x-wiki
[[:File:The Blind Owl.pdf]] {{رچ}}[[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۳۰ دسامبر ۲۰۲۰، ساعت ۱۷:۴۲ (UTC)
::{{پب|Hanooz}} سلام. باتشکر بابت بارگذاری این کتاب، [[فهرست:The Blind Owl.pdf|صفحهی فهرست مربوطه]] را ایجاد کردم. --<span style="font-family:times; text-shadow: 0 0 .11em #6af; font-size:12pt">[[User:Arash.z|Arash.z]] <small>([[User talk:Arash.z|بحث]])</small></span> چهارشنبه،۱۰ دی ۱۳۹۹، ساعت ۲۲:۴۸ (ایران) ۳۰ دسامبر ۲۰۲۰، ساعت ۱۹:۱۸ (UTC)
== اصالت و نشانهگذاری ==
محمد بهارلو در مجله تجربه (فروردین ۱۳۹۷، صص ۵۰-۴۶) درباره اصالت نسخهها و نشانهگذاری بوف کور نوشته. [[کاربر:Hanooz|Hanooz]] ([[بحث کاربر:Hanooz|بحث]]) ۱۲ سپتامبر ۲۰۲۶، ساعت ۱۶:۲۴ (UTC)
gky1nb1l6a4w3dejup6g7jpc52wj1w2
فهرست:The Blind Owl.pdf
106
45198
299417
267192
2026-09-12T17:51:51Z
Hanooz
17889
299417
proofread-index
text/x-wiki
{{:MediaWiki:Proofreadpage_index_template
|wikidata_item=
|Title=بوف کور
|Subtitle=
|Volume=
|Issue=
|Edition=
|Author=صادق هدایت
|Foreword_Author=
|Translator=
|Editor=
|Illustrator=صادق هدایت
|Lyricist=
|Composer=
|Singer=
|Publisher=
|Address=بمبئی
|Printer=
|Year=۱۳۱۵
|Source=pdf
|Image=1
|Progress=V
|Pages=<pagelist
1=1
/>
|Volumes=
|Remarks=
|Notes=
|Header={{سصم|{{{pagenum}}}||}}
|Footer=
}}
9r2fdfdxxurolwmwj3b65mzrgjn3hh7
برگه:The Blind Owl.pdf/۵
104
45203
299405
299347
2026-09-12T13:12:30Z
Hanooz
17889
299405
proofread-page
text/x-wiki
<noinclude><pagequality level="4" user="Ali Khomami P" /></noinclude>{{Img float
| file = First page of The Blind Owl (cropped).png
| width = 300px
| align = center
}}
{{وسط|{{font-size|300%|بوف کور}}}}
در زندگی زخمهایی هست که مثل خوره روح را آهسته در انزوا میخورد و میتراشد — این دردها را نمیشود بکسی اظهار کرد، چون عموماً عادت دارند که این دردهای باورنکردنی را جزو اتفاقات و پیشآمدهای نادر و عجیب بشمارند و اگر کسی بگوید یا بنویسد مردم<noinclude></noinclude>
s8hrqyqm26r95majzmf0evflxs3k1gb
برگه:The Blind Owl.pdf/۶
104
45204
299406
283518
2026-09-12T13:18:14Z
Hanooz
17889
299406
proofread-page
text/x-wiki
<noinclude><pagequality level="4" user="Ali Khomami P" />{{سرصفحهمستمر|۶||}}</noinclude>بر سبیل عقاید جاری و اعتقادات خودشان سعی میکنند که با لبخند شکاک و تمسخرآمیز تلقی بکنند — زیرا بشر هنوز چاره و دوایی برایش پیدا نکرده و تنها داروی آن فراموشی بتوسط شراب و خواب مصنوعی بوسیله افیون و مواد مخدره است — ولی افسوس که تاثیر اینگونه داروها موقتی است و بجای تسکین پس از مدتی بر شدت درد میافزاید — آیا روزی به اسرار این اتفاقات ماوراءِ طبیعی، این انعکاس سایه روح که در حالت اغما و برزخ بین خواب و بیداری جلوه میکند کسی پی خواهد برد؟
من فقط بشرح یکی ازین پیشآمدها میپردازم که برای خودم اتفاق افتاده و بقدری مرا تکان داده که هرگز فراموش نخواهم کرد و نشان مشئوم آن تا زندهام، تا روز ازل، تا انجائیکه خارج از فهم و ادراک بشر است زندگی مرا زهرآلود خواهد کرد. – زهرآلود نوشتم، ولی میخواستم بگویم داغ آنرا همیشه با خودم داشته و خواهم داشت.
من سعی خواهم کرد آنچه را که یادم است، آنچه را که از ارتباط وقایع در نظرم مانده بنویسم، شاید بتوانم راجع به آن یک قضاوت کلی بکنم،– نه، فقط اطمینان حاصل بکنم و یا اصلاً خودم بتوانم باور بکنم – چون برای من هیچ اهمیتی ندارد که دیگران باور بکنند یا نکنند، فقط میترسم<noinclude></noinclude>
m2ogjj1vvnvltgfol55bne3xgsfe829
299418
299406
2026-09-13T04:06:22Z
Hanooz
17889
299418
proofread-page
text/x-wiki
<noinclude><pagequality level="4" user="Ali Khomami P" />{{سرصفحهمستمر|۶||}}</noinclude>بر سبیل عقاید جاری و اعتقادات خودشان سعی میکنند که با لبخند شکاک و تمسخرآمیز تلقی بکنند — زیرا بشر هنوز چاره و دوایی برایش پیدا نکرده و تنها داروی آن فراموشی بتوسط شراب و خواب مصنوعی بوسیله افیون و مواد مخدره است — ولی افسوس که تاثیر اینگونه داروها موقتی است و بجای تسکین پس از مدتی بر شدت درد میافزاید — آیا روزی به اسرار این اتفاقات ماوراءِ طبیعی، این انعکاس سایه روح که در حالت اغما و برزخ بین خواب و بیداری جلوه میکند کسی پی خواهد برد؟
من فقط بشرح یکی ازین پیشآمدها میپردازم که برای خودم اتفاق افتاده و بقدری مرا تکان داده که هرگز فراموش نخواهم کرد و نشان مشئوم آن تا زندهام، تا روز ازل، تا انجائیکه خارج از فهم و ادراک بشر است زندگی مرا زهرآلود خواهد کرد. — زهرآلود نوشتم، ولی میخواستم بگویم داغ آنرا همیشه با خودم داشته و خواهم داشت.
من سعی خواهم کرد آنچه را که یادم است، آنچه را که از ارتباط وقایع در نظرم مانده بنویسم، شاید بتوانم راجع به آن یک قضاوت کلی بکنم،— نه، فقط اطمینان حاصل بکنم و یا اصلاً خودم بتوانم باور بکنم – چون برای من هیچ اهمیتی ندارد که دیگران باور بکنند یا نکنند، فقط میترسم<noinclude></noinclude>
p71wkblnpy9svwosy8z8a00lf4o3nhm
برگه:The Blind Owl.pdf/۷
104
45205
299407
283520
2026-09-12T13:21:17Z
Hanooz
17889
299407
proofread-page
text/x-wiki
<noinclude><pagequality level="4" user="Darafsh" />{{سرصفحهمستمر|۷||}}</noinclude>که فردا بمیرم و هنوز خودم را نشناخته باشم — زیرا در طی تجربیات زندگی باین مطلب برخوردم که چه ورطه هولناکی میان من و دیگران وجود دارد و فهمیدم که تا ممکن است باید خاموش شد، تا ممکن است باید افکار خودم را برای خودم نگهدارم و اگر حالا تصمیم گرفتم که بنویسم فقط برای اینست که خودم را بسایهام معرفی بکنم — سایهای که روی دیوار خمیده و مثل اینست که هرچه مینویسم با اشتهای هر چه تمامتر میبلعد – برای اوست که میخواهم آزمایشی بکنم به بینم شاید بتوانیم یکدیگر را بهتر بشناسیم – چون از زمانیکه همه روابط خودم را با دیگران بریدهام میخواهم خودم را بهتر بشناسم.
افکار پوچ! – باشد، ولی از هر حقیقتی بیشتر مرا شکنجه میکند – آیا این مردمی که شبیه من هستند، که ظاهراً احتیاجات و هوا و هوس مرا دارند برای گول زدن من نیستند آیا یکمشت سایه نیستند که فقط برای مسخره کردن و گول زدن من بوجود آمدهاند؟ آیا آنچه که حس میکنم، میبینم و میسنجم سرتاسر موهوم نیست که با حقیقت خیلی فرق دارد؟
من فقط برای سایه خودم مینویسم که جلو چراغ بدیوار افتاده است، باید خودم را بهش معرفی بکنم.
{{ته}}<noinclude></noinclude>
kfa6exksixhkrs3trhtub813ne3j67o
299419
299407
2026-09-13T04:06:53Z
Hanooz
17889
299419
proofread-page
text/x-wiki
<noinclude><pagequality level="4" user="Darafsh" />{{سرصفحهمستمر|۷||}}</noinclude>که فردا بمیرم و هنوز خودم را نشناخته باشم — زیرا در طی تجربیات زندگی باین مطلب برخوردم که چه ورطه هولناکی میان من و دیگران وجود دارد و فهمیدم که تا ممکن است باید خاموش شد، تا ممکن است باید افکار خودم را برای خودم نگهدارم و اگر حالا تصمیم گرفتم که بنویسم فقط برای اینست که خودم را بسایهام معرفی بکنم — سایهای که روی دیوار خمیده و مثل اینست که هرچه مینویسم با اشتهای هر چه تمامتر میبلعد — برای اوست که میخواهم آزمایشی بکنم به بینم شاید بتوانیم یکدیگر را بهتر بشناسیم — چون از زمانیکه همه روابط خودم را با دیگران بریدهام میخواهم خودم را بهتر بشناسم.
افکار پوچ! — باشد، ولی از هر حقیقتی بیشتر مرا شکنجه میکند — آیا این مردمی که شبیه من هستند، که ظاهراً احتیاجات و هوا و هوس مرا دارند برای گول زدن من نیستند آیا یکمشت سایه نیستند که فقط برای مسخره کردن و گول زدن من بوجود آمدهاند؟ آیا آنچه که حس میکنم، میبینم و میسنجم سرتاسر موهوم نیست که با حقیقت خیلی فرق دارد؟
من فقط برای سایه خودم مینویسم که جلو چراغ بدیوار افتاده است، باید خودم را بهش معرفی بکنم.
{{ته}}<noinclude></noinclude>
0n5ik3f24qjq7otl759wfl3dbiwqlvx
برگه:The Blind Owl.pdf/۹
104
45210
299420
299378
2026-09-13T04:08:48Z
Hanooz
17889
299420
proofread-page
text/x-wiki
<noinclude><pagequality level="4" user="Hanooz" />{{سصم|۹||}}</noinclude>بعد از او من دیگر خودم را از جرگه آدمها، از جرگه احمقها و خوشبختها بکلی بیرون کشیدم و برای فراموشی بشراب و تریاک پناه بردم — زندگی من تمام روز میان چهار دیوار اطاقم میگذشت و میگذرد — سرتاسر زندگیم میان چهار دیوار گذشته است —
تمام روز مشغولیات من نقاشی روی جلد [[w:قلمدان|قلمدان]] بود — همه وقتم وقف نقاشی روی جلد قلمدان و استعمال مشروب و تریاک میشد و شغل مضحک نقاشی روی قلمدان را اختیار کرده بودم برای اینکه خودم را گیج بکنم، برای اینکه وقت را بکشم.
از حسن اتفاق خانهام بیرون شهر، در یک محل ساکت و آرام دور از آشوب و جنجال زندگی مردم واقع شده — اطراف آن کاملاً مجزا و دورش خرابه است. فقط از انطرف خندق خانههای گلی توسری خورده پیداست و شهر شروع میشود — نمیدانم این خانه را کدام مجنون یا کج سلیقه در [[w:عهد دقیانوس|عهد دقیانوس]] ساخته، چشمم را که میبندم نه فقط همه سوراخ سنبههایش پیش چشمم مجسم میشود بلکه فشار آنها را روی دوش خودم حس میکنم — خانهای که فقط روی قلمدانهای قدیم ممکن است نقاشی کرده باشند.
{{ته}}<noinclude></noinclude>
ayns5z1vpkfn4pzc3iq53vvvu8x9bts
برگه:The Blind Owl.pdf/۱۰
104
45224
299421
299379
2026-09-13T04:09:17Z
Hanooz
17889
299421
proofread-page
text/x-wiki
<noinclude><pagequality level="4" user="Hanooz" />{{سصم|۱۰||}}</noinclude>باید همه اینها را بنویسم تا به بینم که بخودم مشتبه نشده باشد، باید همه اینها را بسایه خودم که روی دیوار افتاده توضیح بدهم — آری، پیشتر برایم فقط یک دلخوشی یا دلخوشکنک مانده بود — میان چهار دیوار اطاقم روی قلمدان نقاشی میکردم و با این سرگرمی مضحک وقت را میگذرانیدم اما بعد از آنکه آن دو چشم را دیدم، بعد از آنکه او را دیدم اصلاً معنی، مفهوم و ارزش هر جنبش و حرکتی از نظرم افتاد — ولی چیزی که غریب، چیزیکه باورنکردنی است نمیدانم چرا موضوع مجلس همه نقاشیهای من از ابتدا یکجور و یک شکل بوده است: همیشه یک درخت سرو میکشیدم که زیرش پیرمردی قوز کرده شبیه [[w:یوگی (هندوئیسم)|جوکیان]] هندوستان عبا بخودش پیچیده، چنباتمه نشسته و دور سرش چالمه بسته بود و انگشت سبابه دست چپش را بحالت تعجب به لبش گذاشته بود — روبروی او دختری با لباس سیاه بلند خم شده باو [[w:نیلوفر آبی|گل نیلوفر]] تعارف میکرد، چون میان آنها یک جوی آب فاصله داشت — آیا این مجلس را من سابقاً دیده بودهام یا در خواب بمن الهام شده بود؟ نمیدانم. فقط میدانم که هر چه نقاشی میکردم همهاش همین مجلس و همین موضوع بود،<noinclude></noinclude>
78acairmo8xx0rec3g4aocju06fa1qo
پودمان:Proofreadpage index template
828
83581
299415
277684
2026-09-12T17:44:41Z
Hanooz
17889
299415
Scribunto
text/plain
--[=[
This is a module to implement logic for [[MediaWiki:Proofreadpage index template]]
]=]
local getArgs = require('Module:Arguments').getArgs
local messageBox = require('Module:Message box')
local ISO_639 = require('Module:ISO 639')
local error_text = require('Module:Error')['error']
local category_handler = require('Module:Category handler')._main
local p = {} -- p stands for package
local cfg = require('Module:Proofreadpage index template/config')
local attribution_data = require('Module:Header/attribution data')
local function process_args(args)
-- Set any defaults
for k, v in pairs(cfg.defaults) do
if args[k] == nil then
args[k] = cfg.defaults[k]
end
end
args.source_type = cfg['cover_cats']['file_types'][args['Source']]
args.pageTitle = (args.pageTitle and mw.title.new(args.pageTitle)) or mw.title.getCurrentTitle()
args.fileTitle = mw.title.makeTitle('File', args.pageTitle.rootText)
args.talkPageTitle = args.pageTitle.talkPageTitle
args.file_exists = args.fileTitle.file.exists -- Expensive, so only compute once
return args
end
local function construct_cat(cat)
return '[[Category:' .. cat .. ']]'
end
local function construct_cat_link(cat, text)
return '[[:Category:' .. cat .. '|' .. (text or cat) .. ']]'
end
-- Construct a basic "field" row
local function construct_field(id, content)
if id == nil or content == nil then
return nil
elseif not cfg.headings[id] then
error(cfg.missing_heading_id(id))
end
local tr = mw.html.create('tr')
:attr('id', 'ws-index-' .. id .. '-row')
:addClass('ws-index-row')
:tag('th')
:attr('scope', 'row')
:attr('id', 'ws-index-' .. id .. '-label')
:addClass('ws-index-label')
:wikitext(cfg.headings[id]['txt'])
:done()
:tag('td')
:attr('id', 'ws-index-' .. id .. '-value')
:addClass('ws-index-value')
:wikitext(content)
:allDone()
return tr
end
local function construct_status_field(args, statusArgs)
local key = statusArgs.key
local lower_key = string.lower(key)
local config_key = statusArgs.config_key or lower_key
local index_status = args[key] or '_missing'
local sd = cfg[config_key][index_status] or cfg[config_key]['_default']
local index_status_message = sd['txt']
if type(index_status_message) == 'function' then
index_status_message = index_status_message(index_status)
end
if sd['error'] then
index_status_message = error_text({['message'] = index_status_message, ['tag'] = 'span'})
else
index_status_message = construct_cat_link(sd['cat'], index_status_message)
end
return {row = construct_field(lower_key, index_status_message), cat = construct_cat(sd['cat'])}
end
--[=[
Create indicator markup based on config
Loads the config module and creates indicator extension tags after pattern
<indicator name="foo">[[File:Foo.svg|20px|link=bar|caption|alt=Alt text.]]</indcator>
]=]
local function construct_indicator(args, iArgs)
if not (iArgs.include or cfg.indicator_defaults.include)(args) then
return nil
end
local indicator_parts = {
iArgs.image or cfg.indicator_defaults.image,
iArgs.width or cfg.indicator_defaults.width
}
local alt = iArgs.alt or cfg.indicator_defaults.alt
table.insert(indicator_parts, alt and 'alt=' .. alt)
local link = iArgs.link or cfg.indicator_defaults.link
if type(link) == 'function' then
link = link(args)
end
table.insert(indicator_parts, link and 'link=' .. link)
local caption = iArgs.caption or cfg.indicator_defaults.caption
if type(caption) == 'function' then
caption = caption(args)
end
table.insert(indicator_parts, caption)
return mw.getCurrentFrame():extensionTag{
['name'] = 'indicator',
['content'] = '[[' .. table.concat(indicator_parts, '|') .. ']]',
['args'] = {
['name'] = iArgs.name or cfg.indicator_defaults.name
}
}
end
local function _metadata(args)
local metadatatable = mw.html.create('table')
:attr('id', 'ws-index-metadata')
local cats = {}
local indicators = {}
if args['Title'] then
metadatatable:node(construct_field('title', table.concat({args['Title'], args['Volume']}, ', ')))
else
metadatatable:node(construct_field('title', args['Volume'] or ''))
end
local simple_args = {}
for i, v in ipairs(attribution_data) do
local noun = v.noun
table.insert(simple_args, {string.upper(string.sub(noun, 1, 1)) .. string.sub(noun, 2)})
end
table.insert(simple_args, {'Year'})
table.insert(simple_args, {'Publisher'})
table.insert(simple_args, {'Address', 'place'})
for i, v in ipairs(simple_args) do
metadatatable:node(construct_field(v[2] or string.lower(v[1]), args[v[1]]))
end
-- Categorize image-based indexes
if args.source_type and cfg['cover_cats'][args.source_type] then
table.insert(cats, construct_cat(cfg['cover_cats'][args.source_type]))
elseif not args.source_type then
table.insert(cats, construct_cat(cfg['cover_cats']['unknown']))
end
local source = args['Source']
if args.file_exists then
source = '[[:' .. args.fileTitle.fullText .. '|' .. source .. ']]'
else
-- Add a tracking category
table.insert(cats, construct_cat(cfg.cover_cats.missing))
end
metadatatable:node(construct_field('source', source))
-- Progress
local progress_data = construct_status_field(args, {['key'] = 'Progress', ['config_key'] = 'status'})
metadatatable:node(progress_data.row)
table.insert(cats, progress_data.cat)
-- Transclusion status
local transclusion_data = construct_status_field(args, {['key'] = 'Transclusion'})
metadatatable:node(transclusion_data.row)
table.insert(cats, transclusion_data.cat)
local vdate = args['Validation_date']
if vdate then
local vcat = cfg['validation_cats']['dated'](vdate)
metadatatable:node(construct_field('validation_date', construct_cat_link(vcat, vdate)))
table.insert(cats, construct_cat(vcat))
elseif args['Progress'] == 'T' then
table.insert(cats, construct_cat(cfg['validation_cats']['undated']))
end
local info_args = {'ISBN', 'OCLC', 'LCCN', 'ARK', --[=['National Archives',]=] 'DOI'}
for i, v in ipairs(info_args) do
local val = args[v]
if val then
local lower_key = string.lower(v)
local link_fn = cfg.url_gens[lower_key]
if link_fn then
metadatatable:node(construct_field(lower_key, link_fn(val, val)))
end
end
end
metadatatable:node(construct_field('volumes', args['Volumes']))
-- Language categorisations
if args.Language then
local langs = mw.text.split(args.Language, ',%s*', false)
for _, l in ipairs(langs) do
local lang = mw.text.trim(l)
if lang ~= '' then
table.insert(cats, construct_cat(cfg['language_cats']['single'](ISO_639.language_name(lang))))
end
end
if #langs > 1 then
table.insert(cats, construct_cat(cfg['language_cats']['multi']))
end
end
return {['table'] = metadatatable, cats = table.concat(cats), indicators = table.concat(indicators)}
end
--[=[
Get the image to use as the cover image for this index
If the Image parameter contains an integer, it refers to a page in a DjVu/PDF and can be used directly
Otherwise, it may be a full image specification that we can use directly,
or just an image filename that we can construct an image specification for
]=]
local function default_cover_image(link)
return '[[' .. cfg.cover.image .. '|' .. cfg.cover.width .. '|link=' .. link .. '|class=ws-cover]]'
end
local function _cover(args)
local image_number = tonumber(args['Image'])
-- check for timestamps
if args['Image'] and not image_number and args.source_type == 'audiovisual' and mw.ustring.match(args['Image'], '^%d+[%d:]*$') then
image_number = args['Image']
end
local image_spec
local cats = {}
if not image_number and args['Image'] and mw.ustring.find(args['Image'], '^%[%[') then
-- Image param is not a (page) number and looks like a full image specification
image_spec = args['Image']
if args.source_type ~= 'image' then
-- Add a tracking category
table.insert(cats, construct_cat(cfg.cover_cats.fullspec))
end
elseif not image_number and args['Image'] and mw.ustring.find(args['Image'], '%.%w+$') then
-- Image param is not a (page) number and is probably a filename with or without File: prefix
image_spec = args['Image']
local image_prefixes = {
mw.site.namespaces.File.name,
mw.site.namespaces.File.canonicalName
}
for i, alias in ipairs(mw.site.namespaces.File.aliases) do
table.insert(image_prefixes, alias)
end
for i, prefix in ipairs(image_prefixes) do
image_spec = mw.ustring.gsub(image_spec, '^' .. prefix .. ':', '')
image_spec = mw.ustring.gsub(image_spec, '^' .. string.lower(prefix) .. ':', '')
end
image_spec = '[[File:' .. image_spec .. '|' .. cfg.cover.width .. '|class=ws-cover]]'
if args.source_type ~= 'image' then
-- Add a tracking category
table.insert(cats, construct_cat(cfg.cover_cats.fullspec))
end
elseif args.source_type == 'multipage' and args.file_exists then
-- It's a DjVu/PDF-backed index, so we fetch the cover image from a page in the (multipage) file
image_spec = '[[' .. args.fileTitle.prefixedText .. '|' .. cfg.cover.width .. '|page=' .. (image_number or 1) .. '|class=ws-cover]]'
elseif args.source_type == 'audiovisual' and args.file_exists then
-- It's an audio/video-backed index, so we fetch the cover image from a thumbnail time
image_spec = '[[' .. args.fileTitle.prefixedText .. '|' .. cfg.cover.width .. '|thumbtime=' .. (image_number or 0) .. '|class=ws-cover]]'
elseif args.file_exists then
-- It's either an image-based index or some unknown type, so we use the file
image_spec = '[[' .. args.fileTitle.prefixedText .. '|' .. cfg.cover.width .. '|class=ws-cover]]'
else
-- Our associated file doesn't exist, so we use a placeholder
local image_link = args.fileTitle.prefixedText
if mw.ustring.find(args.fileTitle.rootText, '^.*%.%w+') == nil then
image_link = 'Special:Upload'
end
image_spec = default_cover_image(image_link)
end
return image_spec .. table.concat(cats)
end
-- Also implements [[Template:Index talk remarks]]
function p._index_talk_remarks(args)
if not args.talkPageTitle then
args.pageTitle = (args.pageTitle and mw.title.new(args.pageTitle)) or mw.title.getCurrentTitle()
args.talkPageTitle = args.pageTitle.talkPageTitle
end
local text = cfg['talkremarks']['text'](args)
local cat = category_handler({construct_cat(cfg['talkremarks']['cat'])}) or ''
local notes = ''
if args.notes then
-- 5.5em is small enough, and has the convenience of probably showing the top of a line when there are too many
notes = mw.html.create('div')
:addClass('ombox-content')
:css({
['text-align'] = 'left',
['max-height'] = '5.5em',
['overflow'] = 'scroll',
['padding'] = '0.25em',
['margin'] = '0.25em',
['border-style'] = 'dashed'
})
:newline()
:wikitext(args.notes .. cat)
:newline()
:allDone()
end
return messageBox.main('ombox', {
['type'] = 'content',
['image'] = '[[File:Ambox important.svg|24px]]',
['style'] = 'box-sizing:border-box;margin:-0.93em auto 0.0em;text-align:center;width:100%;',
['textstyle'] = 'font-size:93%;text-decoration:none;',
['text'] = text .. tostring(notes)
})
end
function p.index_talk_remarks(frame)
return p._index_talk_remarks(getArgs(frame))
end
-- Main function
local function _main(args)
args = process_args(args)
local talkremarks = ''
local talk_page_exists = args.talkPageTitle.exists -- Expensive
if talk_page_exists and not args.notes then
local content = args.talkPageTitle.content
for _, keyword in ipairs(cfg.talkremarks.keywords) do
local pattern
if keyword.alone then -- Only whitespace around
pattern = '==( *' .. keyword.pattern .. ' *)=='
else -- Allow for other content besides the keyword
pattern = '==([^=%n]*' .. keyword.pattern .. '[^=%n]*)=='
end
-- Capture section header
local section = mw.ustring.match(content, pattern)
if section then
-- Specifically transclude the section
local section_text = mw.getCurrentFrame():callParserFunction('#lsth', args.talkPageTitle.prefixedText, mw.text.trim(section))
args.notes = section_text
break
end
end
end
if talk_page_exists then
talkremarks = p._index_talk_remarks(args)
end
local metadata_data = _metadata(args)
local sortkey = mw.getCurrentFrame():callParserFunction('DEFAULTSORT', {args['Key'] or args.pageTitle.text})
local is = {}
for _, v in pairs(cfg.indicators) do
table.insert(is, construct_indicator(args, v))
end
table.insert(is, metadata_data.indicators)
local indicators = table.concat(is)
local outertable = mw.html.create('table')
:attr('id', 'ws-index-container')
local outertable_tr = outertable:tag('tr')
outertable_tr
:tag('td')
:attr('id', 'ws-index-main-cell')
:tag('table')
:attr('id', 'ws-index-main-table')
:tag('tr'):tag('td')
:tag('div')
:attr('id', 'ws-index-cover-container')
:wikitext(_cover(args))
:done()
:node(metadata_data['table'])
:done()
:tag('tr'):tag('td'):tag('div')
:attr('id', 'ws-index-pagelist-container')
:addClass('mw-collapsible')
:tag('em'):wikitext(cfg.pagelist.pages.txt):done()
:wikitext(' ')
:tag('span')
:attr('id', 'ws-index-pagelist-legend')
:wikitext(cfg.pagelist.legend.txt)
:done()
:tag('div')
:attr('id', 'ws-index-pagelist')
:addClass('index-pagelist mw-collapsible-content')
:newline()
:wikitext(args['Pages'] and mw.text.trim(args['Pages']))
:newline()
if args['Remarks'] then
outertable_tr:tag('td')
:attr('id', 'ws-index-remarks')
:newline()
:wikitext(mw.getCurrentFrame():preprocess(args['Remarks']))
else
outertable_tr:tag('td')
:attr('id', 'ws-index-remarks-empty')
end
return talkremarks .. indicators .. tostring(outertable) .. metadata_data.cats .. sortkey
end
function p.main(frame)
return _main(getArgs(frame))
end
return p
qel72vrcalz8vdmdarq30y1kswrsckb
ویکینبشته:آثار/۲۰۲۶
4
90009
299412
299107
2026-09-12T15:44:40Z
Hanooz
17889
بوف کور
299412
wikitext
text/x-wiki
{{process header
| title = آثار نمونهخوانیشده که در سال ۲۰۲۶ افزوده شدهاند
| section =
| previous = [[../۲۰۲۵/]]
| next = [[../۲۰۲۷/]]
| shortcut =
| notes =
}}
<onlyinclude>
{{new texts/item|بوف کور|صادق هدایت|۱۳۱۵}}
{{new texts/item|ضوابط تعیین بهای اراضی و مستحدثات قم باستناد تصویبنامههای صادره از طرف هیئت محترم وزیران|}}
{{new texts/item|قانون نوسازی و عمران شهری (ضمیمه روزنامه رسمی کشور شاهنشاهی ایران)|display=قانون نوسازی و عمران شهری|}}
{{new texts/item|قانون متحدالشکل نمودن البسه اتباع ایران در داخله مملکت|مجلس شورای ملی|۱۳۰۷}}
{{new texts/item|اساسنامه و نظامنامه کانون بانوان||۱۳۱۴}}
{{new texts/item|رضا شاه کبیر|محمدرضاشاه پهلوی|}}
{{new texts/item|تصویبنامه راجع به پرچم ایران|وزارت جنگ|۱۳۳۶|nowiki=true}}
{{new texts/item|روزنامه رسمی کشور شاهنشاهی ایران/شماره ۶۵۱۶|display=روزنامه رسمی کشور شاهنشاهی ایران، شماره ۶۵۱۶|وزارت دادگستری|۱۳۴۶|nowiki=true}}
</onlyinclude>
{{new texts/item|روزنامه رسمی کشور شاهنشاهی ایران/شماره ۸۷۸۵|display=روزنامه رسمی کشور شاهنشاهی ایران، شماره ۸۷۸۵|وزارت دادگستری|۱۳۵۳|nowiki=true}}
{{new texts/item|قانون اساسی جمهوری اسلامی ایران (مصوب ۱۳۵۸)|display=قانون اساسی جمهوری اسلامی ایران|مجلس خبرگان قانون اساسی|۱۳۵۸|nowiki=true}}
{{new texts/item|عقل سرخ|شهابالدین یحیی سهروردی|۱۳۱۹}}
{{new texts/item|هشت کتاب|سهراب سپهری|۱۳۵۸}}
{{new texts/item|اطلاعات/شماره ۶|display=روزنامه اطلاعات، شماره ۶|مرکز اطلاعات ایران|۱۳۰۵|nowiki=true}}
{{new texts/item|اطلاعات/شماره ۵|display=روزنامه اطلاعات، شماره ۵|مرکز اطلاعات ایران|۱۳۰۵|nowiki=true}}
{{new texts/item|انقلاب سفید|محمدرضاشاه پهلوی|}}
{{new texts/item|استاندارد تمثال علیا حضرت شهبانوی ایران|مؤسسه استاندارد و تحقیقات صنعتی ایران|۱۳۴۴|nowiki=true}}
{{new texts/item|رساله موسومه به یک کلمه|یوسف مستشارالدوله|۱۳۲۵}}
3onfyz8ici022tu33vbjbl6rfeq9rif
پودمان:Proofreadpage index template/config
828
95456
299416
2026-09-12T17:47:56Z
Hanooz
17889
صفحهای تازه حاوی «local function any_case(str) return str:gsub('.', function (chr) if chr:match('%a') then -- letters return '[' .. chr:lower() .. chr:upper() .. ']' else return chr -- leave as-is end end) end return { ['defaults'] = { ['Source'] = '_empty_', }, ['pagelist'] = { ['pages'] = { ['txt'] = 'Pages' }, ['legend'] = { ['txt'] = '(key to [[Help:Page Status|Page Status]])' } }, ['cover'] = { ['width'] = '250...» ایجاد کرد
299416
Scribunto
text/plain
local function any_case(str)
return str:gsub('.', function (chr)
if chr:match('%a') then -- letters
return '[' .. chr:lower() .. chr:upper() .. ']'
else
return chr -- leave as-is
end
end)
end
return {
['defaults'] = {
['Source'] = '_empty_',
},
['pagelist'] = {
['pages'] = {
['txt'] = 'Pages'
},
['legend'] = {
['txt'] = '(key to [[Help:Page Status|Page Status]])'
}
},
['cover'] = {
['width'] = '250px',
['image'] = 'File:Placeholder book.svg'
},
['missing_heading_id'] = function (id)
return 'Can\'t find heading for ID: ' .. id
end,
['headings'] = {
['title'] = {
['txt'] = 'Title'
},
['progress'] = {
['txt'] = 'Progress'
},
['transclusion'] = {
['txt'] = 'Transclusion'
},
['validation_date'] = {
['txt'] = 'Validated in'
},
['source'] = {
['txt'] = 'Source'
},
['place'] = {
['txt'] = 'Location'
},
['year'] = {
['txt'] = 'Year'
},
['publisher'] = {
['txt'] = 'Publisher'
},
['author'] = {
['txt'] = 'Author'
},
['editor'] = {
['txt'] = 'Editor'
},
['translator'] = {
['txt'] = 'Translator'
},
['illustrator'] = {
['txt'] = 'Illustrator'
},
['volumes'] = {
['txt'] = 'Volumes'
},
['isbn'] = {
['txt'] = 'ISBN'
},
['oclc'] = {
['txt'] = 'OCLC'
},
['lccn'] = {
['txt'] = 'LCCN'
},
['ark'] = {
['txt'] = 'ARK'
},
--[=[
['National Archives'] = {
['txt'] = 'National Archives'
},
]=]
['doi'] = {
['txt'] = 'DOI'
}
},
['status'] = {
['T'] = {
['cat'] = 'Index Validated',
['txt'] = 'Done—All pages of the work proper are validated',
},
['V'] = {
['cat'] = 'Index Proofread',
['txt'] = 'Proofread—All pages of the work proper are proofread, but not all are validated',
},
['C'] = {
['cat'] = 'Index Not-Proofread',
['txt'] = 'To be proofread',
},
['MS'] = {
['cat'] = 'Index - Ready for Match and Split',
['txt'] = 'Ready for Match and Split',
},
['OCR'] = {
['cat'] = 'Index - Text Layer Requested',
['txt'] = 'Source file needs an OCR text layer',
},
['L'] = {
['cat'] = 'Index - File to fix',
['txt'] = 'Source file must be fixed before proofreading',
['error'] = true,
},
['X'] = {
['cat'] = 'Index - File to check',
['txt'] = 'Create a pagelist for the source file before commencing proofreading (to verify file is correct)',
['error'] = true
},
['_missing'] = {
['cat'] = 'Index - Unknown progress',
['txt'] = 'Missing progress (template error)',
['error'] = true,
},
['_default'] = {
['cat'] = 'Index - Unknown progress',
['txt'] = function (index_status)
return 'Unknown progress: ' .. index_status .. ' (template error)'
end,
['error'] = true,
}
},
['transclusion'] = {
['yes'] = {
['cat'] = 'Fully transcluded',
['txt'] = 'Fully transcluded',
['help'] = 'The work is fully transcluded, including front and end matter and images'
},
['notimg'] = {
['cat'] = 'Images not fully transcluded',
['txt'] = 'Images not fully transcluded',
['help'] = 'The work is fully transcluded, but that some images are still missing or need improvement',
},
['notadv'] = {
['cat'] = 'Advertising not transcluded',
['txt'] = 'Advertising not transcluded',
['help'] = 'The main body of the work is properly transcluded, though front- or end-matter advertising material is not'
},
['held'] = {
['cat'] = 'Transclusion on hold',
['txt'] = 'Transclusion on hold',
['help'] = 'There is a problem with transcluding the work (which should be explained on the talk page)'
},
['check'] = {
['cat'] = 'Transclusion check required',
['txt'] = 'Transclusion check required',
['help'] = 'The transclusion of the work is incomplete or needs checking'
},
['no'] = {
['cat'] = 'Index not transcluded',
['txt'] = 'Index not transcluded or unreviewed',
['help'] = 'This work is not transcluded or has not been reviewed for transclusion'
},
['_missing'] = {
['cat'] = 'Index not transcluded',
['txt'] = 'Missing transclusion status (template error)',
['error'] = true,
},
['_default'] = {
['cat'] = 'Index not transcluded',
['txt'] = function (index_status)
return 'Unknown transclusion status: ' .. index_status .. ' (template error)'
end,
['error'] = true,
}
},
['language_cats'] = {
['single'] = function(lang)
return 'Index pages of works originally in ' .. (lang or 'an unknown language')
end,
['multi'] = 'Index pages of works originally in multiple languages'
},
['cover_cats'] = {
['file_types'] = {
['jpg'] = 'image',
['png'] = 'image',
['gif'] = 'image',
['tif'] = 'image',
['ogg'] = 'audiovisual',
['ogv'] = 'audiovisual',
['webm'] = 'audiovisual',
['_empty_'] = 'unknown',
['pdf'] = 'multipage',
['djvu'] = 'multipage'
},
['image'] = 'Image based indexes',
['audiovisual'] = 'Audio-visual based indexes',
['unknown'] = 'Indexes of unknown type',
['missing'] = 'Indexes with missing files',
['fullspec'] = 'Non-image-based indexes with fully-specified cover image'
},
['validation_cats'] = {
['dated'] = function(vdate)
return 'Indexes validated in ' .. vdate
end,
['undated'] = 'Indexes validated with no date'
},
['indicators'] = {
['pagegame'] = {
['name'] = 'WS Page Game',
['image'] = 'File:OOjs UI icon page number.svg',
['link'] = function(args)
return tostring(mw.uri.fullUrl('toolforge:ws-page-game', {['wikisource'] = 'en', ['index'] = mw.uri.encode(args.fileTitle.rootText), ['lang'] = 'en'}))
end,
['caption'] = 'Wikisource Page Game (step-by-step pagelist builder)'
},
['purge'] = {
['name'] = 'purge file',
['image'] = 'File:OOjs UI icon reload.svg',
['link'] = function(args)
return tostring(mw.uri.fullUrl('commons:File:' .. args.fileTitle.rootText, {['action'] = 'purge'}))
end,
['caption'] = 'Purge file'
},
['book2scroll'] = {
['name'] = 'book2scroll',
['image'] = 'File:Library-logo.svg',
['link'] = function(args)
return tostring(mw.uri.fullUrl('toolforge:book2scroll', {['lang'] = 'en', ['file'] = mw.uri.encode(args.fileTitle.rootText)}))
end,
['caption'] = 'Open in Book2Scroll'
},
['bookreader'] = {
['name'] = 'bookreader',
['image'] = 'File:BookReader-favicon.svg',
['link'] = function(args)
return tostring(mw.uri.fullUrl('toolforge:bookreader/en/' .. mw.uri.encode(args.fileTitle.rootText)))
end,
['caption'] = 'Open file in BookReader'
},
['validated'] = {
['name'] = 'validated-index-date',
['image'] = 'File:Yes Check Circle.svg',
['link'] = function (args)
local vdate = args['Validation_date']
return vdate and tostring(mw.uri.fullUrl('Category:Indexes validated in ' .. vdate)) or ''
end,
['caption'] = function (args)
local vdate = args['Validation_date']
return vdate and 'Validated in ' .. vdate or nil
end,
['alt'] = 'Validated index page.',
['width'] = '15px',
['include'] = function (args)
return args['Validation_date'] ~= nil
end
}
},
['indicator_defaults'] = {
['width'] = '20px',
['include'] = function (args)
return true
end
},
['url_gens'] = {
['isbn'] = function(id, text)
return require('Module:ISBN')._ISBN({id})
end,
['oclc'] = function(id, text)
return '[https://www.worldcat.org/oclc/' .. mw.uri.encode(id, 'PATH') .. ' ' .. text .. ']'
end,
['ark'] = function(id, text)
return '[https://n2t.net/' .. mw.uri.encode(id, 'QUERY') .. ' ' .. text .. ']'
end,
['doi'] = function(id, text)
return '[https://doi.org/' .. mw.uri.encode(id, 'PATH') .. ' ' .. text .. ']'
end
},
['talkremarks'] = {
['text'] = function(args)
return 'Formatting guidelines specific to this work may have already been established. Please check this [[' .. args.talkPageTitle.prefixedText .. '|Index\'s discussion page]] and follow any such conventions.'
end,
['cat'] = 'Pages using index talk remarks with notes parameter',
['keywords'] = {
{
['pattern'] = any_case('notes?'),
['alone'] = true
},
{
['pattern'] = any_case('quick notes?'),
['alone'] = false
},
{
['pattern'] = any_case('proofr?e?a?d?ing notes?'), -- proofreading notes, proofing note, &c
['alone'] = false
},
{
['pattern'] = any_case('style notes?'),
['alone'] = false
},
{
['pattern'] = any_case('layout notes?'),
['alone'] = false
},
{
['pattern'] = any_case('formatting conventions?'),
['alone'] = false
},
{
['pattern'] = any_case('formatt?i?n?g?'), -- formatting, format
['alone'] = true
},
{
['pattern'] = any_case('conventions?'),
['alone'] = true
},
{
['pattern'] = any_case('layouts?'),
['alone'] = true
},
{
['pattern'] = any_case('quotes'),
['alone'] = true
},
{
['pattern'] = any_case('quotation marks'),
['alone'] = false
},
{
['pattern'] = any_case('typography'),
['alone'] = false
},
{
['pattern'] = any_case('spelling'),
['alone'] = false
},
{
['pattern'] = any_case('style guide'),
['alone'] = false
},
{
['pattern'] = any_case('guidelines?'),
['alone'] = false
},
{
['pattern'] = any_case('missing pages?'),
['alone'] = true
},
{
['pattern'] = any_case('long[ %-]s'), -- of course
['alone'] = true
},
},
['timestamp'] = {
['pattern'] = '%(UTC%)',
['text'] = '(UTC)'
}
}
}
tl27c7dnpnsq1ju5yccb8dqwwywiug4