Privacy Policy Cookie Policy Terms and Conditions Pomoc:Funkcje parsera - Wikipedia, wolna encyklopedia

Pomoc:Funkcje parsera

Z Wikipedii

Przeprowadzana jest gruntowna przebudowa tego artykułu.

Aby zapobiec konfliktom edycji inni użytkownicy proszeni są o niedokonywanie w nim zmian do czasu usunięcia tego komunikatu lub skontaktowanie się z wikipedystą tomta1.

Skrót: WP:FP Poniższy artykuł dotyczy funkcji parsera. Jest to luźne tłumaczenie artykułu meta, dostępnego tutaj.

Funkcje parsera są rozszerzeniami mechanizmu szablonów ułatwiającymi konstrukcję skomplikowanych szablonów, dających różne efekty w zależności od użytych parametrów. Zostały aktywowane na wszystkich wikipediach na zasadzie testu.


Spis treści

[edytuj] Funkcje

Istnieje rozszerzenie MediaWiki, będące kolekcją funkcji parsera. Ich wywołanie najczęściej ma postać:

{{#nazwa_fukcji: argument 1 | argument 2 | argument 3...}}

Poniżej opisano pięć funkcji: if, ifeq, switch, expr oraz ifexpr

[edytuj] if

If (z ang. jeśli, jeżeli). Funkcja if ma w ogólności postać:

{{#if: warunek | tekst 1 | tekst 2 }}

czyli:

{{#if: niepusty argument 1|to wyświetl argument 2|w przeciwnym wypadku wyświetl argument 3}}

Jeśli warunek nie jest pusty, albo nie zawiera samych spacji, to wyświetlany jest tekst 1. W przeciwnym wypadku (gdy pole warunek jest puste, albo zawiera same spacje) wyświetlany jest tekst 2.

[edytuj] Sprawdzanie parametru szablonu

Jako warunek w różnych szablonach najlepiej podawać dowolny parametr i w ten sposób szablon będzie mógł "reagować" na to czy parametr jest pusty czy nie.

{{#if: {{{parametr|}}} | Parametr jest nie pusty. | Parametr nie został podany lub jest pusty.}}
  • Wywołanie jako {{Szablon|parametr=cokolwiek}} daje wynik:
Parametr jest nie pusty.
  • Wywołanie jako {{Szablon|parametr=}} lub po prostu {{Szablon}} daje wynik:
Parametr nie został podany lub jest pusty.

Czyli w pierwszej sytuacji wyświetlany jest pierwszy tekst, a w drugiej ten drugi.

[edytuj] Sprawdzanie i wstawianie parametru

Skoro można przetestować, czy jakiś parametr jest pusty, to można go też dalej wstawić i wyświetlić.

{{#if: {{{parametr|}}} | Parameter jest nie pusty i oto on: {{{parametr|}}}. | Parameter nie został podany lub jest pusty.}}
  • Wywołanie jako {{Szablon|parametr=cokolwiek}} daje wynik:
Parameter jest nie pusty i oto on: cokolwiek.
  • Wywołanie jako {{Szablon|parametr=}} lub po prostu {{Szablon}} jest identyczne jak wyżej i daje wynik:
Parameter nie został podany lub jest pusty.

[edytuj] Przykład użytkowy

Nieco sensowniejszym przykładem, który pozwoli zrozumieć po co to jest, może być poniższy prosty szablon:

{{#if:{{{kobieta|}}}|Ta wikipedystka|Ten wikipedysta}} potrafi już używać funkcji parsera i jest z tego dumn{{#if:{{{kobieta|}}}|a|y}}.
  • Wywołanie jako {{Szablon|kobieta=tak}} daje wynik:
Ta wikipedystka potrafi już używać funkcji parsera i jest z tego dumna.
  • Wywołanie jako {{Szablon|kobieta=}}
Ten wikipedysta potrafi już używać funkcji parsera i jest z tego dumny.

Wszystko będzie w porządku póki będziemy pamiętać, że sprawdzane jest tylko, czy podany parametr jest pusty, stąd

  • Wywołanie jako {{Szablon|kobieta=nie}} daje wynik:
Ta wikipedystka potrafi już używać funkcji parsera i jest z tego dumna.

[edytuj] ifeq

ifeq (od if equalang. jeśli równe). Funkcja ifeq ma w ogólności postać:

{{#ifeq: porównaj A | porównaj B | tekst 1 | tekst 2 }}

czyli:

{{#ifeq: argument 1|jest równy argument 2 | to wyświetl argument 3|w przeciwnym wypadku wyświetl argument 4}}

Jeśli porównaj A i porównaj B są identyczne, to wyświetlany jest tekst 1. W przeciwnym wypadku (gdy pole porównaj A i porównaj B są różne) wyświetlany jest tekst 2.

[edytuj] Przykład użytkowy w wydaniu ifeq

Funkcja ifeq nadaje się idealnie do uczynienia poprzedniego szablonu nieco bardziej intuicyjnym:

{{#ifeq:{{{kobieta}}}|tak|Ta wikipedystka|Ten wikipedysta}} potrafi już używać funkcji parsera i jest z tego dumn{{#ifeq:{{{kobieta}}}|tak|a|y}}.
  • Wywołanie jako {{Szablon|kobieta=tak}} daje wynik:
Ta wikipedystka potrafi już używać funkcji parsera i jest z tego dumna.
  • Wywołanie jako {{Szablon|kobieta=}}
Ten wikipedysta potrafi już używać funkcji parsera i jest z tego dumny.
  • Wywołanie jako {{Szablon|kobieta=nie}} daje wynik:
Ten wikipedysta potrafi już używać funkcji parsera i jest z tego dumny.

[edytuj] Prostszy przykład

Ale żeby nie zagubić sensu może warto jednak dać dwa proste przykłady (tym razem bez użycia szablonów).

  • Treść przykładu (1)
{{#ifeq: tak | tak | podane argumenty są równe | podane argumenty są różne }}
  • Wynik
podane argumenty są równe
  • Treść przykładu (2)
{{#ifeq: tak | nie | podane argumenty są równe | podane argumenty są różne }}
  • Wynik
podane argumenty są różne

Czyli tak jest równe tak, nie jest różne od tak. To chyba oczywiste ☺.

W wypadku tej funkcji też można jednak ponarzekać, że nie wszystko jest tak jak chcemy:

  • Treść przykładu (3)
{{#ifeq: tak | Tak | podane argumenty są równe | podane argumenty są różne }}
  • Wynik
podane argumenty są różne

Jednak tak jest różne od Tak, co jak się przyjrzeć może nie jest aż takie dziwne ;).

[edytuj] ifexist

ifexist (od if existang. jeśli istnieje). Funkcja ifexist ma w ogólności postać:

{{#ifexist: artykuł | tekst 1 | tekst 2 }}

czyli:

{{#ifexist: artykuł o nazwie argument 1|to wyświetl argument 2|w przeciwnym wypadku wyświetl argument 3}}

Jeśli istnieje artykuł, to wyświetl tekst 1. W przeciwnym wypadku (gdy artykuł nie istnieje) wyświetlany jest tekst 2.

[edytuj] Przykłady

{{#ifexist:Coś|Coś istnieje|Coś nie istnieje}} - daje w wyniku "Coś nie istnieje", bo artykuł Coś nie istnieje.
{{#ifexist:Łoś|Łoś istnieje|Łoś nie istnieje}} - daje w wyniku "Łoś istnieje", bo artykuł Łoś istnieje.

[edytuj] Wyjątki

Tu należy zwrócić uwagę, że funkcja działa analogicznie do oznaczania linków na niebiesko (gdy artykuł istnieje) i na czerwono (gdy artykuł nie istnieje). Jak do tej pory, takie oznaczanie linków nie działa dla interwiki (oraz linków do pokrewnych projektów). Podobnie ta funkcja parsera nie obsługuje tego rodzaju linków.

Choć en:Moose istnieje, to:
{{#ifexist::en:Moose|Moose istnieje?|Moose nie istnieje?}}
daje w wyniku "Moose nie istnieje?", co nie jest prawdą.

[edytuj] switch

switch porównuje pojedynczą wartość z wieloma innymi. Jeżeli znajdzie taką samą wartość zwraca odpowiedni ciąg znaków. W przeciwnym wypadku zwróci wartość domyślną, o ile taka zostanie podana.

sposób wywołania:

{{ '''#switch:''' ''wartość do porównania''
 | ''wartość<sub>1</sub>'' = ''wynik<sub>1</sub>''
 | ''wartość<sub>2</sub>'' = ''wynik<sub>2</sub>''
 | ''...''
 | ''wartość<sub>n</sub>'' = ''wynik<sub>n</sub>''
 | ''wartość domyślna''
 }}

lub (w przypadku gdy wartość domyślna musi zawierać znak równości):

{{ '''#switch:''' ''wartość do porównania''
 | ''wartość<sub>1</sub>'' = ''wynik<sub>1</sub>''
 | ''wartość<sub>2</sub>'' = ''wynik<sub>2</sub>''
 | ''...''
 | ''wartość<sub>n</sub>'' = ''wynik<sub>n</sub>''
 | '''#default''' = ''wartość domyślna''
 }}

lub (w przypadku gdy dla kilku różnych wartości ma być ten sam wynik):

{{ '''#switch:''' ''wartość do porównania''
 | ''wartość<sub>1</sub>''
 | ''wartość<sub>2</sub>''
 | ''wartość<sub>3</sub>'' = ''wynik<sub>1/2/3</sub>''
 | ''...''
 | ''wartość<sub>n</sub>'' = ''wynik<sub>n</sub>''
 | ''wartość domyślna''
 }}

Przykład:

{{ #switch: {{{dzień}}}
 | 1 = poniedziałek
 | 2 = wtorek
 | 3 = środa
 | 4 = czwartek
 | 5 = piątek
 | 6 = sobota
 | 7 = niedziela
 | weekend
 }}

Porównuje treść przesyłaną przez parametr dzień. Jeśli ta treść to 1-7 w wyniku otrzymamy odpowienią nazwę dnia tygodnia. Gdy treść będzie inna lub pędzie pusta, otrzymamy tekst weekend.

[edytuj] expr

Funkcja expr wykonuje obliczenia matematyczne.

{{ #expr: wyrażenie }}


[edytuj] Tabela używanych operatorów

Operator Operacja matematyczna Przykład
+ Dodawanie {{#expr: 30 + 7}} = 37
- Odejmowanie {{#expr: 30 - 7}} = 23
* Mnożenie {{#expr: 30 * 7}} = 210
/
div
Dzielenie {{#expr: 30 / 7}} = 4.2857142857143
round x Zaokrąglanie do x miejsc po przecinku {{#expr: 30 / 7 round 3}} = 4.286
mod Dzielenie modulo (reszta z dzielenia) {{#expr: 30 mod 7}} = 2
Operatory logiczne ("1" - prawda, "0" - fałsz)
= Równa się {{#expr: 30 = 7}} = 0
<>
 !=
Nie równa się (jest większe lub mniejsze) {{#expr: 30 <> 7}} = 1
< Mniejsze niż {{#expr: 30 < 7}} = 0
> Większe niż {{#expr: 30 > 7}} = 1
<= Mniejsze lub równe {{#expr: 30 <= 7}} = 0
>= Większe lub równe {{#expr: 30 >= 7}} = 1
and Logiczne i {{#expr: 30 and 7}} = 1
or Logiczne lub {{#expr: 30 or 7}} = 1
not logiczne nie {{#expr: not 7}} = 0
Specjalne
( ) Grupowanie {{#expr: (30 + 7) * 5 }} = 185

UWAGA! Łącznikiem dziesiętnym liczb jest . kropka (półtora=1.5).

[edytuj] Praktyczny przykład

Aby obliczyć ile stopni Celsjusza odpowiada 100°F można skorzystać ze wzoru (wyrażenia) podanego poniżej.

  • Treść przykładu:
{{#expr: (100 - 32) / 9 * 5 round 0 }}
  • Wynik:
{{#expr: (100 - 32) / 9 * 5 round 0}}

100°F nie jest dokładnie równe 38°C, jednak dzięki użyciu round 0, wynik został zaokrąglony do najbliższej liczby całkowitej.

[edytuj] ifexpr

ifexpr wykonuje działanie matematyczne i zwraca jeden lub drugi string w zależności od wyniku.

{{#ifexpr: wyrażenie | wtedy tekst 1 | w przeciwnym wypadku tekst 2}}

Jeżeli wyrażenie da wynik 0, to zostanie wyświetlony tekst w przeciwnym wypadku tekst 2. Natomiast, jeżeli wynikiem jest liczba inna niż 0, to wyświetlony zostanie tekst wtedy tekst 1. Funkcja obsługuje te same operatory co funkcja expr.

[edytuj] time

time zwraca czas w zdanym formacie także dla daty podanej w opcjonalnym drugim parametrze, bądź w wersji względnej (np. +1 month).

{{ #time: format | określenie czasu (opcjonalne) }}

Opisy formatu po polsku znajdziesz na pl.php.net. Dodatkowe możliwe kody podano poniżej (rozszerzenie składni PHP).

Kod Opis
xg Wyświetla nazwę miesiąca w dopełniaczu (np. "września").
xn Następujący po tej sekwencji znaków kod formatu (na przykład godziny 'H') zostanie wyświetlony jako kod ASCII. Dla przykładu w języku Hindi, {{#time:H, xnH}} da w wyniku ०६, 06.
xr Następujący po tej sekwencji znaków kod formatu (na przykład godziny 'H') zostanie wyświetlony jako liczba rzymska; przykład {{#time:H, xrH}} da w wyniku 14, XIV
xx Wyświetla znak 'x'
Zobacz więcej: na meta (en).

[edytuj] Znak potoku

Przy tworzeniu tabel w formacie MediaWiki należy użyć szablonu {{!}} zamiast znaku potoku (|), gdyż funkcje parsera uniemożliwiają zwykłe jego wstawienie (alternatywnie można użyć składni HTML). Przy wpisywaniu znaku potoku jako zwykły tekst można użyć konstrukcji <nowiki>|</nowiki>.

[edytuj] Nowy wiersz

W obrębie funkcji parsera należy użyć składni HTML dla nowego wiersza (<br/>).

[edytuj] Nowy akapit

W następującym przypadku:

Pierwszy akapit, wyświetlany zawsze.{{#if:{{{1|}}}| 

Drugi akapit, wyświetlany jedynie, gdy zostanie podany argument {{{1}}}.}}

należy dodać <nowiki/> przed rozpoczęciem drugiego akapitu (tzw. whitespace) aby został poprawnie wyświetlony, np.:

Pierwszy akapit, wyświetlany zawsze.{{#if:{{{1|}}}|<nowiki/>

Drugi akapit, wyświetlany jedynie, gdy zostanie podany argument {{{1}}}.}}

[edytuj] Linki zewnętrzne

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu