وحدة:Flagg
| صنفت هذه الوحدة على أنها في مرحلة بيتا. عندما تصل الوحدة لهذه المرحلة، يمكن أن يوسع إستخدامها في الصفحات التانيه. لكن يجب توخي الحذر من أن الوحدات في هذه المرحلة ما زالت حديثة العهد لذلك وجب توخي الحذر عند الإستخدام وملاحظة أي أخطاء تنتج عنها. من العرف أن المجتمع سوف يوصل الوحدات في هذه المرحلة للتي بعدها عبر صفحات النقاش الخاصة بالوحدة أو أي مكان يعلن عن هذه الوحدة عبر ملاحظة أن هذه الوحدة تعمل بشكل صحيح والجميع راضا عن أدائها. |
| هذه الوحدة تعتمد على الوحدات الأخرى التالية: |
قالب {{Flagg}} (عـلم عـام) هو قالب أعلام عام مع تنسيق الإخراج متغير. يستخدم لغة لوا بدلا من الويكيبيديا:WikiProject Flag Template، لأنها تتيح تجاوز اسم الصورة والهدف والارتباط، ويعمل القالب و لو كان قالب البلد غير موجود (دون تجاوز أى من حدود القوالب).
الوسائط
[تعديل]يتم إعطاء (بدائل القيم) لكل معلمة بين قوسين ().
التنسيق (المعلمة الأولى غير المسماه)
[تعديل]المعلمة الأولى هيا رمز أبجدى تحدد شكل ظهور القالب. الحرف الاولانى يتعلق بالصورة، والتانى بالفاصل، والتالت باسم البلد. تأخذ المعلمة بعين الاعتبار تحسس حالة الأحرف.
اذا كان أى حرف من المعلمة مفقود أو بطابع لا يتدور مع واحد من الخيارات اللى بعد كده , سيتم استخدام القيمه الافتراضية المحددة تحته؛ زى اذا كانت المعلمة الأولى مساوية لـi، أو i**، أو izz ستقرأ كالتالي: isc.
الصورة
[تعديل]الصورة (الحرف الأول)
| الحرف | المعنى | المعنى | وصفه | مثال |
|---|---|---|---|---|
| u | unlinked | دون وصلة | صورة غير مرتبطة (إفتراضى) | uxx|France |
| c | country | البلد | وصلة الصورة لصفحة البلد/الكيان. | cxx|France |
| p [f] | prefix/suffix | وصلة الصورة لاسم البلد مع البادئة. "و/أو" نص اللى بعد كده (افتراضى "علم ...")، يتعين باستخدام |pref= و|suff= (شوف ادناه). |
pxx|France | |
| i | image page | صفحة الصورة | وصلة الصورة لالملف الخاص بيها تستخدم مع الصور غير الحرة. | ixx|France |
| d | data template | بيانات القالب | وصلة الصورة لقالب بيانات بلد المستخدم، للاستخدام فى النقاش/التوثيق. تضيف الوحدة تلقائى redirect=no اذا كانت الوصلة تحويلة. |
dxx|France |
| x | علامة الشطب | علامة × | لا يتم عرض أى صورة. يستخدم صورة شفافة غير مرتبطة للحفاظ على المسافات فى حالة إذا كان الحرف التانى أى شيء آخر غير x، و كمان o لم يتم تحديدها. | xnx|France |
الفاصل
[تعديل]الفاصل (الحرف الثانى)
| الحرف | المعنى | المعنى | وصفه | مثال | ||
|---|---|---|---|---|---|---|
| s | span box | مربع ممتد (افتراضى) | ياتحط صورة العلم فى <span>، وده يعنى أن أسماء البلاد منحازة فى قوائم عمودية؛ راجع توثيق قالب {{Flaglist}}. | flagg|usu|Niger ← flagg|usu|Niger
| ||
| n | non-breaking space | مسافة غير منقسمة | يستخدم مسافة غير منقسمة ( ) زى ما هو الحال فى معظم قوالب الأعلام، بما فيها قالب {{علم}}. لاحظ أن لا يمنع فى الواقع التفاف بين الصورة والنص فى كل المتصفحات؛ استخدم w زى ما هو موضح تحته إذا لزم الأمر. |
flagg|unu|Niger ← flagg|unu|Niger
| ||
| l | line break | خط مكسور | يستخدم فاصل سطر جديد (<br/>) كفاصل. |
flagg|ulu|Niger ← flagg|ulu|Niger
| ||
| t | table cell | خلية جدول | يستخدم فاصل خلية جدول ( | ). | utu|Niger | |
| x | X mark | علامة × | لا يستخدم أى فاصل. | flagg|uxu|Niger ← flagg|uxu|Niger
| ||
الاسم
[تعديل]الاسم (الحرف التالت)
| الحرف | المعنى | المعنى | وصفه | مثال |
|---|---|---|---|---|
| c | country | البلد (افتراضى) | يضع الوصلة لوصلة البلد. | xxc|Chile |
| p | prefix/suffix | بادئة / لاحقة | وصلة اسم البلد لصفحة البلد، مع سابقة و/أو لاحقة (افتراضى "علم ..."). تحدد باستخدام |pref=، و|suff= (طالع تحته). |
xxp|Chile |
| f | full prefix/suffix | بادئة / لاحقة الكاملة | كما p، لكن فى دى الحالة يتم عرض البادئة و/أو اللاحقة. | xxf|Chile |
| b | both country and prefix/suffix | يضع وصلة البلد ووصلة البادئة واللاحقة، يربط اسم البلد لصفحة الدولة، ويضع وصلة تانيه مع البادئة/اللاحقة. | xxb|Chile | |
| u | unlinked | دون وصلة (انظر. {{flagu}}) | يتم عرض اسم البلد كنص عادي، دون وصلة. | xxu|Chile |
| d | data template | بيانات القالب | يربط اسم البلد لقالب بيانات البلد المستخدم، للاستخدام فى صفحات النقاش أو التوثيق. يضع بشكل افتراضى redirect=no اذا كان القالب تحويلة. |
xxd|Chile |
| x | X mark | علامة × | لا يعرض أى نص. | xxx|Chile |
تانيه
[تعديل]يمكن تمكين بعض الخيارات الإضافية بإلحاق الرسايل اللى بعد كده لالحروف الثلاثة، فى أى أمر:
| الحرف | معنى | معنى | وصفه | مثال |
|---|---|---|---|---|
| a | alt | نص بديل | يضيف اسم البلد (معلمة "name"، و إن ما كانتش متوفرة يستخدم المعلمة التانيه الغير مسماة) كـ نص بديل للصورة يظهر عند تمرير الفأرة على الصورة، إذا استخدمت المعلمة |alt= لتخصيص نص بديل للصورة، فده لا يحتاج لتعيينه بصورة منفصلة. |
uxxa|باكستان |
| e | expands | اسم مختصر | يستخدم الاسم المنصوص عليه فى قالب بيانات بلد (بدلا من المعلمة الأولى) للعرض، كما فى قالب {{علم الدولة}}. | unue|PAK |
| o | Omits | يتجاهل الصورة والمسافات فى حالة كانت الصورة غير مرئية، بحيث يظهر التباعد فى حالة اتعرض العلم. مفيد للاستعمال فى حالة التضمين فى سطر أو فى قوائم أفقية، حيث مش هناك حاجة لمحاذاة الاسم. | unuo|باكستان|image= Compare with: flagg|unu|باكستان|image= ← flagg|unu|باكستان|image=
| |
| r | right | يعكس ترتيب العناصر, حيث يضع الصورة يمين الاسم كما قالب {{علم يمين}}. ولا يؤثر ده على ترتيب الحروف فى التنسيق. | uncr|باكستان | |
| w | wrapping | يتجنب الالتفاف بإضافة <span class="nowrap"></span> حول الناتج. |
unuw|باكستان |
الكيان/البلد (المعلمة التانيه الغير مسماة)
[تعديل]المعلمة التانيه هيا اسم البلد أو الكيان. يستخدمها القالب لقراءة بيانات العلم من "قالب:بيانات بلد"؛ إذا لم فيه القالب، سيتم استخدام نفس المعلمة افتراضى كاسم البلد ولن يتم عرض أى صورة، وتعرف المعلمة اسم العرض الافتراضى اذا لم تستخدم المعلمة e.
وسائط الصورة
[تعديل]|variant=[المعلمة التالتة غير المسماة]- يحدد صورة متغير العلم، كما هيا محددة فى قالب بيانات بلد. زى ،
flagg|ixx|المانيا|naval← flagg|ixx|المانيا|naval يستخدم المتغير "naval بحري" فى قالب:بيانات بلد المانيا. |image=- تخصيص اسم الصورة تحتوى أو لا تحتوى "File:" .يمكن استخدامها إذا كانت الصورة المطلوبة مش متوفرة كمتغير للكيان (يمكنك بدلا من كده تطلب ذلك ممكن ان تضاف فى صفحة نقاش القالب البيانات اللى تخصها)، أو فى حالة عدم وجود قالب بيانات. قم بتعيينها ل"none" أو ["blank" أو قيمة فارغة] لاستخدام صورة شفافة غير موصولة (عمليا مدورة لتنسيق الوسيط x).
|size=و[|sz=]- يحدد حجم الصورة؛ الافتراضى هو 23×15 بكسل (اكبر فى بعض الكيانات). يمكنك استخدام حجم صريح فى بكسل ( مثل 30x20px; اللى بعد كده "px" هيا اختيارية) أو واحد من الأحجام النسبية "xs" (نصف الأبعاد الافتراضية)، "s" و"m" و"l" و"xl" (ضعف الحجم الافتراضى).
|border=- افتراضيا، يتضمن رمز العلم حدود، إلا إذا تم تعطيله فى قالب بيانات بلد فى الوسيط
|border=ممكن تعيينه لـ "yes" أو ["y" ًأو "1"] لفرض الحدود عند استبعاده افتراضيا، أو ممكن تعيينه لـ "no" أو ["n" أو "0" أو سلسلة فارغة] لمنع ذلك. |align=و[|al=]- قم بتعيينها ل
- "left" أو ["l"] أو
- "center" أو ["centre" أو "c" أو "middle" أو "m"]
- أو "right" أو ["r"]
لظبط محاذاة صورة لتنسيق المربع الممتد (s) وتنسيق خلية الجدول (t). بالنسبة للوسيط t فانه افتراضى محاذاة الوسط، أما s فهو محاذاة لاليمين، إن لم تحدد قيمة لـ r و إلا فأنه ها يكون محاذاة لليسار.
|width=و[|w=]- يحدد عرض المربع الممتد المحيط حول الصورة (s) بالبكسل، بدون "px" يتم احتساب قيمة افتراضية بوحدة:Flaglist/size ويعتمد على حجم الصورة.
|alt=- يحدد نص بديل ونص يظهر عند مرور الفأرة فوق صورة العلم،إذا كان النص المطلوب يساوى اسم الكيان، استخدم الخيار a المذكور أعلاه.
|ilink=- تجاوز وصلة الصورة (استخدم ده بس إذا لم يتيح أى من خيارات التنسيق أعلاه بربط الصفحة المطلوبة).
وسائط النص والوصلة
[تعديل]|name=- تغيير اسم البلد المعروض. لاحظ أنه مع تنسيق f، وده يشمل البادئة و / أو لاحقة.
- [
|link=] و|clink= - الكتابة فوق الارتباط لمقالة البلد؛ يتم استخدام دى كمان لبناء وصلة بادئة / لاحقة للخيارات اللى بعد كده : f، وp، وb .
|pref=و|suff=و|plink=|pref=و|suff=تعيين البادئة واللى بعد كده لاستخدامها فى بادئة / لاحقة الروابط (شكل الحروف f، وp وb). افتراضى،إذا لم يتم تحديد ذلك، ها يكون "علم_" بادئة (راجع {{flagof}}) ولن يتم استخدام لاحقة. ممكن استخدام المعلمة|plink=لتجاوز الارتباط المشترك.|the=- قم بتعيينها ل"yes" أو ["y"، أو "1"] لتضمين "the" قبل اسم البلد فى بادئة/لاحقة الروابط . مثال:
flagg|usf|Philippinesthe=1← flagg|usf|Philippinesthe=1. استعمل|pthe=إذا كان الرابط يحتاج ذلك، "و" لكن فى الاسم ليس كذلك، واستخدم|nthe=إذا كان الاسم يحتاج ذلك، لكن الرابط لا يحتاج ذلك. |section=- وصلة لقسم من أقسام المقالة، دون عرض اسم المقطع فى الاسم، فى حالة تم استخدام وصلة البلد و كمان بادئة/لاحقة الوصلة قم باستخدام
|csection=للقسم فى المقالة، واستخدم|psection=للقسم المسبوق/المتبوع من المقالة.
|altvar=، و[|avar=]، و|age=- إمكانية استخدام لاحقة قياسية محددة مسبق، كوصلة لفريق رياضى أو فرع عسكرى. يتم تحميل بيانات altvar واللى بعد كده من وحدة:Flagg/Altvar data. القيم الممكنة للمعلمات هيا الاسامى الأساسية للقوالب المخصصة المقابلة؛ قيم الاسم المستعار من أسم الرياضة الكاملة الموجودة (أنظر الأمثلة الواردة تحته وصفحة البيانات).
بالنسبة لبعض الكيانات أو العناصر، ده يغير الصورة كمان لمحدد بديل variant لرياضة أو فرع عسكري؛ زى :
flagg|usp|Northern Ireland|avar=ru ← flagg|usp|Northern Ireland|avar=ru يستخدم علم اتحاد الرغبى لتمثيل فريق اتحاد الرجبى الأيرلندى. لفرق الشباب فى بعض الألعاب الرياضية (شوف صفحة البيانات)، الحد الأدنى للسن لا بد و أن يتم تعيينه باستخدام الوسيط |age=.
|nalign=، و[|nal=]- تعيين محاذاة النص فى شكل خلية الجدول (t). افتراضى محاذاة لليسار؛ القيم الممكنة هيا نفسها بالنسبة لـ
|align=. |text=- تجاوز النص بالكامل؛ بس يستخدم عند الضرورة لأى صيغ غير قياسية. بدلا من كده يمكنك تعيين الحرف التالت من المعلمة تنسيق لـ x (دون نص) وقم بإضافة النص المخصص بره القالب.
أمثلة
[تعديل]التنسيقات:
flagg|usc|Fiji← flagg|usc|Fiji (default format)flagg||Fiji← flagg||Fiji (default format)flagg|pnbr|Fiji← flagg|pnbr|Fiji<span style="display:inline-block;text-align:center;">{{flagg|ilf|vivi|sz=xl}}</span> ;→
Flag of FJI
تنسيق الجدول والمحاذاة:
{{flagg|utu|Jamaica}} |
Jamaica | |
{{flagg|utur|Jamaica}} |
Jamaica | |
{{flagg|utu|Jamaica|al=l|nal=l}} |
Jamaica | |
{{flagg|utu|Jamaica|al=c|nal=c}} |
Jamaica | |
{{flagg|utu|Jamaica|al=r|nal=r}} |
Jamaica |
flagg|usu|Swaziland← flagg|usu|Swazilandflagg|usu|Swaziland|al=l← flagg|usu|Swaziland|al=lflagg|usu|Swaziland|al=c← flagg|usu|Swaziland|al=cflagg|usu|Swaziland|al=r← flagg|usu|Swaziland|al=r
Default image parameters and parameter names:
flagg|isc|Myanmar← flagg|isc|Myanmarflagg|isc|Myanmar|border=← flagg|isc|Myanmar|border=flagg|isc|Myanmar|1974← flagg|isc|Myanmar|1974flagg|isc|Myanmar|variant=1974← flagg|isc|Myanmar|variant=1974flagg|isc|Myanmar|name=Myanmar|variant=1974← flagg|isc|Myanmar|name=Myanmar|variant=1974flagg|isc|Myanmar|variant=1974← flagg|isc|Myanmar|variant=1974flagg|isc|Myanmar|sz=30← flagg|isc|Myanmar|sz=30flagg|isc|Myanmar|size=30← flagg|isc|Myanmar|size=30flagg|isc|Myanmar|size=30px← flagg|isc|Myanmar|size=30pxflagg|isc|Myanmar|size=30x18px← flagg|isc|Myanmar|size=30x18pxflagg|isc|Myanmar|size=xs← flagg|isc|Myanmar|size=xsflagg|isc|Myanmar|size=xl← flagg|isc|Myanmar|size=xlflagg|isc|Myanmar|width=30|size=xs← flagg|isc|Myanmar|width=30|size=xsflagg|isc|Myanmar|image=← flagg|isc|Myanmar|image={{flagg|isc|Myanmar|image=Flag of None.svg}}produces: → ملف:Flag of None. svg Myanmar{{flagg|isc|Myanmar|image=File:Flag of None.svg}}produces: →
Myanmar
Links and altvars:
flagg|psp|Egypt← flagg|psp|Egyptflagg|psf|Egypt← flagg|psf|Egyptflagg|psb|Egypt← flagg|psb|Egyptflagg|psb|Philippines|the=1← flagg|psb|Philippines|the=1flagg|csc|Egypt|section=History← flagg|csc|Egypt|section=Historyflagg|csb|Egypt|csection=History← flagg|csb|Egypt|csection=Historyflagg|psb|Egypt|psection=Kingdom of Egypt (1922–1953)|variant=1922← flagg|psb|Egypt|psection=Kingdom of Egypt (1922–1953)|variant=1922flagg|psb|Egypt|plink=List of Egyptian flags← flagg|psb|Egypt|plink=List of Egyptian flagsflagg|psf|Egypt|pref=date← flagg|psf|Egypt|pref=dateflagg|psp|Egypt|suff=at the Olympics← flagg|psp|Egypt|suff=at the Olympicsflagg|psp|Egypt|avar=fb← flagg|psp|Egypt|avar=fbflagg|psp|Egypt|avar=football← flagg|psp|Egypt|avar=footballflagg|psp|Egypt|avar=fbu|age=20← flagg|psp|Egypt|avar=fbu|age=20flagg|psf|Egypt|avar=navy← flagg|psf|Egypt|avar=navy
Data template not found:
flagg|isc|Belfast← flagg|isc|Belfastflagg|isc|Belfast|image=Flag of Belfast.svg← flagg|isc|Belfast|image=Flag of Belfast.svg
مقارنة مع قوالب تانيه
[تعديل]هذه القوالب تسبق قالب flagg، مع أن أغلبها لا تملك خيارات لتخصيص الوصلات والصور، إلا أنها ممكن تكون أسرع لأنها تقوم بس بوظيفتين دون الاستناد للوا.
قوالب عامة
[تعديل]| القالب | قالب {{flagg}} مقابل |
مثال |
|---|---|---|
{{علم|البلد}} |
{{flagg|unc|البلد}} |
الصينflagg|unc|China ← flagg|unc|China
|
{{flagbig|البلد}} |
{{flagg|ulc|البلد|sz=l}} |
Chinaflagg|ulc|China|sz=l ← flagg|ulc|China|sz=l
|
{{flagc|البلد}} |
{{flagg|inc|البلد}} |
Chinaflagg|inc|China ← flagg|inc|China
|
{{علم الدولة|البلد}} |
{{flagg|unce|البلد}} |
CHNflagg|unce|CHN ← flagg|unce|CHN
|
{{علم ديكو|البلد}} |
{{flagg|uxx|البلد}} |
الصينflagg|uxx|China ← flagg|uxx|China
|
{{رمز علم|البلد}} |
{{flagg|cxx|البلد}} |
الصينflagg|cxx|China ← flagg|cxx|China
|
{{صورة رمز علم|image}} |
{{flagg|uxx|image=image}} |
Flag of China.svgflagg|uxx|image=Flag of China.svg ← flagg|uxx|image=Flag of China.svg
|
{{رابط علم|البلد|لاحقة }} |
{{flagg|unp|البلد|suff=لاحقة }} |
الصين|at the Hopman Cupflagg|unp|China|suff=at the Hopman Cup ← flagg|unp|China|suff=at the Hopman Cup
|
{{flag+link|بادئة|البلد}} |
{{flagg|unp|البلد|pref=بادئة}} (no existence check) |
Agriculture in|Chinaflagg|unp|China|pref=Agriculture in ← flagg|unp|China|pref=Agriculture in
|
{{Flaglist|البلد}} |
{{flagg|usc|البلد}} |
Chinaflagg|usc|China ← flagg|usc|China
|
{{flagof|البلد}} |
{{flagg|unp|البلد|sz=l}} |
Chinaflagg|unp|China|sz=l ← flagg|unp|China|sz=l
|
{{علم يمين|البلد}} |
{{flagg|uncr|البلد}} |
Chinaflagg|uncr|China ← flagg|uncr|China
|
{{Flagu|البلد}} |
{{flagg|unu|البلد}} |
Chinaflagg|unu|China ← flagg|unu|China
|
{{Noflag|البلد}} |
{{flagg|xnu|البلد}} |
Chinaflagg|xnu|China ← flagg|xnu|China
|
{{Noflag|[[country]]}} |
{{flagg|xnc|البلد}} |
الصينflagg|xnc|China ← flagg|xnc|China
|
قوالب رياضية/عسكرية
[تعديل]تستخدم الأمثلة قوالب كرة القدم، وبقية الألعاب الرياضية تعمل تبع لذلك.
| القالب | قالب {{flagg}} مقابل |
مثال |
|---|---|---|
{{ك ق|البلد}} |
{{flagg|unpe|البلد|avar=fb}} |
فرنساflagg|unpe|فرنسا|avar=fb ← flagg|unpe|فرنسا|avar=fb
|
{{ك ق|البلد|align=1}} |
{{flagg|uspe|البلد|avar=fb|al=c}} |
فرنسا|align=1flagg|uspe|فرنسا|avar=fb|al=c ← flagg|uspe|فرنسا|avar=fb|al=c
|
{{ك ق-كبير|البلد}} |
{{flagg|ulpe|البلد|avar=fb|sz=l}} |
فرنساflagg|ulpe|فرنسا|avar=fb|sz=l ← flagg|ulpe|فرنسا|avar=fb|sz=l
|
{{ك ق-يم|البلد}} |
{{flagg|unpre|البلد|avar=fb}} |
فرنساflagg|unpre|فرنسا|avar=fb ← flagg|unpre|فرنسا|avar=fb
|
{{ك ق ت|عمر|البلد}} |
{{flagg|unpe|البلد|avar=fbu|age=عمر}} |
17|فرنساflagg|unpe|فرنسا|avar=fbu|age=17 ← flagg|unpe|فرنسا|avar=fbu|age=17
|
{{ك ق ن|البلد}} |
{{flagg|unpe|البلد|avar=fbw}} |
فرنساflagg|unpe|فرنسا|avar=fbw ← flagg|unpe|فرنسا|avar=fbw
|
{{Fbwu|عمر|البلد}} |
{{flagg|unpe|البلد|avar=fbwu|age=عمر}} |
17|فرنساflagg|unpe|فرنسا|avar=fbwu|age=17 ← flagg|unpe|فرنسا|avar=fbwu|age=17
|
{{Army|البلد}} |
{{flagg|unfe|البلد|avar=army}} (لا يتجاوز الاسم التلقائى) |
فرنساflagg|unfe|فرنسا|avar=army ← flagg|unfe|فرنسا|avar=army
|
{{بحرية|البلد}} |
{{flagg|unfe|البلد|avar=navy}} (لا يتجاوز الاسم التلقائى) |
فرنساflagg|unfe|فرنسا|avar=navy ← flagg|unfe|فرنسا|avar=navy
|
{{قوات جوية|البلد}} |
{{flagg|unfe|البلد|avar=air force}} (لا يتجاوز الاسم التلقائى) |
فرنساflagg|unfe|فرنسا|avar=air force ← flagg|unfe|فرنسا|avar=air force
|
local titleSelf = mw.title.new(... or mw.getCurrentFrame():getTitle())
local titleCountryData = mw.title.new[[Module:CountryData]]
if titleSelf.isSubpage then
local sandbox = titleSelf.subpageText:match[[^sandbox]]
if sandbox then
titleCountryData = titleCountryData:subPageTitle(sandbox)
end
end
local CountryData = require(tostring(titleCountryData))
local p = {}
function p.main(frame)
--Get input arguments
local args = require('Module:Arguments').getArgs(frame,{valueFunc =
function(key,value)
if value then
value = mw.text.trim(value)
--Change empty string to nil for all args except 'image' and 'border'
if key=="image" or key=="border" or value~="" then
return value
end
end
return nil
end
})
--Call main function
return p.luaMain(frame,args)
end
function p.luaMain(frame,args)
local function emp2nil(x)
if x=="" then return nil else return x end
end
local function space2emp(x)
if string.find(x,"^%s*$") then return "" else return x end
end
local function nopx(x)
if x~=nil and (string.find(x,"^%d+$") or string.find(x,"^%d+px$")) then return string.gsub(x,"^(.*)px","%1") else return nil end
end
--Country & mode parameters
local mode = string.lower(args[1] or "usc")
local mi = string.sub(mode,1,1)
local ms = string.sub(mode,2,2)
local mn = string.sub(mode,3,3)
local me = string.sub(mode,4,-1)
local country = args[2] or ""
local countryDataCountry = country
if string.find(me, "i") then
local titleIocCountryData = mw.title.new[[Module:Country alias/data]]
local IocCountryData = require(tostring(titleIocCountryData))
local iocCountryAlias = IocCountryData.countryAliases[country] or country
countryDataCountry = IocCountryData.countries[iocCountryAlias]["countrydata_name"] or IocCountryData.countries[iocCountryAlias]["name"]
end
local avar = args["avar"] or args["altvar"]
local clink = args["clink"] or args["link"]
--Get country data & altvar data
local data, alink, amap, asuf
if avar then
local age = args["age"] or ""
local aalias
amap, aalias = require("Module:Flagg/Altvar data").alttable(age)
avar = string.gsub(string.lower(avar or ""),"[ -]","")
avar = aalias[avar] or avar
if not amap[avar] then error("Unknown avar") end
local apar = {altvar=amap[avar].altvar;mw=amap[avar].mw;age=amap[avar].age;variant=args["variant"] or args[3]}
data = CountryData.getcachedtable(frame, countryDataCountry, apar)
asuf = amap[avar].altlink
alink = data["link alias-"..amap[avar].altvar] or (clink or data["shortname alias"] or data.alias or country).." "..asuf
else
data = (args["nodata"] and {}) or CountryData.getcachedtable(frame, countryDataCountry, {variant=args["variant"] or args[3]})
avar = ""
amap = {[""]={altvar=""}}
end
--Name and link parameters
clink = clink or data.alias or country
local pref = args["pref"]
local suff = args["suff"] or asuf
local pref2 = args["pref2"]
local suff2 = args["suff2"]
if not pref and not suff then --Default prefix
pref = "Flag of"
end
local yn_map = {[""]=0; ["0"]=0; ["no"]=0; ["n"]=0; ["1"]=1; ["yes"]=1; ["y"]=1}
local fthe = (args["pthe"] and yn_map[args["pthe"]]~=0) or (args["the"] and yn_map[args["the"]]~=0)
local nthe = (args["nthe"] and yn_map[args["nthe"]]~=0) or (args["the"] and yn_map[args["the"]]~=0)
fthe = fthe and (pref and "t" or "T").."he " or ""
nthe = nthe and (pref and "t" or "T").."he " or ""
local flink = args["plink"] or args["flink"] or alink
or clink=="" and "" or space2emp((pref or "").." ")..fthe..clink..space2emp(" "..(suff or ""))
local flink2
if args["plink2"] or args["flink2"] or pref2 or suff2 then
flink2 = args["plink2"] or args["flink2"] or clink=="" and "" or space2emp((pref2 or "").." ")..fthe..clink..space2emp(" "..(suff2 or ""))
else
flink2 = flink
end
local fsec = args["psection"] or args["section"]
local fsec2 = args["psection2"] or args["section"]
local csec = args["csection"] or args["section"]
fsec = fsec and "#"..fsec or ""
fsec2 = fsec2 and "#"..fsec2 or ""
csec = csec and "#"..csec or ""
if string.find(me,"f") then
if mw.title.new( flink ).exists == false then
if flink2 ~= flink and mw.title.new ( flink2 ).exists == true then
flink = flink2
fsec = fsec2
else
flink = clink
end
end
end
local name = args["name"]
if not name then
local cname = string.find(me,"e") and (data["name alias-"..amap[avar].altvar] or data["shortname alias"] or data.alias) or country
if mn == "f" then
name = cname=="" and "" or space2emp((pref or "").." ")..nthe..cname..space2emp(" "..(suff or ""))
else
name = cname
end
end
--Image parameters
local pimage = args["image"]
local placeholder = "Flag placeholder.svg"
local variant = args["variant"] or args[3] or ""
local image_map = {[""]=placeholder; ["none"]=placeholder; ["blank"]=placeholder}
if pimage then --Remove namespace
pimage = string.gsub(pimage,"^[Ff][Ii][Ll][Ee]:","")
pimage = string.gsub(pimage,"^[Ii][Mm][Aa][Gg][Ee]:","")
end
local iname = image_map[pimage] or pimage
local size = args["size"] or args["sz"]
local size_map = {xs="12x8px"; s="17x11px"; m="23x15px"; l="32x21px"; xl="46x30px"}
if size==nil or string.find(size,"^%d*x?%d+px$") then
--valid EIS size (..px, x..px or ..x..px) or unset
elseif string.find(size,"^%d*x?%d+$") then --EIS size without "px" suffix
size=size.."px"
else --size from map, or invalid value
size = size_map[size] or nil
end
local border = args["border"]
if iname then
size = size or "23x15px"
if yn_map[border]==0 then border = "" else border = "|border" end
else
iname = data["flag alias-"..amap[avar].altvar.."-"..variant] or data["flag alias-"..variant] or data["flag alias-"..amap[avar].altvar] or data["flag alias"] or placeholder
size = size or emp2nil(data.size) or "23x15px"
if border then
if yn_map[border]==0 then border = "" else border = "|border" end
else
local autoborder = data["border-"..variant] or data["border-"..amap[avar].altvar] or data.border
if autoborder and autoborder~="border" then border = "" else border = "|border" end
end
end
local am = ""
if args["alt"] or string.find(me,"a") then
am = args["alt"] or args["name"] or country
am = am.."|"..am
end
--Build display name
local text = args["text"]
if not text then
if mn=="x" then --no text
text = ""
elseif mn=="p" or mn=="f" or mn == "*" then --prefix/suffix link
text = flink=="" and name or "[["..flink..fsec.."|"..name.."]]"
-- By the principle of least surprise, there should be some
-- indication that the link [[X of Country|Country]] does not
-- go to [[Country]].
if mn == "*" and clink ~= flink then
text = text:sub(1, -3) .. "\226\128\175*]]" end
elseif mn=="l" then --display link target
text = flink=="" and name or "[["..flink..fsec.."|"..(args["name"] or flink).."]]"
elseif mn=="b" then --both prefix/suffix and normal country link
local preflink = pref and (flink=="" and pref.." " or "[["..flink..fsec.."|"..pref.."]] ") or ""
local sufflink = suff and (flink=="" and " "..suff or " [["..flink..fsec.."|"..suff.."]]") or ""
local namelink = (name=="" and "" or nthe)..(clink=="" and name or "[["..clink..csec.."|"..name.."]]")
text = preflink..namelink..sufflink
elseif mn=="d" then --data template
local title = mw.title.new("Template:Country data "..country)
--check if redirect
if title.isRedirect then
text = "<span class=\"plainlinks\">["..title:fullUrl("redirect=no").." "..name.."]</span>"
else
text = "[["..title.fullText.."|"..name.."]]"
end
elseif mn=="u" then --unlinked
text = name
elseif mn=="a" then --abbr
text = name==country and (clink==country and country or "<abbr title='"..clink.."'>"..country.."</abbr>") or ("<abbr title='"..name.."'>"..country.."</abbr>")
else --country link (default)
text = clink=="" and name or "[["..clink..csec.."|"..name.."]]"
end
if string.find(me,"p") then
text = "("..text..")"
end
end
if type(text) == 'function' then
text = text(data)
end
--Define separator
local separator = " "
if ms=="x" then --no separator
separator = ""
elseif ms=="l" then --line break
separator = "<br />"
end
--Add preftext, if used
local preftext = args["preftext"]
if (preftext or "") ~= "" then
text = preftext..separator..text
end
--Build image
local ilink = args["ilink"]
if not ilink then
if mi=="x" or (iname==placeholder and pimage~=placeholder) then --no image/invisible image
iname = placeholder
border = ""
ilink = "|link="
am = ""
elseif mi=="i" then --image page link
ilink = ""
elseif mi=="c" then --country link
ilink = "|link="..clink..(clink=="" and "" or csec)
elseif mi=="p" or mi=="f" then --prefix/suffix link
ilink = "|link="..flink..(flink=="" and "" or fsec)
elseif mi=="d" then --data template
local title = mw.title.new("Template:Country data "..country)
--check if redirect
if title.isRedirect then
ilink = "|link="..title:fullUrl("redirect=no")
else
ilink = "|link="..title.fullText
end
else --unlinked (default)
ilink = "|link="
end
end
if am == "" and string.find(me,"l") then
am = mw.ustring.sub(ilink,7,-1)
end
local image = "[[File:"..iname.."|"..size..border..ilink.."|alt="..am.."]]"
if iname==placeholder then
if require('Module:yesno')(args["noredlink"]) == false or args["noredlink"] == "notext" then
if country ~= '' and data.alias == nil then
iname = ''
image = "[[:Template:Country data "..country.."]]"
if args["noredlink"] == "notext" then
text = ''
end
end
end
if (args["missingcategory"] or '') ~= '' then
image = image..args["missingcategory"]
end
if string.find(me,"b") then
text = ''
end
end
--Combine image and name with separator
local align_map = {left="left", l="left", center="center", centre="center", c="center", middle="center", m="center", right="right", r="right"}
local align = align_map[args["align"] or args["al"]]
local nalign = align_map[args["nalign"] or args["nal"]]
local out
if string.find(me,"r") then
--image right of name
if (ms=="x" and mi=="x") or (string.find(me,"o") and iname==placeholder and pimage~=placeholder) then --name only
out = text
elseif ms=="x" or ms=="n" or ms=="l" then --no separator, non-breaking space, or line break
out = text.."<span class=\"flagicon nowrap\">"..separator..image.."</span>"
elseif ms=="t" then --table cell
out = "style=\"text-align:"..(nalign or "left").."\"|"..text.."||style=\"text-align:"..(align or "center").."\"|<span class=\"flagicon\">"..image.."</span>"
else --fixed-width span box (default)
local width = args["width"] or args["w"] or require("Module:Flaglist").luawidth(size)
out = text.."<span class=\"nowrap\"> <span class=\"flagicon\" style=\"display:inline-block;width:"..width.."px;text-align:"..(align or "right").."\">"..image.."</span></span>"
end
else --image left of name
if (ms=="x" and mi=="x") or (string.find(me,"o") and iname==placeholder and pimage~=placeholder) then --name only
out = text
elseif ms=="x" or ms=="n" or ms=="l" then --no separator, non-breaking space, or line break
out = "<span class=\"flagicon\">"..image..separator.."</span>"..text
elseif ms=="t" then --table cell
out = "style=\"text-align:"..(align or "center")..";\"|<span class=\"flagicon\">"..image.."</span>||style=\"text-align:"..(nalign or "left").."\"|"..text
else --fixed-width span box (default)
local width = nopx(args["width"] or args["w"]) or require("Module:Flaglist").luawidth(size)
out = "<span class=\"nowrap\"><span class=\"flagicon\" style=\"display:inline-block;width:"..width.."px;text-align:"..(align or "left").."\">"..image.."</span> </span>"..text
end
end
-- align in table
if me:find("t") then
out = 'style="text-align:'..(align or 'left')..'"|'..out
end
--Tracking categories
local cat = ""
if pimage and not image_map[pimage] and country~="" and data["flag alias"] and not args.demo then
cat = "[[Category:Pages using Flagg with specified image instead of data template image]]"
end
return out..cat
end
p[''] = p.main
return p