Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.39.0-wmf.25
first-letter
Media
Specjalna
Dyskusja
Wikipedysta
Dyskusja wikipedysty
Wikibooks
Dyskusja Wikibooks
Plik
Dyskusja pliku
MediaWiki
Dyskusja MediaWiki
Szablon
Dyskusja szablonu
Pomoc
Dyskusja pomocy
Kategoria
Dyskusja kategorii
Wikijunior
Dyskusja Wikijuniora
TimedText
TimedText talk
Moduł
Dyskusja modułu
Gadżet
Dyskusja gadżetu
Definicja gadżetu
Dyskusja definicji gadżetu
Szablon:R
10
25502
438581
319226
2022-08-23T12:49:51Z
Persino
2851
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Powtarzaj|wytnij=tak|{{((}}Ref{{!}}nazwa{{=}}{{(((}}{{((}}_{{))}}{{)))}}{{!}}grupa{{=}}{{(((}}grupa{{((}}_{{))}}{{!}}{{)))}}{{))}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
8zr2dd91ehxu2a5pw4d35ypoqyavpw3
Szablon:R/opis
10
25503
438589
394720
2022-08-23T16:43:14Z
Persino
2851
/* Użycie */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
{{Wysokie ryzyko}}
{{Spis treści}}
== Użycie ==
Szablony {{s|r}} i {{s|u}} służą do skracania przypisów w tekście.
{{Pre|{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu"}} /{{Większy}}{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu2"}} {{Span|styl=color:green|/{{Większy}}}} → {{s|r|nazwa przypisu|nazwa przypisu2}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa uwagi"}} {{Span|styl=color:limegreen|group}}{{=}}{{Span|styl=color:red|"uwaga}} {{Span|styl=color:green|/{{Większy}}}} → {{s|u|nazwa uwagi}}
}}
Umożliwiają wstawienie jednocześnie dowolnej liczby przypisów.
{{Pre|{{s|r|nazwa przypisu}}{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3|...|nazwa przypisu10|...}}}}
Szablon {{s|r}} służy głównie do stosowania wraz z szablonem {{s|Przypisy}}, w którym przypisy zgrupowane są w jednym miejscu (w odpowiednim parametrze szablonu).
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}przypis{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}przypis2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}przypis3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
Z kolei {{s|u}} pozwala skracać zapis przypisów rzeczowych (szablon {{s|Uwagi}}).
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu}}"{{Span|styl=color:green|{{Większy}}}}uwaga{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}uwaga2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}>uwaga3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
== Opis parametrów ==
* '''<code>1</code>''', ..., '''<code>10</code>''' – nazwy przypisów (atrybut <code>name</code> znacznika <code><nowiki><ref></nowiki></code>).
* '''<code>grupa1</code>''', ..., '''<code>grupa10</code>''' – grupa przypisów (atrybut <code>group</code> znacznika <code><nowiki><ref></nowiki></code>) (tylko szablon {{s|r}}).
* '''stopień''' - jest to jakaś liczba równa się od jeden do sześciu symbolizujących sekcje (opcjonalny).
Szablony obsługują do 10 parametrów. W przypadku wypełnienia 11 parametru pojawi się komunikat ''Szablon obsługuje maksymalnie 10 przypisów (zmień go!)'' w miejscu wstawienia szablonu.
Nazwy przypisów nie mogą być samymi liczbami, mogą zawierać spacje. W szablonach {{s|r}} / {{s|u}} nie stosuje się cudzysłowów, jednak zaleca się ich stosowanie przy podawaniu przypisów w postaci <code><nowiki><ref name="nazwa przypisu">...</ref></nowiki></code>.
== Przykład ==
<div style="width:50%; float:right; overflow:auto; margin:0px 0px 0px 10px;"><pre>Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej
wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak
najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję
tekstów{{r|nota1|grupa1=nota}}, w których został
użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu
artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania
przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po
to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać
możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj
nie ma potrzeby stosowania go w artykułach.
; Uwagi
{{Uwagi|stopień nagłówka=|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
; Adnotacje
{{Przypisy|stopień nagłówka=|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
; Przypisy
{{Przypisy|stopień nagłówka=|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}</pre></div>
Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję tekstów{{r|nota1|grupa1=nota}}, w których został użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj nie ma potrzeby stosowania go w artykułach.
; Uwagi
{{Uwagi|bez kategorii=tak|stopień nagłówka=|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
; Adnotacje
{{Przypisy|bez kategorii=tak|stopień nagłówka=|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
; Przypisy
{{Przypisy|bez kategorii=tak|stopień nagłówka=|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}
{{BrClear}}
== Konwersja przypisów ==
Istnieje narzędzie (skrypt) o nazwie [[w:Wikipedysta:Matma_Rex/prettyref.js|prettyref.js]] konwertujące przypisy typu <nowiki><ref>...</ref> na {{r|...}}</nowiki>. Opis jego użycia znajduje się w tekście wskazanego skryptu.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
[[Kategoria:Szablony do formatowania przypisów|{{PAGENAME}}]]
</includeonly>
7qca5znxnh4mjbmzcovae35cw1grs5z
438590
438589
2022-08-23T16:48:17Z
Persino
2851
/* Użycie */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
{{Wysokie ryzyko}}
{{Spis treści}}
== Użycie ==
Szablony {{s|r}} i {{s|u}} służą do skracania przypisów w tekście.
{{Pre|{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu"}} /{{Większy}}{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu2"}} {{Span|styl=color:green|/{{Większy}}}} → {{s|r|nazwa przypisu|nazwa przypisu2}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa uwagi"}} {{Span|styl=color:limegreen|group}}{{=}}{{Span|styl=color:red|"uwaga}} {{Span|styl=color:green|/{{Większy}}}} → {{s|u|nazwa uwagi}}
}}
Umożliwiają wstawienie jednocześnie dowolnej liczby przypisów.
{{Pre|{{s|r|nazwa przypisu}}{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3|...|nazwa przypisu10|...}}}}
Szablon {{s|r}} służy głównie do stosowania wraz z szablonem {{s|Przypisy}}, w którym przypisy zgrupowane są w jednym miejscu (w odpowiednim parametrze szablonu).
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}przypis{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}przypis2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}przypis3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{s|Ref|nazwa przypisu|przypis}}
{{s|Ref|nazwa przypisu2|przypis2}}
{{s|Ref|nazwa przypisu3|przypis3}}
}}
}}
Z kolei {{s|u}} pozwala skracać zapis przypisów rzeczowych (szablon {{s|Uwagi}}).
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu}}"{{Span|styl=color:green|{{Większy}}}}uwaga{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}uwaga2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}>uwaga3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{s|Ref|nazwa przypisu|uwaga}}
{{s|Ref|nazwa przypisu2|uwaga2}}
{{s|Ref|nazwa przypisu3|uwaga3}}
}}
}}
== Opis parametrów ==
* '''<code>1</code>''', ..., '''<code>10</code>''' – nazwy przypisów (atrybut <code>name</code> znacznika <code><nowiki><ref></nowiki></code>).
* '''<code>grupa1</code>''', ..., '''<code>grupa10</code>''' – grupa przypisów (atrybut <code>group</code> znacznika <code><nowiki><ref></nowiki></code>) (tylko szablon {{s|r}}).
* '''stopień''' - jest to jakaś liczba równa się od jeden do sześciu symbolizujących sekcje (opcjonalny).
Szablony obsługują do 10 parametrów. W przypadku wypełnienia 11 parametru pojawi się komunikat ''Szablon obsługuje maksymalnie 10 przypisów (zmień go!)'' w miejscu wstawienia szablonu.
Nazwy przypisów nie mogą być samymi liczbami, mogą zawierać spacje. W szablonach {{s|r}} / {{s|u}} nie stosuje się cudzysłowów, jednak zaleca się ich stosowanie przy podawaniu przypisów w postaci <code><nowiki><ref name="nazwa przypisu">...</ref></nowiki></code>.
== Przykład ==
<div style="width:50%; float:right; overflow:auto; margin:0px 0px 0px 10px;"><pre>Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej
wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak
najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję
tekstów{{r|nota1|grupa1=nota}}, w których został
użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu
artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania
przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po
to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać
możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj
nie ma potrzeby stosowania go w artykułach.
; Uwagi
{{Uwagi|stopień nagłówka=|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
; Adnotacje
{{Przypisy|stopień nagłówka=|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
; Przypisy
{{Przypisy|stopień nagłówka=|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}</pre></div>
Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję tekstów{{r|nota1|grupa1=nota}}, w których został użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj nie ma potrzeby stosowania go w artykułach.
; Uwagi
{{Uwagi|bez kategorii=tak|stopień nagłówka=|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
; Adnotacje
{{Przypisy|bez kategorii=tak|stopień nagłówka=|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
; Przypisy
{{Przypisy|bez kategorii=tak|stopień nagłówka=|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}
{{BrClear}}
== Konwersja przypisów ==
Istnieje narzędzie (skrypt) o nazwie [[w:Wikipedysta:Matma_Rex/prettyref.js|prettyref.js]] konwertujące przypisy typu <nowiki><ref>...</ref> na {{r|...}}</nowiki>. Opis jego użycia znajduje się w tekście wskazanego skryptu.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
[[Kategoria:Szablony do formatowania przypisów|{{PAGENAME}}]]
</includeonly>
08tkl7nlned8urgy3qry4j1hlj4docg
438595
438590
2022-08-23T17:15:29Z
Persino
2851
/* Przykład */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
{{Wysokie ryzyko}}
{{Spis treści}}
== Użycie ==
Szablony {{s|r}} i {{s|u}} służą do skracania przypisów w tekście.
{{Pre|{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu"}} /{{Większy}}{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu2"}} {{Span|styl=color:green|/{{Większy}}}} → {{s|r|nazwa przypisu|nazwa przypisu2}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa uwagi"}} {{Span|styl=color:limegreen|group}}{{=}}{{Span|styl=color:red|"uwaga}} {{Span|styl=color:green|/{{Większy}}}} → {{s|u|nazwa uwagi}}
}}
Umożliwiają wstawienie jednocześnie dowolnej liczby przypisów.
{{Pre|{{s|r|nazwa przypisu}}{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3|...|nazwa przypisu10|...}}}}
Szablon {{s|r}} służy głównie do stosowania wraz z szablonem {{s|Przypisy}}, w którym przypisy zgrupowane są w jednym miejscu (w odpowiednim parametrze szablonu).
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}przypis{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}przypis2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}przypis3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{s|Ref|nazwa przypisu|przypis}}
{{s|Ref|nazwa przypisu2|przypis2}}
{{s|Ref|nazwa przypisu3|przypis3}}
}}
}}
Z kolei {{s|u}} pozwala skracać zapis przypisów rzeczowych (szablon {{s|Uwagi}}).
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu}}"{{Span|styl=color:green|{{Większy}}}}uwaga{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}uwaga2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}>uwaga3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{s|Ref|nazwa przypisu|uwaga}}
{{s|Ref|nazwa przypisu2|uwaga2}}
{{s|Ref|nazwa przypisu3|uwaga3}}
}}
}}
== Opis parametrów ==
* '''<code>1</code>''', ..., '''<code>10</code>''' – nazwy przypisów (atrybut <code>name</code> znacznika <code><nowiki><ref></nowiki></code>).
* '''<code>grupa1</code>''', ..., '''<code>grupa10</code>''' – grupa przypisów (atrybut <code>group</code> znacznika <code><nowiki><ref></nowiki></code>) (tylko szablon {{s|r}}).
* '''stopień''' - jest to jakaś liczba równa się od jeden do sześciu symbolizujących sekcje (opcjonalny).
Szablony obsługują do 10 parametrów. W przypadku wypełnienia 11 parametru pojawi się komunikat ''Szablon obsługuje maksymalnie 10 przypisów (zmień go!)'' w miejscu wstawienia szablonu.
Nazwy przypisów nie mogą być samymi liczbami, mogą zawierać spacje. W szablonach {{s|r}} / {{s|u}} nie stosuje się cudzysłowów, jednak zaleca się ich stosowanie przy podawaniu przypisów w postaci <code><nowiki><ref name="nazwa przypisu">...</ref></nowiki></code>.
== Przykład ==
<div style="width:50%; float:right; overflow:auto; margin:0px 0px 0px 10px;">{{Pre start}}Ten tekst napisany został{{s|r|przypis1}}, aby jak najdokładniej
wyjaśnić działanie szablonu{{s|r|przypis2|przypis3}} i umożliwić stosowanie go jak
najszerszej grupie użytkowników{{s|u|uwaga1}}. Znacznie ułatwia on edycję
tekstów{{s|r|nota1|grupa1{{=}}nota}}, w których został
użyty{{s|r|przypis4|uwaga2|grupa2{{=}}uwaga}}, gdyż poprawia przejrzystość kodu
artykułu{{s|r|uwaga3|grupa1{{=}}uwaga|nota2|grupa2{{=}}nota}} i skraca wywołania
przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po
to{{s|r|przypis5|uwaga4|grupa2{{=}}uwaga|nota3|grupa3{{=}}nota}}, aby pokazać
możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj
nie ma potrzeby stosowania go w artykułach.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga1"}}{{Span|styl=color:green|{{Większy}}}}>uwaga 1.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga2"}}{{Span|styl=color:green|{{Większy}}}}uwaga 2.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga3"}}{{Span|styl=color:green|{{Większy}}}}uwaga 3.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga4"}}{{Span|styl=color:green|{{Większy}}}}uwaga 4.{{Span|styl=color:green|/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Grupa przypisów}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|{{=}}nota|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota1"}}{{Span|styl=color:green|{{Większy}}}}nota 1.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota2"}}{{Span|styl=color:green|{{Większy}}}}nota 2.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota3"}}{{Span|styl=color:green|{{Większy}}}}nota 3.{{Span|styl=color:green|/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
* {{Span|styl=color:green|{{Mniejszy}}ref}}{{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis1"}}{{Span|styl=color:green|{{Większy}}}}przypis 1.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis2"}}{{Span|styl=color:green|{{Większy}}}}przypis 2.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis3"}}{{Span|styl=color:green|{{Większy}}}}przypis 3.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis4"}}{{Span|styl=color:green|{{Większy}}}}przypis 4.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis5"}}{{Span|styl=color:green|{{Większy}}}}przypis 5.{{Span|styl=color:green|/ref{{Większy}}}}
}} {{Pre koniec}}</div>
Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję tekstów{{r|nota1|grupa1=nota}}, w których został użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj nie ma potrzeby stosowania go w artykułach.
{{OpakujKategorieZeSortowaniem|
==Uwagi ==
{{Uwagi|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Grupa przypisów ==
{{Przypisy|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}
}}
{{BrClear}}
== Konwersja przypisów ==
Istnieje narzędzie (skrypt) o nazwie [[w:Wikipedysta:Matma_Rex/prettyref.js|prettyref.js]] konwertujące przypisy typu <nowiki><ref>...</ref> na {{r|...}}</nowiki>. Opis jego użycia znajduje się w tekście wskazanego skryptu.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
[[Kategoria:Szablony do formatowania przypisów|{{PAGENAME}}]]
</includeonly>
qcy31iob8xl7jx6gges4f4hc1phduya
438596
438595
2022-08-23T17:17:58Z
Persino
2851
/* Przykład */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
{{Wysokie ryzyko}}
{{Spis treści}}
== Użycie ==
Szablony {{s|r}} i {{s|u}} służą do skracania przypisów w tekście.
{{Pre|{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu"}} /{{Większy}}{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu2"}} {{Span|styl=color:green|/{{Większy}}}} → {{s|r|nazwa przypisu|nazwa przypisu2}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa uwagi"}} {{Span|styl=color:limegreen|group}}{{=}}{{Span|styl=color:red|"uwaga}} {{Span|styl=color:green|/{{Większy}}}} → {{s|u|nazwa uwagi}}
}}
Umożliwiają wstawienie jednocześnie dowolnej liczby przypisów.
{{Pre|{{s|r|nazwa przypisu}}{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3|...|nazwa przypisu10|...}}}}
Szablon {{s|r}} służy głównie do stosowania wraz z szablonem {{s|Przypisy}}, w którym przypisy zgrupowane są w jednym miejscu (w odpowiednim parametrze szablonu).
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}przypis{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}przypis2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}przypis3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{s|Ref|nazwa przypisu|przypis}}
{{s|Ref|nazwa przypisu2|przypis2}}
{{s|Ref|nazwa przypisu3|przypis3}}
}}
}}
Z kolei {{s|u}} pozwala skracać zapis przypisów rzeczowych (szablon {{s|Uwagi}}).
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu}}"{{Span|styl=color:green|{{Większy}}}}uwaga{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}uwaga2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}>uwaga3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{s|Ref|nazwa przypisu|uwaga}}
{{s|Ref|nazwa przypisu2|uwaga2}}
{{s|Ref|nazwa przypisu3|uwaga3}}
}}
}}
== Opis parametrów ==
* '''<code>1</code>''', ..., '''<code>10</code>''' – nazwy przypisów (atrybut <code>name</code> znacznika <code><nowiki><ref></nowiki></code>).
* '''<code>grupa1</code>''', ..., '''<code>grupa10</code>''' – grupa przypisów (atrybut <code>group</code> znacznika <code><nowiki><ref></nowiki></code>) (tylko szablon {{s|r}}).
* '''stopień''' - jest to jakaś liczba równa się od jeden do sześciu symbolizujących sekcje (opcjonalny).
Szablony obsługują do 10 parametrów. W przypadku wypełnienia 11 parametru pojawi się komunikat ''Szablon obsługuje maksymalnie 10 przypisów (zmień go!)'' w miejscu wstawienia szablonu.
Nazwy przypisów nie mogą być samymi liczbami, mogą zawierać spacje. W szablonach {{s|r}} / {{s|u}} nie stosuje się cudzysłowów, jednak zaleca się ich stosowanie przy podawaniu przypisów w postaci <code><nowiki><ref name="nazwa przypisu">...</ref></nowiki></code>.
== Przykład ==
<div style="width:50%; float:right; overflow:auto; margin:0px 0px 0px 10px;">{{Pre start}}Ten tekst napisany został{{s|r|przypis1}}, aby jak najdokładniej
wyjaśnić działanie szablonu{{s|r|przypis2|przypis3}} i umożliwić stosowanie go jak
najszerszej grupie użytkowników{{s|u|uwaga1}}. Znacznie ułatwia on edycję
tekstów{{s|r|nota1|grupa1{{=}}nota}}, w których został
użyty{{s|r|przypis4|uwaga2|grupa2{{=}}uwaga}}, gdyż poprawia przejrzystość kodu
artykułu{{s|r|uwaga3|grupa1{{=}}uwaga|nota2|grupa2{{=}}nota}} i skraca wywołania
przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po
to{{s|r|przypis5|uwaga4|grupa2{{=}}uwaga|nota3|grupa3{{=}}nota}}, aby pokazać
możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj
nie ma potrzeby stosowania go w artykułach.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga1"}}{{Span|styl=color:green|{{Większy}}}}uwaga 1.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga2"}}{{Span|styl=color:green|{{Większy}}}}uwaga 2.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga3"}}{{Span|styl=color:green|{{Większy}}}}uwaga 3.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga4"}}{{Span|styl=color:green|{{Większy}}}}uwaga 4.{{Span|styl=color:green|/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Grupa przypisów}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|{{=}}nota|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota1"}}{{Span|styl=color:green|{{Większy}}}}nota 1.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota2"}}{{Span|styl=color:green|{{Większy}}}}nota 2.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota3"}}{{Span|styl=color:green|{{Większy}}}}nota 3.{{Span|styl=color:green|/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
* {{Span|styl=color:green|{{Mniejszy}}ref}}{{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis1"}}{{Span|styl=color:green|{{Większy}}}}przypis 1.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis2"}}{{Span|styl=color:green|{{Większy}}}}przypis 2.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis3"}}{{Span|styl=color:green|{{Większy}}}}przypis 3.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis4"}}{{Span|styl=color:green|{{Większy}}}}przypis 4.{{Span|styl=color:green|/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis5"}}{{Span|styl=color:green|{{Większy}}}}przypis 5.{{Span|styl=color:green|/ref{{Większy}}}}
}} {{Pre koniec}}</div>
Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję tekstów{{r|nota1|grupa1=nota}}, w których został użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj nie ma potrzeby stosowania go w artykułach.
{{OpakujKategorieZeSortowaniem|
==Uwagi ==
{{Uwagi|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Grupa przypisów ==
{{Przypisy|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}
}}
{{BrClear}}
== Konwersja przypisów ==
Istnieje narzędzie (skrypt) o nazwie [[w:Wikipedysta:Matma_Rex/prettyref.js|prettyref.js]] konwertujące przypisy typu <nowiki><ref>...</ref> na {{r|...}}</nowiki>. Opis jego użycia znajduje się w tekście wskazanego skryptu.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
[[Kategoria:Szablony do formatowania przypisów|{{PAGENAME}}]]
</includeonly>
a8er4hp3qabkq7dpp874kwr89etzyjc
438597
438596
2022-08-23T17:22:55Z
Persino
2851
/* Przykład */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
{{Wysokie ryzyko}}
{{Spis treści}}
== Użycie ==
Szablony {{s|r}} i {{s|u}} służą do skracania przypisów w tekście.
{{Pre|{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu"}} /{{Większy}}{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu2"}} {{Span|styl=color:green|/{{Większy}}}} → {{s|r|nazwa przypisu|nazwa przypisu2}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa uwagi"}} {{Span|styl=color:limegreen|group}}{{=}}{{Span|styl=color:red|"uwaga}} {{Span|styl=color:green|/{{Większy}}}} → {{s|u|nazwa uwagi}}
}}
Umożliwiają wstawienie jednocześnie dowolnej liczby przypisów.
{{Pre|{{s|r|nazwa przypisu}}{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3|...|nazwa przypisu10|...}}}}
Szablon {{s|r}} służy głównie do stosowania wraz z szablonem {{s|Przypisy}}, w którym przypisy zgrupowane są w jednym miejscu (w odpowiednim parametrze szablonu).
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}przypis{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}przypis2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}przypis3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{s|Ref|nazwa przypisu|przypis}}
{{s|Ref|nazwa przypisu2|przypis2}}
{{s|Ref|nazwa przypisu3|przypis3}}
}}
}}
Z kolei {{s|u}} pozwala skracać zapis przypisów rzeczowych (szablon {{s|Uwagi}}).
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu}}"{{Span|styl=color:green|{{Większy}}}}uwaga{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}uwaga2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}>uwaga3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{s|Ref|nazwa przypisu|uwaga}}
{{s|Ref|nazwa przypisu2|uwaga2}}
{{s|Ref|nazwa przypisu3|uwaga3}}
}}
}}
== Opis parametrów ==
* '''<code>1</code>''', ..., '''<code>10</code>''' – nazwy przypisów (atrybut <code>name</code> znacznika <code><nowiki><ref></nowiki></code>).
* '''<code>grupa1</code>''', ..., '''<code>grupa10</code>''' – grupa przypisów (atrybut <code>group</code> znacznika <code><nowiki><ref></nowiki></code>) (tylko szablon {{s|r}}).
* '''stopień''' - jest to jakaś liczba równa się od jeden do sześciu symbolizujących sekcje (opcjonalny).
Szablony obsługują do 10 parametrów. W przypadku wypełnienia 11 parametru pojawi się komunikat ''Szablon obsługuje maksymalnie 10 przypisów (zmień go!)'' w miejscu wstawienia szablonu.
Nazwy przypisów nie mogą być samymi liczbami, mogą zawierać spacje. W szablonach {{s|r}} / {{s|u}} nie stosuje się cudzysłowów, jednak zaleca się ich stosowanie przy podawaniu przypisów w postaci <code><nowiki><ref name="nazwa przypisu">...</ref></nowiki></code>.
== Przykład ==
<div style="width:50%; float:right; overflow:auto; margin:0px 0px 0px 10px;">{{Pre start}}Ten tekst napisany został{{s|r|przypis1}}, aby jak najdokładniej
wyjaśnić działanie szablonu{{s|r|przypis2|przypis3}} i umożliwić stosowanie go jak
najszerszej grupie użytkowników{{s|u|uwaga1}}. Znacznie ułatwia on edycję
tekstów{{s|r|nota1|grupa1{{=}}nota}}, w których został
użyty{{s|r|przypis4|uwaga2|grupa2{{=}}uwaga}}, gdyż poprawia przejrzystość kodu
artykułu{{s|r|uwaga3|grupa1{{=}}uwaga|nota2|grupa2{{=}}nota}} i skraca wywołania
przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po
to{{s|r|przypis5|uwaga4|grupa2{{=}}uwaga|nota3|grupa3{{=}}nota}}, aby pokazać
możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj
nie ma potrzeby stosowania go w artykułach.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga1"}}{{Span|styl=color:green|{{Większy}}}}uwaga 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga2"}}{{Span|styl=color:green|{{Większy}}}}uwaga 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga3"}}{{Span|styl=color:green|{{Większy}}}}uwaga 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga4"}}{{Span|styl=color:green|{{Większy}}}}uwaga 4.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Grupa przypisów}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|{{=}}nota|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota1"}}{{Span|styl=color:green|{{Większy}}}}nota 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota2"}}{{Span|styl=color:green|{{Większy}}}}nota 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota3"}}{{Span|styl=color:green|{{Większy}}}}nota 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
* {{Span|styl=color:green|{{Mniejszy}}ref}}{{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis1"}}{{Span|styl=color:green|{{Większy}}}}przypis 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis2"}}{{Span|styl=color:green|{{Większy}}}}przypis 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis3"}}{{Span|styl=color:green|{{Większy}}}}przypis 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis4"}}{{Span|styl=color:green|{{Większy}}}}przypis 4.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis5"}}{{Span|styl=color:green|{{Większy}}}}przypis 5.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}} {{Pre koniec}}</div>
Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję tekstów{{r|nota1|grupa1=nota}}, w których został użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj nie ma potrzeby stosowania go w artykułach.
{{OpakujKategorieZeSortowaniem|
==Uwagi ==
{{Uwagi|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Grupa przypisów ==
{{Przypisy|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}
}}
{{BrClear}}
== Konwersja przypisów ==
Istnieje narzędzie (skrypt) o nazwie [[w:Wikipedysta:Matma_Rex/prettyref.js|prettyref.js]] konwertujące przypisy typu <nowiki><ref>...</ref> na {{r|...}}</nowiki>. Opis jego użycia znajduje się w tekście wskazanego skryptu.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
[[Kategoria:Szablony do formatowania przypisów|{{PAGENAME}}]]
</includeonly>
nizphskfkdqiah501nkv478lq56pcm5
438598
438597
2022-08-23T17:25:02Z
Persino
2851
/* Przykład */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
{{Wysokie ryzyko}}
{{Spis treści}}
== Użycie ==
Szablony {{s|r}} i {{s|u}} służą do skracania przypisów w tekście.
{{Pre|{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu"}} /{{Większy}}{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu2"}} {{Span|styl=color:green|/{{Większy}}}} → {{s|r|nazwa przypisu|nazwa przypisu2}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa uwagi"}} {{Span|styl=color:limegreen|group}}{{=}}{{Span|styl=color:red|"uwaga}} {{Span|styl=color:green|/{{Większy}}}} → {{s|u|nazwa uwagi}}
}}
Umożliwiają wstawienie jednocześnie dowolnej liczby przypisów.
{{Pre|{{s|r|nazwa przypisu}}{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3|...|nazwa przypisu10|...}}}}
Szablon {{s|r}} służy głównie do stosowania wraz z szablonem {{s|Przypisy}}, w którym przypisy zgrupowane są w jednym miejscu (w odpowiednim parametrze szablonu).
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}przypis{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}przypis2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}przypis3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{s|Ref|nazwa przypisu|przypis}}
{{s|Ref|nazwa przypisu2|przypis2}}
{{s|Ref|nazwa przypisu3|przypis3}}
}}
}}
Z kolei {{s|u}} pozwala skracać zapis przypisów rzeczowych (szablon {{s|Uwagi}}).
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu}}"{{Span|styl=color:green|{{Większy}}}}uwaga{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}uwaga2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}>uwaga3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{s|Ref|nazwa przypisu|uwaga}}
{{s|Ref|nazwa przypisu2|uwaga2}}
{{s|Ref|nazwa przypisu3|uwaga3}}
}}
}}
== Opis parametrów ==
* '''<code>1</code>''', ..., '''<code>10</code>''' – nazwy przypisów (atrybut <code>name</code> znacznika <code><nowiki><ref></nowiki></code>).
* '''<code>grupa1</code>''', ..., '''<code>grupa10</code>''' – grupa przypisów (atrybut <code>group</code> znacznika <code><nowiki><ref></nowiki></code>) (tylko szablon {{s|r}}).
* '''stopień''' - jest to jakaś liczba równa się od jeden do sześciu symbolizujących sekcje (opcjonalny).
Szablony obsługują do 10 parametrów. W przypadku wypełnienia 11 parametru pojawi się komunikat ''Szablon obsługuje maksymalnie 10 przypisów (zmień go!)'' w miejscu wstawienia szablonu.
Nazwy przypisów nie mogą być samymi liczbami, mogą zawierać spacje. W szablonach {{s|r}} / {{s|u}} nie stosuje się cudzysłowów, jednak zaleca się ich stosowanie przy podawaniu przypisów w postaci <code><nowiki><ref name="nazwa przypisu">...</ref></nowiki></code>.
== Przykład ==
<div style="width:50%; float:right; overflow:auto; margin:0px 0px 0px 10px;">{{Pre start}}Ten tekst napisany został{{s|r|przypis1}}, aby jak najdokładniej
wyjaśnić działanie szablonu{{s|r|przypis2|przypis3}} i umożliwić stosowanie go jak
najszerszej grupie użytkowników{{s|u|uwaga1}}. Znacznie ułatwia on edycję
tekstów{{s|r|nota1|grupa1{{=}}nota}}, w których został
użyty{{s|r|przypis4|uwaga2|grupa2{{=}}uwaga}}, gdyż poprawia przejrzystość kodu
artykułu{{s|r|uwaga3|grupa1{{=}}uwaga|nota2|grupa2{{=}}nota}} i skraca wywołania
przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po
to{{s|r|przypis5|uwaga4|grupa2{{=}}uwaga|nota3|grupa3{{=}}nota}}, aby pokazać
możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj
nie ma potrzeby stosowania go w artykułach.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga1"}}{{Span|styl=color:green|{{Większy}}}}uwaga 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga2"}}{{Span|styl=color:green|{{Większy}}}}uwaga 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga3"}}{{Span|styl=color:green|{{Większy}}}}uwaga 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga4"}}{{Span|styl=color:green|{{Większy}}}}uwaga 4.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Grupa przypisów}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|{{=}}nota|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota1"}}{{Span|styl=color:green|{{Większy}}}}nota 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota2"}}{{Span|styl=color:green|{{Większy}}}}nota 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota3"}}{{Span|styl=color:green|{{Większy}}}}nota 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis1"}}{{Span|styl=color:green|{{Większy}}}}przypis 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis2"}}{{Span|styl=color:green|{{Większy}}}}przypis 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis3"}}{{Span|styl=color:green|{{Większy}}}}przypis 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis4"}}{{Span|styl=color:green|{{Większy}}}}przypis 4.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis5"}}{{Span|styl=color:green|{{Większy}}}}przypis 5.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}} {{Pre koniec}}</div>
Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję tekstów{{r|nota1|grupa1=nota}}, w których został użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj nie ma potrzeby stosowania go w artykułach.
{{OpakujKategorieZeSortowaniem|
==Uwagi ==
{{Uwagi|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Grupa przypisów ==
{{Przypisy|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}
}}
{{BrClear}}
== Konwersja przypisów ==
Istnieje narzędzie (skrypt) o nazwie [[w:Wikipedysta:Matma_Rex/prettyref.js|prettyref.js]] konwertujące przypisy typu <nowiki><ref>...</ref> na {{r|...}}</nowiki>. Opis jego użycia znajduje się w tekście wskazanego skryptu.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
[[Kategoria:Szablony do formatowania przypisów|{{PAGENAME}}]]
</includeonly>
105o8s0jeak5o6ggae49p9o1ykx8sta
438599
438598
2022-08-23T17:28:03Z
Persino
2851
/* Przykład */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
{{Wysokie ryzyko}}
{{Spis treści}}
== Użycie ==
Szablony {{s|r}} i {{s|u}} służą do skracania przypisów w tekście.
{{Pre|{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu"}} /{{Większy}}{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu2"}} {{Span|styl=color:green|/{{Większy}}}} → {{s|r|nazwa przypisu|nazwa przypisu2}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa uwagi"}} {{Span|styl=color:limegreen|group}}{{=}}{{Span|styl=color:red|"uwaga}} {{Span|styl=color:green|/{{Większy}}}} → {{s|u|nazwa uwagi}}
}}
Umożliwiają wstawienie jednocześnie dowolnej liczby przypisów.
{{Pre|{{s|r|nazwa przypisu}}{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3|...|nazwa przypisu10|...}}}}
Szablon {{s|r}} służy głównie do stosowania wraz z szablonem {{s|Przypisy}}, w którym przypisy zgrupowane są w jednym miejscu (w odpowiednim parametrze szablonu).
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}przypis{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}przypis2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}przypis3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{s|Ref|nazwa przypisu|przypis}}
{{s|Ref|nazwa przypisu2|przypis2}}
{{s|Ref|nazwa przypisu3|przypis3}}
}}
}}
Z kolei {{s|u}} pozwala skracać zapis przypisów rzeczowych (szablon {{s|Uwagi}}).
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu}}"{{Span|styl=color:green|{{Większy}}}}uwaga{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}uwaga2{{Span|styl=color:green|/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}>uwaga3{{Span|styl=color:green|/ref{{Większy}}}}
}}
}}
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{s|Ref|nazwa przypisu|uwaga}}
{{s|Ref|nazwa przypisu2|uwaga2}}
{{s|Ref|nazwa przypisu3|uwaga3}}
}}
}}
== Opis parametrów ==
* '''<code>1</code>''', ..., '''<code>10</code>''' – nazwy przypisów (atrybut <code>name</code> znacznika <code><nowiki><ref></nowiki></code>).
* '''<code>grupa1</code>''', ..., '''<code>grupa10</code>''' – grupa przypisów (atrybut <code>group</code> znacznika <code><nowiki><ref></nowiki></code>) (tylko szablon {{s|r}}).
* '''stopień''' - jest to jakaś liczba równa się od jeden do sześciu symbolizujących sekcje (opcjonalny).
Szablony obsługują do 10 parametrów. W przypadku wypełnienia 11 parametru pojawi się komunikat ''Szablon obsługuje maksymalnie 10 przypisów (zmień go!)'' w miejscu wstawienia szablonu.
Nazwy przypisów nie mogą być samymi liczbami, mogą zawierać spacje. W szablonach {{s|r}} / {{s|u}} nie stosuje się cudzysłowów, jednak zaleca się ich stosowanie przy podawaniu przypisów w postaci <code><nowiki><ref name="nazwa przypisu">...</ref></nowiki></code>.
== Przykład ==
{{ElastycznyWiersz|_1=margin-right:10px;width:100%|_2=margin-left:10px;width:100%
|1={{Pre start}}Ten tekst napisany został{{s|r|przypis1}}, aby jak najdokładniej
wyjaśnić działanie szablonu{{s|r|przypis2|przypis3}} i umożliwić stosowanie go jak
najszerszej grupie użytkowników{{s|u|uwaga1}}. Znacznie ułatwia on edycję
tekstów{{s|r|nota1|grupa1{{=}}nota}}, w których został
użyty{{s|r|przypis4|uwaga2|grupa2{{=}}uwaga}}, gdyż poprawia przejrzystość kodu
artykułu{{s|r|uwaga3|grupa1{{=}}uwaga|nota2|grupa2{{=}}nota}} i skraca wywołania
przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po
to{{s|r|przypis5|uwaga4|grupa2{{=}}uwaga|nota3|grupa3{{=}}nota}}, aby pokazać
możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj
nie ma potrzeby stosowania go w artykułach.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga1"}}{{Span|styl=color:green|{{Większy}}}}uwaga 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga2"}}{{Span|styl=color:green|{{Większy}}}}uwaga 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga3"}}{{Span|styl=color:green|{{Większy}}}}uwaga 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga4"}}{{Span|styl=color:green|{{Większy}}}}uwaga 4.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Grupa przypisów}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|{{=}}nota|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota1"}}{{Span|styl=color:green|{{Większy}}}}nota 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota2"}}{{Span|styl=color:green|{{Większy}}}}nota 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota3"}}{{Span|styl=color:green|{{Większy}}}}nota 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis1"}}{{Span|styl=color:green|{{Większy}}}}przypis 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis2"}}{{Span|styl=color:green|{{Większy}}}}przypis 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis3"}}{{Span|styl=color:green|{{Większy}}}}przypis 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis4"}}{{Span|styl=color:green|{{Większy}}}}przypis 4.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis5"}}{{Span|styl=color:green|{{Większy}}}}przypis 5.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}} {{Pre koniec}}
|2=
Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję tekstów{{r|nota1|grupa1=nota}}, w których został użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj nie ma potrzeby stosowania go w artykułach.
{{OpakujKategorieZeSortowaniem|
==Uwagi ==
{{Uwagi|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Grupa przypisów ==
{{Przypisy|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}
}}
}}
{{BrClear}}
== Konwersja przypisów ==
Istnieje narzędzie (skrypt) o nazwie [[w:Wikipedysta:Matma_Rex/prettyref.js|prettyref.js]] konwertujące przypisy typu <nowiki><ref>...</ref> na {{r|...}}</nowiki>. Opis jego użycia znajduje się w tekście wskazanego skryptu.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
[[Kategoria:Szablony do formatowania przypisów|{{PAGENAME}}]]
</includeonly>
46jsa0apl8vnqi04hoxzubg5dfu7cux
438600
438599
2022-08-23T17:32:39Z
Persino
2851
/* Użycie */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
{{Wysokie ryzyko}}
{{Spis treści}}
== Użycie ==
Szablony {{s|r}} i {{s|u}} służą do skracania przypisów w tekście.
{{Pre|{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu"}} /{{Większy}}{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa przypisu2"}} {{Span|styl=color:green|/{{Większy}}}} → {{s|r|nazwa przypisu|nazwa przypisu2}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name}}{{=}}{{Span|styl=color:red|"nazwa uwagi"}} {{Span|styl=color:limegreen|group}}{{=}}{{Span|styl=color:red|"uwaga}} {{Span|styl=color:green|/{{Większy}}}} → {{s|u|nazwa uwagi}}
}}
Umożliwiają wstawienie jednocześnie dowolnej liczby przypisów.
{{Pre|{{s|r|nazwa przypisu}}{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3|...|nazwa przypisu10|...}}}}
Szablon {{s|r}} służy głównie do stosowania wraz z szablonem {{s|Przypisy}}, w którym przypisy zgrupowane są w jednym miejscu (w odpowiednim parametrze szablonu).
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}przypis{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}przypis2{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}przypis3{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
}}
{{Pre|{{s|r|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
{{s|Ref|nazwa przypisu|przypis}}
{{s|Ref|nazwa przypisu2|przypis2}}
{{s|Ref|nazwa przypisu3|przypis3}}
}}
}}
Z kolei {{s|u}} pozwala skracać zapis przypisów rzeczowych (szablon {{s|Uwagi}}).
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu}}"{{Span|styl=color:green|{{Większy}}}}uwaga{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu2"}}{{Span|styl=color:green|{{Większy}}}}uwaga2{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nazwa przypisu3"}}{{Span|styl=color:green|{{Większy}}}}uwaga3{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
}}
{{Pre|{{s|u|nazwa przypisu|nazwa przypisu2|nazwa przypisu3}}}}
{{Pre|
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
{{s|Ref|nazwa przypisu|uwaga}}
{{s|Ref|nazwa przypisu2|uwaga2}}
{{s|Ref|nazwa przypisu3|uwaga3}}
}}
}}
== Opis parametrów ==
* '''<code>1</code>''', ..., '''<code>10</code>''' – nazwy przypisów (atrybut <code>name</code> znacznika <code><nowiki><ref></nowiki></code>).
* '''<code>grupa1</code>''', ..., '''<code>grupa10</code>''' – grupa przypisów (atrybut <code>group</code> znacznika <code><nowiki><ref></nowiki></code>) (tylko szablon {{s|r}}).
* '''stopień''' - jest to jakaś liczba równa się od jeden do sześciu symbolizujących sekcje (opcjonalny).
Szablony obsługują do 10 parametrów. W przypadku wypełnienia 11 parametru pojawi się komunikat ''Szablon obsługuje maksymalnie 10 przypisów (zmień go!)'' w miejscu wstawienia szablonu.
Nazwy przypisów nie mogą być samymi liczbami, mogą zawierać spacje. W szablonach {{s|r}} / {{s|u}} nie stosuje się cudzysłowów, jednak zaleca się ich stosowanie przy podawaniu przypisów w postaci <code><nowiki><ref name="nazwa przypisu">...</ref></nowiki></code>.
== Przykład ==
{{ElastycznyWiersz|_1=margin-right:10px;width:100%|_2=margin-left:10px;width:100%
|1={{Pre start}}Ten tekst napisany został{{s|r|przypis1}}, aby jak najdokładniej
wyjaśnić działanie szablonu{{s|r|przypis2|przypis3}} i umożliwić stosowanie go jak
najszerszej grupie użytkowników{{s|u|uwaga1}}. Znacznie ułatwia on edycję
tekstów{{s|r|nota1|grupa1{{=}}nota}}, w których został
użyty{{s|r|przypis4|uwaga2|grupa2{{=}}uwaga}}, gdyż poprawia przejrzystość kodu
artykułu{{s|r|uwaga3|grupa1{{=}}uwaga|nota2|grupa2{{=}}nota}} i skraca wywołania
przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po
to{{s|r|przypis5|uwaga4|grupa2{{=}}uwaga|nota3|grupa3{{=}}nota}}, aby pokazać
możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj
nie ma potrzeby stosowania go w artykułach.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Uwagi}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Uwagi|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga1"}}{{Span|styl=color:green|{{Większy}}}}uwaga 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga2"}}{{Span|styl=color:green|{{Większy}}}}uwaga 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga3"}}{{Span|styl=color:green|{{Większy}}}}uwaga 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"uwaga4"}}{{Span|styl=color:green|{{Większy}}}}uwaga 4.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Grupa przypisów}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|{{=}}nota|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota1"}}{{Span|styl=color:green|{{Większy}}}}nota 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota2"}}{{Span|styl=color:green|{{Większy}}}}nota 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"nota3"}}{{Span|styl=color:green|{{Większy}}}}nota 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy|
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis1"}}{{Span|styl=color:green|{{Większy}}}}przypis 1.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis2"}}{{Span|styl=color:green|{{Większy}}}}przypis 2.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis3"}}{{Span|styl=color:green|{{Większy}}}}przypis 3.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis4"}}{{Span|styl=color:green|{{Większy}}}}przypis 4.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
* {{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"przypis5"}}{{Span|styl=color:green|{{Większy}}}}przypis 5.{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}} {{Pre koniec}}
|2=
Ten tekst napisany został{{r|przypis1}}, aby jak najdokładniej wyjaśnić działanie szablonu{{r|przypis2|przypis3}} i umożliwić stosowanie go jak najszerszej grupie użytkowników{{u|uwaga1}}. Znacznie ułatwia on edycję tekstów{{r|nota1|grupa1=nota}}, w których został użyty{{r|przypis4|uwaga2|grupa2=uwaga}}, gdyż poprawia przejrzystość kodu artykułu{{r|uwaga3|grupa1=uwaga|nota2|grupa2=nota}} i skraca wywołania przypisów. Nagłówek ''Adnotacje'' został dodany jedynie po to{{r|przypis5|uwaga4|grupa2=uwaga|nota3|grupa3=nota}}, aby pokazać możliwość grupowania przypisów w więcej niż jednej grupie. Zazwyczaj nie ma potrzeby stosowania go w artykułach.
{{OpakujKategorieZeSortowaniem|
==Uwagi ==
{{Uwagi|
* <ref name="uwaga1">uwaga 1.</ref>
* <ref name="uwaga2">uwaga 2.</ref>
* <ref name="uwaga3">uwaga 3.</ref>
* <ref name="uwaga4">uwaga 4.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Grupa przypisów ==
{{Przypisy|=nota|
* <ref name="nota1">nota 1.</ref>
* <ref name="nota2">nota 2.</ref>
* <ref name="nota3">nota 3.</ref>
}}
}}
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy|
* <ref name="przypis1">przypis 1.</ref>
* <ref name="przypis2">przypis 2.</ref>
* <ref name="przypis3">przypis 3.</ref>
* <ref name="przypis4">przypis 4.</ref>
* <ref name="przypis5">przypis 5.</ref>
}}
}}
}}
{{BrClear}}
== Konwersja przypisów ==
Istnieje narzędzie (skrypt) o nazwie [[w:Wikipedysta:Matma_Rex/prettyref.js|prettyref.js]] konwertujące przypisy typu <nowiki><ref>...</ref> na {{r|...}}</nowiki>. Opis jego użycia znajduje się w tekście wskazanego skryptu.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
[[Kategoria:Szablony do formatowania przypisów|{{PAGENAME}}]]
</includeonly>
6ifptjmdychqbdo7lmfw136xovvl38i
Szablon:Przypisy-lista
10
25506
438572
438541
2022-08-23T12:01:39Z
Persino
2851
wikitext
text/x-wiki
<includeonly><div class="refsection references-column-count {{#switch:{{{liczba kolumn|1}}}|1=references-1column|2=references-2column|3=references-3column}}">
{{#invoke:Przypisy|Przypisy
| wzór = {{#if:{{{stopień nagłówka|==}}}|{{{stopień nagłówka|==}}}=?%s*Przypisy%s*{{{stopień nagłówka|==}}}=?%s+{{((}}%s*[Pp]rzypisy%-lista%s*{{!}}}}
| wzór0 = {{#if:{{{stopień nagłówka|==}}}|{{{stopień nagłówka|==}}}=?%s*Przypisy%s*{{{stopień nagłówka|==}}}=?%s+{{((}}%s*[Pp]rzypisy%-lista%s*{{))}}}}
| nagłówek = {{#if:{{{stopień nagłówka|==}}}|{{{stopień nagłówka|==}}}Przypisy{{{stopień nagłówka|==}}}}}
| kategoria = {{#if:{{{bez kategorii|}}}||{{!((}}Kategoria:Szablon:Przypisy-lista %s do sprawdzenia{{))!}}}}
| kategoria1 = {{#if:{{{bez kategorii|}}}||{{!((}}Kategoria:Szablon:Przypisy-lista %s z oczekiwanym nagłówkiem{{))!}}}}
| kategoria2 = {{#if:{{{bez kategorii|}}}||{{!((}}Kategoria:Szablon:Przypisy-lista %s bez oczekiwanego nagłówka{{))!}}}}
}}
</div></includeonly><noinclude>{{Dokumentacja}}</noinclude>
o8zz3w9cupigw9lnxjvmtb873txxhmz
Szablon:Przypisy-lista/opis
10
25507
438571
438542
2022-08-23T12:00:01Z
Persino
2851
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{Lua|Module:Przypisy}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
Ten szablon automatycznie generuje przypisy. Działa podobnie jak polecenie (tag) „<tt><nowiki><references/></nowiki></tt>” ale bez dodawania nagłówka sekcji (co pozwala na edycję tejże sekcji jak każdej innej), dodatkowo wstawia odpowiednie style i ewentualnie dzieli listę szablonów na kolumny. Lista (nazwanych) przypisów jest podawana jako pierwszy parametr tego szablonu. Przypisy te można użyć potem w artykule wstawiając tag „<tt><nowiki><ref></nowiki></tt>” bądź szablon {{s|R}} z odpowiednią nazwą.
Sekcję przypisów umieszczamy w końcowej części artykułu, po sekcji '''Zobacz też''' i przed sekcją '''Bibliografia''' (o ile sekcje te występują w artykule).
== Użycie ==
; Przykład
Typowe użycie (razem z przykładowym użyciem przypisu):
{{Pre start}}
To jest jakiś przykładowy tekst nie należy na niego zwracać uwagę{{s|r|Nazwa przypisu}}, chyba że akurat gdzieś pojawi się coś przypisowatego{{s|r|Wydawca: Jakiś tytuł}}.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy-lista|
{{s|Ref|Nazwa przypisu|W przypisie może być cokolwiek}}
{{s|Ref|Wydawca: Jakiś tytuł|Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''}}
}}
{{Pre koniec}}
-----
; Wynik
To jest jakiś przykładowy tekst nie należy na niego zwracać uwagę{{r|Nazwa przypisu}}, chyba że akurat gdzieś pojawi się coś przypisowatego{{r|Wydawca: Jakiś tytuł}}.
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy-lista|
{{Ref|Nazwa przypisu|W przypisie może być cokolwiek}}
{{Ref|Wydawca: Jakiś tytuł|Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''}}
}}
}}
----
----
; Przykład
Typowe użycie (razem z przykładowym użyciem przypisu):
{{Pre start}}
To jest jakiś przykładowy tekst nie należy na niego zwracać uwagę{{s|r|Nazwa przypisu}}, chyba że akurat gdzieś pojawi się coś przypisowatego{{s|r|Wydawca: Jakiś tytuł}}.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy-lista|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"Nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}W przypisie może być cokolwiek{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"Wydawca: Jakiś tytuł"}}{{Span|styl=color:green|{{Większy}}}}Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Pre koniec}}
-----
; Wynik
To jest jakiś przykładowy tekst nie należy na niego zwracać uwagę{{r|Nazwa przypisu}}, chyba że akurat gdzieś pojawi się coś przypisowatego{{r|Wydawca: Jakiś tytuł}}.
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy-lista|
<ref name="Nazwa przypisu">W przypisie może być cokolwiek</ref>
<ref name="Wydawca: Jakiś tytuł">Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''</ref>
}}
}}
== Opis parametrów ==
; ''pierwszy'' : jako pierwszy parametr powinno się podać wszystkie przypisy, które są (lub za chwilę będą) użyte w artykule.
; l. kolumn : parametr, który można użyć, aby podzielić tekst na parę kolumn. Maksymalna liczba kolumn to 3.
; grupa : przez „grupę” należy rozumieć grupę przypisów. Użycie tego parametru nie jest zalecane w większości wypadków. Grupowanie przypisów może mieć sens raczej na stronach pomocy niż w artykule.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Zobacz też ==
* {{S|Przypisy}} – podobny szablon, ale dodający nagłówek sekcji i z innym pierwszym parametrem.
* {{LinkPediaPomoc|Przypisy}} – ogólne informacje o przypisach.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony przypisów}}
</includeonly>
jhwq7n1fude6wls00zh71vvbq1hdse0
438573
438571
2022-08-23T12:02:14Z
Persino
2851
/* Opis parametrów */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{Lua|Module:Przypisy}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
Ten szablon automatycznie generuje przypisy. Działa podobnie jak polecenie (tag) „<tt><nowiki><references/></nowiki></tt>” ale bez dodawania nagłówka sekcji (co pozwala na edycję tejże sekcji jak każdej innej), dodatkowo wstawia odpowiednie style i ewentualnie dzieli listę szablonów na kolumny. Lista (nazwanych) przypisów jest podawana jako pierwszy parametr tego szablonu. Przypisy te można użyć potem w artykule wstawiając tag „<tt><nowiki><ref></nowiki></tt>” bądź szablon {{s|R}} z odpowiednią nazwą.
Sekcję przypisów umieszczamy w końcowej części artykułu, po sekcji '''Zobacz też''' i przed sekcją '''Bibliografia''' (o ile sekcje te występują w artykule).
== Użycie ==
; Przykład
Typowe użycie (razem z przykładowym użyciem przypisu):
{{Pre start}}
To jest jakiś przykładowy tekst nie należy na niego zwracać uwagę{{s|r|Nazwa przypisu}}, chyba że akurat gdzieś pojawi się coś przypisowatego{{s|r|Wydawca: Jakiś tytuł}}.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy-lista|
{{s|Ref|Nazwa przypisu|W przypisie może być cokolwiek}}
{{s|Ref|Wydawca: Jakiś tytuł|Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''}}
}}
{{Pre koniec}}
-----
; Wynik
To jest jakiś przykładowy tekst nie należy na niego zwracać uwagę{{r|Nazwa przypisu}}, chyba że akurat gdzieś pojawi się coś przypisowatego{{r|Wydawca: Jakiś tytuł}}.
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy-lista|
{{Ref|Nazwa przypisu|W przypisie może być cokolwiek}}
{{Ref|Wydawca: Jakiś tytuł|Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''}}
}}
}}
----
----
; Przykład
Typowe użycie (razem z przykładowym użyciem przypisu):
{{Pre start}}
To jest jakiś przykładowy tekst nie należy na niego zwracać uwagę{{s|r|Nazwa przypisu}}, chyba że akurat gdzieś pojawi się coś przypisowatego{{s|r|Wydawca: Jakiś tytuł}}.
{{Span|styl=color:green|<nowiki>==</nowiki>}} {{Strong|Przypisy}} {{Span|styl=color:green|<nowiki>==</nowiki>}}
{{s|Przypisy-lista|
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"Nazwa przypisu"}}{{Span|styl=color:green|{{Większy}}}}W przypisie może być cokolwiek{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
{{Span|styl=color:green|{{Mniejszy}}ref}} {{Span|styl=color:limegreen|name{{=}}}}{{Span|styl=color:red|"Wydawca: Jakiś tytuł"}}{{Span|styl=color:green|{{Większy}}}}Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''{{Span|styl=color:green|{{Mniejszy}}/ref{{Większy}}}}
}}
{{Pre koniec}}
-----
; Wynik
To jest jakiś przykładowy tekst nie należy na niego zwracać uwagę{{r|Nazwa przypisu}}, chyba że akurat gdzieś pojawi się coś przypisowatego{{r|Wydawca: Jakiś tytuł}}.
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy-lista|
<ref name="Nazwa przypisu">W przypisie może być cokolwiek</ref>
<ref name="Wydawca: Jakiś tytuł">Franciszka Tłumacząca, ''Przypisy często zawierają odniesienia do literatury lub źródeł internetowych''</ref>
}}
}}
== Opis parametrów ==
; ''pierwszy'' : jako pierwszy parametr powinno się podać wszystkie przypisy, które są (lub za chwilę będą) użyte w artykule.
; {{Code|liczba kolumn}} : parametr, który można użyć, aby podzielić tekst na parę kolumn. Maksymalna liczba kolumn to 3.
; {{Code|grupa}} : przez „grupę” należy rozumieć grupę przypisów. Użycie tego parametru nie jest zalecane w większości wypadków. Grupowanie przypisów może mieć sens raczej na stronach pomocy niż w artykule.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Zobacz też ==
* {{S|Przypisy}} – podobny szablon, ale dodający nagłówek sekcji i z innym pierwszym parametrem.
* {{LinkPediaPomoc|Przypisy}} – ogólne informacje o przypisach.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony przypisów}}
</includeonly>
jirfg8bxmcxw205w19iwyu4xmzpfytg
Szablon:Uwagi/opis
10
25509
438607
432402
2022-08-23T20:28:11Z
Persino
2851
/* Użycie */
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{wysokie ryzyko}}
{{Lua|Moduł:Przypisy}}
<!-- DODAWAJ KATEGORIE I INTERWIKI NA DOLE STRONY -->
Ten szablon automatycznie generuje przypisy rzeczowe. Umieszczamy go w końcowej części artykułu, przed sekcją '''Bibliografia''' i przed sekcją '''Przypisy'''.
Przypisy rzeczowe – w przeciwieństwie do bibliograficznych – są (automatycznie) oznaczane nie kolejnymi liczbami, lecz kolejnymi literami alfabetu łacińskiego.
== Użycie ==
Aby użyć szablonu w postaci standardowej, bez jawnego wskazania parametrów, należy skopiować tekst z ramki i wkleić do artykułu.
{{Pre|{{s|Uwagi}}}}
Szablon wyświetli listę przypisów należących do grupy "uwaga", wstawianych w tekście według wzoru:
:'''''<nowiki><ref group="uwaga">tutaj treść przypisu/uwagi</ref></nowiki>'''''.
Podobnie jak dla przypisów, możliwe jest nadawanie nazw uwagom, aby wykorzystać je wielokrotnie, według wzoru:
:'''''<nowiki><ref group="uwaga" name="uwaga1">tutaj treść przypisu/uwagi</ref></nowiki>'''''.
Kolejne wywołanie:
:'''''<nowiki>{{u|uwaga1}}</nowiki>''''' lub '''''<nowiki><ref group="uwaga" name="uwaga1"/></nowiki>'''''.
== Przykład ==
'''Kod''':
<div style="text-align:left;border:1px grey dashed; background: #F5F5F5; padding:0.5em;margin:0em">
<code>
"Pingyuan"'''<span style="color:red;"><nowiki><ref group="uwaga" name="uwaga1"></nowiki></span>'''<nowiki>Nazewnictwo zwyczajowe.</nowiki>'''<span style="color:red;"><nowiki></ref></nowiki></span>''' był chińskim'''<span style="color:red;"><nowiki><ref group="uwaga"></nowiki></span>'''<nowiki>Prawdopodobnie.</nowiki>'''<span style="color:red;"><nowiki></ref></nowiki></span>''' okrętem pancernym'''<span style="color:red;"><nowiki><ref group="uwaga" name="uwaga1"/></nowiki></span>'''.
'''<span style="color:red;"><nowiki>{{Uwagi}}</nowiki></span>'''
</code></div>
:'''Co wygląda następująco:'''
{{cytat|
"Pingyuan"<ref group="uwaga" name="uwaga1"> Nazewnictwo zwyczajowe.</ref> był chińskim<ref group="uwaga"> Prawdopodobnie.</ref> okrętem pancernym<ref group="uwaga" name="uwaga1"/>.
{{OpakujKategorieZeSortowaniem|
=== Uwagi ===
{{Uwagi}}}}
}}
== Opis parametrów ==
{| class="wikitable"
! pole
! opis
! status
! wartość domyślna
! uwagi
|-
| ''bez nazwy''
| nazwa grupy przypisów
| opcjonalny
| uwaga
| inne typowe to <tt>mini</tt> lub <tt>infobox</tt>
|-
| <tt>1</tt>
| lista przypisów
| opcjonalny
| ''brak''
| pozwala na umieszczenie treści wszystkich uwag w jednym miejscu w kodzie – patrz [[w:Pomoc:Przypisy#Definiowanie_przypis.C3.B3w_w_jednym_miejscu|Pomoc:Przypisy]]
|-
| ''nazwa''
| treść przypisu o podanej nazwie
| opcjonalny
| ''brak''
| alternatywna metoda na grupowanie uwag; nazwa nie może być liczbą; szablon przyjmuje dowolną liczbę takich parametrów
|-
| ''stopień''
| jest to jakaś liczba równa się od jeden do sześciu
| opcjonalny
| jeżeli ten parametr nie jest podany to szablon wyświetla sekcje ==Uwagi==
| w przeciwnym wypadku ta sekcja nie jest wyświetlana (tzn. poprzez podanie parametru pustego w postaci wywołania '''stopień=''') i wtedy ''uwagi'' są umieszczone w sekcji nadrzędnej
|}
== Wstawianie przypisów ==
Jak w przypadku wszystkich innych merytorycznych informacji, zastosowanie do merytorycznych uwag ma zasada weryfikowalności. Dlatego też pozostaje często niezbędnym opatrzenie uwagi przypisem rzeczowym, kierującym do stanowiącego podstawę informacji źródła. Ze wzglądów technicznych nie można tego zrobić stosując znaczniki <code><nowiki><ref></nowiki></code>, jednak można w tym celu wykorzystać szablon {{s|refn}} lub <nowiki>{{#tag:ref}}</nowiki>.
<br>
;Szablon <nowiki>{{refn}}</nowiki>
: <code><nowiki>{{refn|grupa=uwaga|Tekst adnotacji<ref>Treść przypisu</ref>.}}</nowiki></code>
lub (z przywołaniem istniejącego już przypisu o zdefiniowanej nazwie):
: <code><nowiki>{{refn|grupa=uwaga|Tekst adnotacji<ref name="nazwa"/>.}}</nowiki></code>
Jeśli istnieje potrzeba przywołania jednej uwagi wielokrotnie, należy ją nazwać za pomocą parametru "nazwa=":
: <code><nowiki>{{refn|grupa=uwaga|nazwa=xxx|Tekst adnotacji<ref>Treść przypisu</ref>.}}</nowiki></code>
Tak zdefiniowaną uwagę można przywoływać wielokrotnie przez '''<nowiki><ref group="uwaga" name="xxx" /></nowiki>''' lub '''<nowiki>{{u|xxx}}</nowiki>'''.
Kolejność pól w szablonie nie ma znaczenia, może to być np. <code><nowiki>{{refn|Tekst adnotacji<ref>Treść przypisu</ref>.|grupa=uwaga}}</nowiki></code>.
<br>
<br>
;Szablon <nowiki>{{#tag:ref}}</nowiki>
Wywołanie to ma analogiczną konstrukcję:
:<code><nowiki>{{#tag:ref|Tekst adnotacji<ref>Treść przypisu.</ref>.|group=uwaga}}</nowiki></code>
:<code><nowiki>{{#tag:ref|Tekst adnotacji<ref>Treść przypisu.</ref>.|group=uwaga|name=xxx}}</nowiki></code>
:*Pola "group" i "name" muszą być umieszczone na końcu szablonu.
:*Pole <code>name=</code> jest opcjonalne.
; Uwagi
* W szablonie <code><nowiki>{{refn}}</nowiki></code> należy stosować polskie nazwy pól, <code>grupa=</code> i <code>nazwa=</code>.
* W szablonie <code><nowiki>{{#tag:ref}}</nowiki></code> należy stosować angielskie nazwy pól, <code>group=</code> i <code>name=</code>.
* Niezależnie od użytej metody:
** <u>oba szablony uwag muszą być umieszczane bezpośrednio w treści</u>, w przeciwnym razie nie działają;
** <u>nazwa grupy musi brzmieć "uwaga"</u>, natomiast zamiast "xxx" można użyć dowolnej nazwy (nie mogą to być jednak same cyfry).
=== Przykład ===
'''Kod''':
<nowiki>Przykładowy tekst{{refn|grupa=uwaga|nazwa=u1|To jest przykładowa uwaga o nazwie u1<ref>A tu jest przypis.</ref>.}} z rozwinięciem{{u|u1}}.</nowiki>
lub
<nowiki>Przykładowy tekst{{#tag:ref|To jest przykładowa uwaga o nazwie u1<ref>A tu jest przypis</ref>.|group=uwaga|name=u1}} z rozwinięciem{{u|u1}}.</nowiki>
'''Wynik''':
{{cytat|
:Przykładowy tekst{{refn|grupa=uwaga|nazwa=u1|To jest przykładowa uwaga o nazwie u1<ref>A tu jest przypis.</ref>.}} z rozwinięciem{{u|u1}}.
{{OpakujKategorieZeSortowaniem|
== Uwagi ==
{{Uwagi}}}}
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy}}}}
}}
== Grupa <code>mini</code> ==
Wyróżnione znaczenie ma grupa o nazwie ''mini''. Stosuje się ją w szablonie umieszczanym na końcu sekcji w której były stosowane ''mini-przypisy''. W szczególności pozwala na definiowanie listy przypisów lub uwag tuż pod tabelką, w której zostały one zdefiniowane.
Aby użyć szablonu w postaci standardowej, bez jawnego wskazania parametrów, należy skopiować tekst z ramki i wkleić do artykułu.
<pre>
{{Uwagi|=mini}}
</pre>
Szablon wyświetli listę przypisów należących do grupy "mini", wstawianych w tekście według wzoru: '''''<nowiki><ref group="mini">tutaj treść przypisu</ref></nowiki>'''''.
Podobnie jak dla przypisów, możliwe jest nadawanie nazw mini-przypisom, aby wykorzystać je wielokrotnie, według wzoru: '''''<nowiki><ref group="mini" name="p1">tutaj treść przypisu</ref></nowiki>'''''; kolejne wywołanie: '''''<nowiki><ref group="mini" name="p1"/></nowiki>'''''.
:'''Przykładowy kod tekstu:'''
<div style="text-align:left;border:1px grey dashed; background: #F5F5F5; padding:0.5em;margin:0em">
<code>
<nowiki>{| class=wikitable</nowiki><br/>
! Rok !! Ludność <br/>
|-<br/>
| 1800 || 1123<br/>
|-<br/>
| 1840 || 2342'''<span style="color:red"><nowiki><ref group="mini" name="spis"></nowiki></span>'''<nowiki>Spis powszechny.</nowiki>'''<span style="color:red"><nowiki></ref></nowiki></span>'''<br/>
|-<br/>
| 1900 || 5425<br/>
|-<br/>
| 1923 || 4327'''<span style="color:red"><nowiki><ref group="mini"></nowiki></span>'''<nowiki>za Ciamciara 1988, s. 127</nowiki>'''<span style="color:red"><nowiki></ref></nowiki></span>'''<br/>
|-<br/>
| 1938 || 6842<br/>
|-<br/>
| 1950 || 8345<br/>
|-<br/>
| 1960 || 11034'''<span style="color:red"><nowiki><ref group="mini" name="spis"/></nowiki></span>'''<br/>
<nowiki>|}</nowiki>
'''<span style="color:red;"><nowiki>{{Uwagi|=mini}}</nowiki></span>'''
</code></div>
:'''Co wygląda następująco:'''
<div style="background:#fea; padding-left:2em; padding-right:2em; padding-top:1ex; padding-bottom:1ex; ">
{| class=wikitable
! Rok !! Ludność
|-
| 1800 || 1123
|-
| 1840 || 2342<ref group="mini" name="spis">Spis powszechny.</ref>
|-
| 1900 || 5425
|-
| 1923 || 4327<ref group="mini">za Ciamciara 1988, s. 127</ref>
|-
| 1938 || 6842
|-
| 1950 || 8345
|-
| 1960 || 11034<ref group="mini" name="spis"/>
|}
{{OpakujKategorieZeSortowaniem|
== Grupa uwag ==
{{Uwagi|=mini}}}}
</div>
== Alternatywne grupowanie ==
Oprócz standardowego grupowania przypisów w sekcji końcowej w postaci tagów <tt><ref></tt> szablon wspiera metodę polegającą na przekazywaniu treści nazwanego przypisu w polu o nazwie takiej samej jak stosowana w treści do ich przywołania.
{| class="wikitable" style="width:100%"
!style="width:50%"| Kod
!style="width:50%"| Wynik
|- style="vertical-align:top"
|style="font-family: monospace"|
<nowiki>To jest tekst z uwagą{{u|uwaga 1}}. A to jest drugi tekst z inną uwagą{{u|uwaga 1}}{{u|uwaga 2}} do siebie zawierającą{{u|uwaga 2}} przypis{{r|Ala|Ola}}.</nowiki><br />
<br />
<nowiki>== Uwagi ==</nowiki><br />
<nowiki>{{Uwagi</nowiki><br />
<nowiki>|uwaga 1=To jest uwaga z przypisem{{r|P1}}</nowiki><br />
<nowiki>|uwaga 2=To jest inna{{r|P1}} uwaga{{u|uwaga 1}} z innym przypisem{{r|P2}} i uwagą{{u|uwaga 2}} do siebie</nowiki><br />
<nowiki>}}</nowiki><br />
<br />
<nowiki>== Przypisy ==</nowiki><br />
<nowiki>{{Przypisy</nowiki><br />
<nowiki>|P1=To jest przypis do uwagi</nowiki><br />
<nowiki>|P2=To jest inny przypis do innej uwagi</nowiki><br />
<nowiki>|Ala=Ala</nowiki><br />
<nowiki>|Ola=Ola</nowiki><br />
<nowiki>}}</nowiki>
|
To jest tekst z uwagą{{u|uwaga 1}}. A to jest drugi tekst z inną uwagą{{u|uwaga 1}}{{u|uwaga 2}} do siebie zawierającą{{u|uwaga 2}} przypis{{r|Ala|Ola}}.
{{OpakujKategorieZeSortowaniem|
== Uwagi ==
{{Uwagi|
|uwaga 1=To jest uwaga z przypisem{{r|P1}}
|uwaga 2=To jest inna{{r|P1}} uwaga{{u|uwaga 1}} z innym przypisem{{r|P2}} i uwagą{{u|uwaga 2}} do siebie
}}}}
{{OpakujKategorieZeSortowaniem|
== Przypisy ==
{{Przypisy|
|P1=To jest przypis do uwagi
|P2=To jest inny przypis do innej uwagi
|Ala=Ala
|Ola=Ola
}}}}
|}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
* {{ln|Kategoria:Szablon:Uwagi do sprawdzenia}}
<!--
* {{ln|Kategoria:Szablon:Uwagi z poprawnym parametrem stopień}}
* {{ln|Kategoria:Szablon:Uwagi z błędnym parametrem stopień}}
* {{ln|Kategoria:Szablon:Uwagi ze zbędnym parametrem stopień}}
* {{ln|Kategoria:Szablon:Uwagi z nietypowym parametrem stopień}}
-->
== Zobacz też ==
* [[Szablon:Przypisy]]
* [[w:Pomoc:Przypisy|Pomoc:Przypisy]]
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE I INTERWIKI PONIŻEJ TEJ LINII -->
[[Kategoria:Szablony do formatowania przypisów|{{PAGENAME}}]]
[[Kategoria:Szablony przypisów]]
</includeonly>
nz7b3jdv04eonvcv8353dwhf99u44by
Uciążliwość zapachowa/Olfaktometria inżynierska/Dokładność olfaktometrii dynamicznej
0
25995
438575
394498
2022-08-23T12:03:46Z
Persino
2851
/* Przypisy */
wikitext
text/x-wiki
<noinclude>
{{OzdobnaNawigacja
|Podrecznik= [[Uciążliwość zapachowa]]
|PoprzStrona=[[Uciążliwość zapachowa/Instrumentalne pomiary zapachu|Instrumentalne pomiary zapachu]]
|ObecnaStrona= Olfaktometria inżynierska
|NastStrona= [[Uciążliwość zapachowa/Modelowanie dyspersji odorantów|Modelowanie dyspersji odorantów]]
}}
{{OzdobnaNawigacja
|Podrecznik=***
|PoprzStrona=<small>[[Uciążliwość zapachowa/Olfaktometria inżynierska/Olfaktometria statyczna|Olfaktometria statyczna]]</small>
|ObecnaStrona=<small>Dokładność olfaktometrii dynamicznej</small>
|NastStrona= <small>[[Uciążliwość zapachowa/Olfaktometria inżynierska/Dokładność olfaktometrii statycznej|Dokładność olfaktometrii statycznej]]</small>
}}
{{UnikatowaStronaStart}}
</noinclude>
== Dokładność olfaktometrii dynamicznej ==
[[w:dokładność i precyzja metody pomiaru|Precyzja i poprawność]] pomiarów [[w:stężenie zapachowe|stężenia zapachowego]] jest kontrolowana w ramach regularnych ocen wewnątrzlaboratoryjnych i okresowych testów międzylaboratoryjnych{{r|PN-EN 13725:2007}}.
W Europie olfaktometryczne pomiary stężenia [[w:odorant|odorantów]] w próbkach gazów [[w:emisja zanieczyszczeń|emitowanych]] do atmosfery są wykonywane metodą [[w:Olfaktometria#Olfaktometria dynamiczna (PN-EN 13725)|olfaktometrii dynamicznej]], zgodnie z [[w:Polska Norma|normą PN-EN]] 13725{{r|PN-EN 13725:2007}} (dosłowne tłumaczenie EN 13725:2003{{r|CEN-CENELEC}}). Parametry poprawności i precyzji wyznacza się z użyciem [[w:materiał odniesienia|materiału odniesienia]] ([[w:alkohol butylowy|''n''-butanolu]]), dla którego ustalono „przyjętą wartość odniesienia” (''EROM'', zob. [[Uciążliwość_zapachowa/Olfaktometria_inżynierska/Dokładność_olfaktometrii_dynamicznej#Uwagi|uwaga 1]]).
Wyznaczone parametry porównuje się ze wskazanymi w normie kryteriami jakości, które zostały [[w:walidacja (technika)|zwalidowane]] podczas ''Międzylaboratoryjnego Porównania Olfaktometrycznego'' (ang.''Interlaboratory Comparison for Olfactometry, ICO'' w roku 1996{{r|PN-EN 13725:2007|the validation of the draft EN}}.
O wykonaniu pomiarów w laboratorium zgodnie z PN-EN 13725 można mówić, jeżeli spełnienie jej wymagań potwierdzono w czasie opisanych w normie prób eksploatacyjnych. Próby powinny być wykonywane jako „badania biegłości” (ang. ''proficiency testing'') – międzylaboratoryjne badania porównawcze, koordynowane przez [[w:certyfikat|certyfikowaną]] jednostkę zewnętrzną (zob. [[Uciążliwość_zapachowa/Olfaktometria_inżynierska/Dokładność_olfaktometrii_dynamicznej#Uwagi|uwaga 2]]){{r|PN-EN 13725:2007|PN-ISO 4225|PN-EN ISO/IEC 17000}}
== Podstawy olfaktometrii ==
[[Plik:Stanowiska TO7.JPG|thumb|150px|Stanowisko członka [[w:Olfaktometria#Zespół|zespołu]] przy olfaktometrze]]
Olfaktometryczne pomiary stężenia zapachowego są jedną z metod [[w:analiza sensoryczna|analizy sensorycznej]]{{r|ISO 5492}}. Są wykonywane zgodnie normą europejską, wydaną przez [[w:Europejski Komitet Normalizacyjny|Europejski Komitet Normalizacyjny]] (ang. ''European Committee for Standardization'') w roku 2003, a w roku 2005 uznaną przez [[w:Polski Komitet Normalizacyjny|PKN]] za [[w:Polska Norma|PN-EN (U)]]. Dwa lata później została wydana wersja polskojęzyczna: PN-EN 13725:2007 „Jakość powietrza – Oznaczanie stężenia zapachowego metodą olfaktometrii dynamicznej”{{r|PN-EN 13725:2007|Normalizacja 2005|Wod-Kanal 2008}}.
W czasie pomiarów strumień próbki badanego gazu jest rozcieńczany strumieniem czystego powietrza z użyciem olfaktometru dynamicznego. Określa się wartość stopnia rozcieńczenia, po którym jest osiągany zespołowy [[w:próg węchowej wyczuwalności|próg wyczuwalności zapachu]]. Stężenie zapachowe (wynik pojedynczego pomiaru) jest [[w:średnia geometryczna|średnią geometryczną]] z co najmniej 8 lub 12 zgodnych wyników oznaczeń indywidualnych (co najmniej 4 osoby, co najmniej 2 lub 3 cykle prezentacji jednej serii rozcieńczeń, zależnie od regulaminu laboratorium){{r|PN-EN 13725:2007|Normalizacja 2005|Wod-Kanal 2008}}.
== Pojęcia dotyczące jakości pomiarów ==
Kontrolę jakości pomiarów olfaktometrycznych wykonuje się tak, jak w przypadku innych pomiarów{{r|Anal bledow|ENV 13005}}. Ogólne zasady postępowania i pojęcia zdefiniowano w [[w:normalizacja (statystyka)|normach]] międzynarodowych ([[w:Międzynarodowa Organizacja Normalizacyjna|ISO]]) i europejskich ([[w:Europejski Komitet Normalizacyjny|EN]]), np. PN-ISO 5725-1:2002{{r|ISO 5725-1}}, PN-ISO 5725-2:2002{{r|ISO 5725-2}}, PN-ISO 5725-3:2002{{r|ISO 5725-3}}, PN-ISO 5725-4:2002{{r|ISO 5725-4}}, PN-ISO 6879:2000{{r|ISO 6879}}, EN ISO/IEC 17000:2006{{r|PN-EN ISO/IEC 17000}}, PN-EN ISO 9169:2011{{r|ISO 9169}}, PN-ISO 4225:1999{{r|PN-ISO 4225}}.
W przypadku olfaktometrii normalizacja była zadaniem trudnym, ponieważ jedna „wartość rzeczywista” stężenia zapachowego zanieczyszczeń powietrza nie istnieje. Jest to związane z dużym zróżnicowaniem wrażliwości węchu w populacji ogólnej na zapach różnych związków chemicznych i ich [[w:mieszanina|mieszanin]]. Z tego powodu{{r|Harreveld 2004}}:
* za [[w:czujnik|czujnik pomiarowy]] uznano zespół reprezentatywny dla [[w:populacja standardowa|populacji standardowej]], grupę ludzi o podobnej wrażliwości węchu na zapach wskazanego certyfikowanego [[w:materiał odniesienia|materiału odniesienia]] (''CRM''{{r|ISO 5725-4}}, ''n''-butanol); kontrola tej wrażliwości odgrywa rolę [[w:Wzorcowanie|kalibracji przyrządu pomiarowego]] (zobacz też [[w:wymagania metrologiczne]]);
* za „wartość odniesienia”{{r|ISO 5725-1}} umożliwiającą [[w:Walidacja (technika)|walidację]] pomiarów, uznano próg wyczuwalności zapachu ''n''-butanolu (z uwzględnieniem naturalnej dla zmysłów [[w:niepewność rozszerzona pomiaru|niepewności pomiarów]]): 1 ou<sub>E</sub>/m³ ≡ 123 μg ''n''-butanolu/m³, gdzie symbol ou<sub>E</sub> oznacza specjalistyczną [[w:jednostka miary|jednostkę miary]] – [[w:europejska jednostka zapachowa|europejską jednostkę zapachową]].
[[Plik:High accuracy Low precision.svg|thumb|150px|Dużą [[w:dokładność i precyzja metody pomiaru|dokładność mało precyzyjnych]] [[w:pomiar|pomiarów]] [[w:olfaktometria|olfaktometrycznych]] można osiągnąć dzięki wielokrotnym powtórzeniom oznaczeń.]]
''Dokładność pomiaru'' stężenia zapachowego (''c''<sub>od</sub> [ou<sub>E</sub>/m³]) to stopień zgodności między uzyskanym wynikiem, a przyjętą wartością odniesienia, określoną na podstawie rzeczywistego [[w:stężenie (chemia)|stężenia]] ''n''-butanolu w próbce. W przypadku obliczeń dotyczących zbioru wyników badań bierze się pod uwagę wspólny błąd systematyczny (obciążenie){{r|ISO 5725-1|PN-EN 13725:2007}}.
''Badania powtarzalności'' są wykonywane w ustalonych warunkach: ta sama metoda, identyczny materiał doświadczalny, to samo laboratorium, ten sam operator, to samo wyposażenie. Analizowany jest zbiór niezależnych wyników uzyskanych w krótkich odstępach czasu. ''Granicę powtarzalności'' zdefiniowano zakładając, że jest akceptowane prawdopodobieństwo 0,05 wystąpienia różnicy między dwoma wynikami pomiarów. Granicą powtarzalności jest minimalna wartość różnicy, która spełnia ten warunek (definicja zgodna z ISO 5725{{r|ISO 5725-1}}).
''Badania odtwarzalności'' wykonuje się stosując jednakowe metody i materiały doświadczalne, ale w różnych laboratoriach, z użyciem różnego wyposażenia i przez różnych operatorów. ''Granicę odtwarzalności'' zdefiniowano analogicznie jak granicę powtarzalności{{r|ISO 5725-1}}.
Powtarzalność i odtwarzalność pomiarów olfaktometrycznych jest zależna od:
* jakości wyposażenia laboratorium, w tym od sprawności sprzętu rozcieńczającego (precyzja i powtarzalność rozcieńczeń)
* sensorycznej sprawności członków zespołu oceniającego zapach (zespół jako czujnik)
* zgodności stosowanych w laboratorium procedur z wymaganiami normy (np. przestrzeganie kodeksu postępowania osób oceniających, sposoby pobierania, przechowywania i transportu próbek, harmonogram i warunki pomiarów)
== Badania jakości laboratorium ==
W normie PN-EN 13725 określono wymagania dotyczące warunków i sposobów prowadzenia pomiarów olfaktometrycznych. Najdokładniej opisano sposoby kontrolowania:
* jakości urządzeń stosowanych do mieszania strumieni badanego gazu i czystego powietrza (np. sprawność olfaktometrów)
* węchowej wrażliwości osób oceniających zapach rozcieńczonych próbek (sprawność sensoryczna członków zespołu)
* ogólnej dokładności pomiarów, zależnej czynników wyżej wymienionych i innych
W wielu sytuacjach dokładność pomiarów jest ściśle związana z jakością stosowanego sprzętu i prawidłowością procedury pobierania próbek (np. jakość sond i pojemników na próbki{{r|Sampling bags}}). Przyczyną dużych błędów mogą być procesy zachodzące w czasie pobierania próbek gorących i wilgotnych. W tych przypadkach badany gaz jest wstępnie rozcieńczany (dynamicznie lub statycznie) przed wprowadzeniem do worków na próbki, co stanowi pierwszy etap analizy olfaktometrycznej.
=== Jakość olfaktometru i innych urządzeń rozcieńczających ===
Kalibrację olfaktometru i innych urządzeń rozcieńczających wykonuje się co najmniej raz w roku (częściej, jeżeli taka potrzeba wynika z historii kalibracji przechowywanej w archiwum). Dla danej serii rozcieńczeń określa się parametry dokładności i niestabilności, które są porównywane z wymaganiami PN-EN 13725.
W czasie kalibracji są stosowane:
* gazy wskaźnikowe zapewniające stabilność stosowanej metody analitycznej (rozszerzona niepewność ±3% lub mniejsza dla około 15% i 90% zakresu pomiarowego); np. tlenek węgla (analiza NDIR) lub – w przypadku kalibracji aparatów bez regulatorów strumienia masy – propan (GC FID) lub SF6 (ECD lub IR).
* odpowiednie przyrządy kontrolne o udokumentowanej dokładności, wyższej o rząd wielkości niż wymagany poziom dokładności kalibrowanego urządzenia
Oznaczenia wykonuje się co najmniej 10-krotnie dla co najmniej pięciu ustawień jednej serii rozcieńczeń.
Określana jest dokładność rozcieńczenia, wyrażana przez:
* poprawność – obciążenie wewnątrzlaboratoryjne (<big><math>\delta_{w,d}</math></big>; dolny indeks <math>d</math> – od ang. ''dilution''; rozcieńczenie), obliczane zwykle z użyciem wartości odniesienia dla ustawienia rozcieńczenia (<big><math>\mu_d</math></big>), określanej zwykle na podstawie poprzedniej kalibracji
* precyzję – granicę powtarzalności rozcieńczenia (<big><math>r_d</math></big>), parametr charakteryzujący różnice między średnim stężeniem wyznaczanym po kolejnych ustawieniach tego samego rozcieńczenia
* niestabilność (<big><math>I_d</math></big>) – parametr charakteryzujący zmiany stężenia w czasie jednej prezentacji, obliczany na podstawie wyników co najmniej 10 kolejnych obserwacji; wynik analizy dotyczącej jednego ustawienia (<big><math>y_{i,d}</math></big>) powinien składać się z co najmniej 10 „obserwacji” (<big><math>o_j</math></big>), wykonywanych co nie więcej niż 10 s (podstawa obliczeń [[w:odchylenie standardowe|odchylenia standardowego]] niestabilności, <big><math>s_{I,d}</math></big>)
W czasie badań dokładności rozcieńczania (poprawności i precyzji) dla każdego z wybranych ustawień oblicza wartości średnie <big><math>\overline{y}_{w,d}</math></big> oraz 95% przedział ufności dla dokładności tych rozcieńczeń:
: <math> d_{w,d} - A_{w,d} \cdot r_d \leqslant \delta_{w,d} \leqslant d_{w,d} + A_{w,d} \cdot r_d </math>
gdzie:
* oszacowanie obciążenia ustawienia rozcieńczenia: <math>d_{w,d} = \overline{y}_{w,d} - \mu_d </math>
* współczynnik statystyczny <math>A_{w,d} = \sqrt{1 \over 2n}</math>
* granica powtarzalności (<math>r_d</math>), obliczona na podstawie odchylenia standardowego (<math>s_{r,d}</math>) w zbiorze wyników uzyskanych po kolejnych ustawieniach jednego rozcieńczenia: <math>r_d = t \cdot \sqrt 2 \cdot s_{r,d}</math>
<br /><br />
'''<span style="color:SteelBlue">Ustalono, że dokładność (<math>A_d</math>) serii rozcieńczeń powinna spełniać warunek</small>:'''
: <math> A_d = \frac {(|d_{w,d}| + A_{w,d} \cdot r_d)}{\mu_d} \leqslant 0{,}20 </math></span>'''
'''<span style="color:SteelBlue">Dla niestabilności rozcieńczenia (''I''<sub>d</sub>) ustalono kryterium:</span>'''
: <math> I_d = \left( \frac {1,96 \cdot s_{I,d}}{y_{i,d}} \right) \cdot 100\% \leqslant 5\% </math>
<br />
=== Sprawność sensoryczna zespołu ===
[[Plik:Select of panel.svg|thumb|250px|Wyniki badań węchowej wrażliwości kandydata do [[w:Olfaktometria#Zespół|zespołu]] (przykład)]]
Zgodnie z PN-EN 13725 węch członków [[w:Olfaktometria#Zespół|zespołu]], pełniącego funkcję czujnika pomiarowego, jest oceniany z wykorzystaniem ''n''-butanolu. Określana jest wysokość indywidualnego progu wyczuwalności zapachu tego związku (''ITE''<sub>''n''-butanol</sub>; ang. ''Individual Threshold Estimate'') i zmienność progu.
'''<span style="color:SteelBlue">Muszą spełniać następujące kryteria:</small>'''
# antylogarytm z odchylenia standardowego ''s''<sub>ITE</sub>, obliczonego z log ''ITE'', <br />jest mniejszy niż 2,3 (''ITE'' wyraża się w jednostkach [[w:stężenie masowe|stężenia masowego]]),
# średnia geometryczna dla wartości ''ITE''<sub>n-butanol</sub> mieści się <br />między 0,5-krotną a 2-krotną wartością odniesienia (62 µg/m³ do 246 µg/m³, czyli 20–80 [[w:ppb|ppb]])
Zgodność z kryteriami jest systematycznie sprawdzana, a wyniki wszystkich oznaczeń ''ITE''<sub>''n''-butanol</sub> są archiwizowane. W olfaktometrycznych badaniach próbek środowiskowych lub przemysłowych mogą uczestniczyć tylko te osoby, które w czasie ostatnich 10–20 pomiarów ''ITE''<sub>''n''-butanol</sub> spełniały kryteria selekcji.
=== Wewnątrzlaboratoryjne badania eksploatacyjne ===
Wewnątrzlaboratoryjne badania dokładności są wykonywane przede wszystkim z użyciem [[w:certyfikat|certyfikowanego]] odorantu odniesienia ([[w:alkohol butylowy|''n''-butanol]]), dla którego jest znana [[w:wartość oczekiwana|wartość oczekiwana]] (<big><math>\mu</math></big>), zastępująca „wartość rzeczywistą” stężenia zapachowego.
Określana jest dokładność, wyrażana przez:
* poprawność – obciążenie wewnątrzlaboratoryjne (<big><math>\delta_w</math></big>)
* precyzję – granica powtarzalności (<big><math>r</math></big>)
W czasie wewnętrznej kontroli jakości pomiarów wykonuje się co najmniej <big><math>n = 10</math></big> pomiarów stężenia zapachowego w próbce i oblicza wartość średnią <big><math>\overline{y}_{w}</math></big> oraz 95% przedział ufności dla obciążenia wewnątrzlaboratoryjnego:
: <math>d_w - A_w \cdot r \leqslant \delta_w \leqslant d_w + A_w \cdot r</math>
gdzie:
* oszacowanie obciążenia wewnątrzlaboratoryjnego: <math>d_w = \overline{y}_{w} - \mu</math>
* współczynnik statystyczny <math>A_{w} = \sqrt{1 \over 2n}</math>
* granica powtarzalności (<big><math>r</math></big>), obliczona na podstawie odchylenia standardowego (<big><math>s_r</math></big>): <math>r = t \cdot \sqrt 2 \cdot s_r</math>
<br /><br />
'''<span style="color:SteelBlue">Kryteria dokładności i powtarzalności określono stosując zmienną pomiarową <math>A_{od}</math>:</big>'''
: <math>A_{od} = |d_w| + (A_w \cdot r) \leqslant 0{,}217</math>
'''<span style="color:SteelBlue">Dodatkowo określono kryterium precyzji (granica powtarzalności) jako:</span>'''
: <math>r \leqslant 0{,}477</math> lub <math>10^r \leqslant 3{,}0</math>
<br />
Wewnątrzlaboratoryjne badania jakości pomiarów stężenia zapachowego w próbkach zawierających inne odoranty ograniczają się do określania precyzji. Ustalenie poprawności (obciążenia) nie jest możliwe, ponieważ nie jest dostępna wartość oczekiwana. Przyjmuje się, że poprawność jest taka sama jak w czasie oznaczeń z użyciem ''n''-butanolu.
=== Badania międzylaboratoryjne ===
Zaleca się, aby oznaczenia dokładności laboratorium były organizowane przez niezależne certyfikowane jednostki, zajmujące się przygotowaniem i dystrybucją próbek, równocześnie analizowanych w różnych laboratoriach („test okrężny”, ''ring-test''{{r|Ring test|Ringversuch}}). Badania umożliwiają ustalenie dokładności oznaczeń stężenia zapachowego w próbkach zawierających n-butanol, inne czyste związki chemiczne lub mieszaniny odorantów (np. w próbkach środowiskowych). W przypadku stosowania odorantów innych niż n-butanol za wartość oczekiwaną uznaje się średnią z wyników uzyskiwanych w różnych laboratoriach.
Międzylaboratoryjne badania zgodności wyników pomiarów olfaktometrycznych były prowadzone w Holandii i w Niemczech od lat 80. XX w. Od roku 2003 koordynuje je prywatna firma OLFAtec GmbH (Niemcy), która uzyskała akredytację zgodnie z EN ISO/IEC 17020:2004{{r|Proficiency art2009|proficiency-testing}}.
== Wyniki ICO 2000, 2003, 2005, 2007, 2011 ==
Międzylaboratoryjne badania olfaktometryczne były prowadzone na dużą skalę już w latach 80. XX w., głównie w Niemczech i Holandii. Ich wyniki zostały wykorzystane w ramach prac Grupy Roboczej WG2 Odours w Europejskim Komitecie Normalizacyjnym, kierowanej przez A.P. van Harrevelda, w czasie opracowywania projektu normy{{r|Harreveld 1993|Heeres Harssema 1993|ICO 2000}}.
W badaniach wykonanych na podstawie projektu z roku 2000 uczestniczyło 31 laboratoriów z czterech krajów Europy Środkowej. Wykonywano testy z użyciem trzech czystych związków chemicznych (''n''-butanol, [[w:siarkowodór|H<sub>2</sub>S]], [[w:tetrahydrotiofen|THT]]) oraz naturalnej mieszaniny odorantów (zapach kawy). Stwierdzono, że laboratoria pracujące zgodnie z nowym standardem uzyskują większą niż inne powtarzalność i odtwarzalność{{r|ICO 2000}}.
W roku ustanowienia EN 13725:2003 w ICO uczestniczyło 51 laboratoriów z 12 krajów, a w roku 2005 – 47 laboratoriów z 15 krajów. {{r|ICO 2005}}. W zakres testu ''RV Standard'' (test zgodności wyników, skrót ''RV'' od niem. ''Ringversuch'') wchodziło oznaczenie stężenia zapachowego w 4 próbkach, dostarczonych przez ''OLFAtec GmbH'', zawierających ''n''-butanol (dwa różne stężenia) oraz [[w:Tetrahydrotiofen|THT]] i ''SFREE'' (bezsiarkowy [[w:nawaniacz|nawaniacz]] gazu ziemnego, stosowany zamiast THT){{r|SFREE}}. Porównując liczbę poprawnych wyników uzyskanych w poszczególnych laboratoriach, stwierdzono duży postęp w czasie dwóch lat. W roku 2003 cztery poprawne wyniki uzyskano w 8 (ok. 16%), a w roku 2005 w 18 laboratoriach (ok. 38%).
Trudniejsze okazało się uzyskanie potwierdzenia wymaganej powtarzalności i poprawności oznaczeń stężenia ''n''-butanolu. W roku 2005 do testu ''RV PLUS'' (10 próbek o różnym stężeniu ''n''-butanolu w azocie) przystąpiło 10 laboratoriów. Tylko dwa z nich uzyskały potwierdzenie zgodności z kryterium powtarzalności (''r'') i poprawności (''A''), a trzy dodatkowe spełniały jedno z kryteriów (''r'' lub ''A''){{r|ICO 2005}}.
W 2007 roku w badaniu biegłości z użyciem ''n''-butanolu uczestniczyło 29 laboratoriów. Wszystkie kryteria statystyczne EN 13725 spełniło 12 z nich. Wśród laboratoriów, które nie uzyskały wymaganej dokładności znalazły się jednostki akredytowane zgodnie z ISO 17025, co potwierdza potrzebę stosowania ICO{{r|Proficiency art2009}}.
W 2011 w analogicznych badaniach wzięło udział 35 zespołów olfaktometrycznych z 14 krajów (Niemcy, Dania, Wielka Brytania, Belgia, Francja, Włochy, Holandia, Hiszpania, Austria, Kanada, Chile, Estonia, Szwajcaria i – po raz pierwszy – Polska). Oba kryteria spełniło 19 laboratoriów. Laboratorium z Polski znalazło się wśród siedmiu, które spełniły tylko jedno z nich. Żadnego kryterium nie spełniło 9 zespołów{{r|ICO2011}}.
== Uwagi ==
# Skrót ''EROM'' oznacza ''European Reference Odour Mass'': <small>'''1 EROM ≡ 123 μg ''n''-butanolu ≡ 1 ou<sub>E</sub> mieszaniny odorantów'''</small><br />Zgodnie z PN-EN 13725 „czujnikiem” olfaktometru jest [[Uciążliwość_zapachowa/Olfaktometria_inżynierska/Olfaktometria_dynamiczna#Zespół|zespół]] oceniających, których indywidualny próg wyczuwalności mieści się w zakresie 62–246 μg ''n''-butanolu/m³.
# W PN-EN 13725 jakości laboratoriów olfaktometrycznych dotyczy rozdz. 5. „Eksploatacyjne wymagania dotyczące jakości” (s. 19) oraz załączniki informacyjne: Załącznik C – Przykład obliczeń dokładności i niestabilności przyrządu (s. 54); Załącznik D – Przykład obliczeń pomiarów odorymetrycznych w jednym laboratorium (s. 57).
== Zobacz też – zestawienie najważniejszych pojęć ==
* [[Uciążliwość zapachowa/Olfaktometria inżynierska/Zestawienie najważniejszych pojęć|Zestawienie najważniejszych pojęć]]
== Czy znasz odpowiedzi? ==
* Czy dokładność uzyskiwanego w olfaktometrze rozcieńczenia Z = 60 jest zgodna z wymaganiami normy PN-EN 13725, jeżeli przed rozcieńczeniem stężenie związku wzorcowego wynosiło 1200 ppm, a po 15 ustawieniach tego rozcieńczenia uzyskano zestawione poniżej wyniki oznaczeń stężenia wzorca w strumieniu wypływającym z aparatu?
{| class="wikitable"
| align="center" style="background:#f0f0f0;"|'''Lp'''
| align="center" style="background:#f0f0f0;"|'''1'''
| align="center" style="background:#f0f0f0;"|'''2'''
| align="center" style="background:#f0f0f0;"|'''3'''
| align="center" style="background:#f0f0f0;"|'''4'''
| align="center" style="background:#f0f0f0;"|'''5'''
| align="center" style="background:#f0f0f0;"|'''6'''
| align="center" style="background:#f0f0f0;"|'''7'''
| align="center" style="background:#f0f0f0;"|'''8'''
| align="center" style="background:#f0f0f0;"|'''9'''
| align="center" style="background:#f0f0f0;"|'''10'''
| align="center" style="background:#f0f0f0;"|'''11'''
| align="center" style="background:#f0f0f0;"|'''12'''
| align="center" style="background:#f0f0f0;"|'''13'''
| align="center" style="background:#f0f0f0;"|'''14'''
| align="center" style="background:#f0f0f0;"|'''15'''
|-
| Stężenie, ppm||21,16||19,61||21,03||23,10||20,54||20,78||20,84||23,13||22,07||23,50||19,22||21,96||23,25||21,49||22,13
|}
<noinclude>{| class="collapsible collapsed"
! <small><small>Obliczenia i odpowiedź</small></small>
|-
|
::;''Wyniki obliczeń dokładności rozcieńczenia'':
{| class="wikitable"
| align="left" style="background:#f0f0f0;"|'''średnia z wyników pomiarów, y<sub>śr.,w,d</sub>'''
| align="center" style="background:#f0f0f0;"|'''21,586'''
|-
| wartość oczekiwana μ<sub>d</sub> = 1200 ppm / Z = 60||'''20'''
|-
| poprawność, obciążenie, d<sub>w,d</sub> = y<sub>śr,w,d</sub> - μ<sub>d</sub>||1,586
|-
| współczynnik statystyczny A<sub>w,d</sub> = (1/2n)<sup>0,5</sup>||0,183
|-
| odchylenie standardowe, s<sub>r,d</sub>||1,268
|-
| t-Studenta (95%)||1,753
|-
| granica powtarzalności r<sub>d</sub> = t * 2<sup>0,5</sup> * s<sub>r,d</sub>||3,143
|-
| dokładność ustawienia, A<sub>w,d</sub> = (d<sub>w,d</sub> + A<sub>w,d</sub> * r<sub>d</sub>) / μ<sub>d</sub> ||'''0,11'''
|}
::;''Odpowiedź'':
::''Kryterium dokładności: '''A<sub>w,d</sub> ≤ 0,20''' jest spełnione. ''
|}
----
* Czy laboratorium spełnia ustalone w PN-EN 13725 kryteria dokładności i powtarzalności pomiarów, jeżeli uzyskano zestawione poniżej wyniki oznaczeń stężenia zapachowego w próbce powietrza, zawierającej 100 ppm n-butanolu (c<sub>th</sub> = 40 ppb)?
{| class="wikitable"
| align="center" style="background:#f0f0f0;"|'''Lp'''
| align="center" style="background:#f0f0f0;"|'''1'''
| align="center" style="background:#f0f0f0;"|'''2'''
| align="center" style="background:#f0f0f0;"|'''3'''
| align="center" style="background:#f0f0f0;"|'''4'''
| align="center" style="background:#f0f0f0;"|'''5'''
| align="center" style="background:#f0f0f0;"|'''6'''
| align="center" style="background:#f0f0f0;"|'''7'''
| align="center" style="background:#f0f0f0;"|'''8'''
| align="center" style="background:#f0f0f0;"|'''9'''
| align="center" style="background:#f0f0f0;"|'''10'''
| align="center" style="background:#f0f0f0;"|'''11'''
| align="center" style="background:#f0f0f0;"|'''12'''
| align="center" style="background:#f0f0f0;"|'''13'''
| align="center" style="background:#f0f0f0;"|'''14'''
| align="center" style="background:#f0f0f0;"|'''15'''
|-
| Stężenie ''c''<sub>od</sub> [ou<sub>E</sub>/m³]||2200||2448||4094||4233||4159||3862||2333||3315||3856||3316||3000||2327||4366||2968||3903
|}
<noinclude>{| class="collapsible collapsed"
! <small><small>Obliczenia i odpowiedź</small></small>
|-
|
::''Stężenie n-butanolu w badanej próbce wynosiło:''
:::: c<sub>od</sub> = c / c<sub>th</sub> = 100 ppm / 0,040 = 2500 ou<sub>E</sub>/m³.
::''Aby ocenić sprawność laboratorium olfaktometrycznego – sprzęt, zespół i procedury – obliczamy:
::– ''geometryczną średnią z wyników pomiarów c<sub>od</sub>,''
::– ''logarytmy z wyników pomiarów i odchylenie standardowe z tych wartości,''
::– ''wartości A<sub>od</sub> i ''r'', które powinny spełniać ustalone kryteria.''
{| class="wikitable"
| align="center" style="background:#f0f0f0;"|'''Lp'''
| align="center" style="background:#f0f0f0;"|'''1'''
| align="center" style="background:#f0f0f0;"|'''2'''
| align="center" style="background:#f0f0f0;"|'''3'''
| align="center" style="background:#f0f0f0;"|'''4'''
| align="center" style="background:#f0f0f0;"|'''5'''
| align="center" style="background:#f0f0f0;"|'''6'''
| align="center" style="background:#f0f0f0;"|'''7'''
| align="center" style="background:#f0f0f0;"|'''8'''
| align="center" style="background:#f0f0f0;"|'''9'''
| align="center" style="background:#f0f0f0;"|'''10'''
| align="center" style="background:#f0f0f0;"|'''11'''
| align="center" style="background:#f0f0f0;"|'''12'''
| align="center" style="background:#f0f0f0;"|'''13'''
| align="center" style="background:#f0f0f0;"|'''14'''
| align="center" style="background:#f0f0f0;"|'''15'''
| align="center" style="background:#f0f0f0;"|
|-
| stężenie ''c''<sub>od</sub> [ou<sub>E</sub>/m³] ||2200||2448||4094||4233||4159||3862||2333||3315||3856||3316||3000||2327||4366||2968||3903||'''śr. geom.'''<br/>'''3270'''
|-
| stężenie ''c'' [ppm]||88||98||164||169||166||154||93||133||154||133||120||93||175||119||156|| *
|-
| logarytm ''c''<sub>od</sub>||2,1206||2,1670||2,3903||2,4048||2,3971||2,3650||2,1461||2,2986||2,3643||2,2987||2,2553||2,1449||2,4183||2,2507||2,3696||'''''s''<sub>r</sub> '''<br/>'''0,1023'''
|}
{{Wikisource|tekst=nie|Tablica rozkładu t-Studenta|tablicę rozkładu Studenta }}
::''Laboratorium spełnia oba kryteria dokładności, ponieważ:''
:::– ''granica powtarzalności: ''
:::: ''r = t * 2<sup>0,5</sup> * s<sub>r</sub> = 1,75305 * 2<sup>0,5</sup> * 0,1023 = '''0,2537 < 0,477'''
:::– ''kryterium dokładności i powtarzalności: ''
:::: ''A<sub>od</sub> = |d<sub>w</sub>| + A<sub>w</sub> * r = (log 3270 - log 2500) + (1/30)<sup>0,5</sup> * 0,2537 = '''0,16296 < 0,217'''''
|}
== Przypisy ==
<noinclude>{{Przypisy-lista|liczba kolumn=2|1=
* <ref name="PN-EN 13725:2007">{{cytuj książkę|autor=Polski Komitet Normalizacyjny, NKP 280 |tytuł=Jakość powietrza. Oznaczanie stężenia zapachowego metodą olfaktometrii dynamicznej (ang. Air quality – Determination of odour concentration by dynamic olfactometry; fr. Qualité de l’air – Détermination de la concentration d’une odeur par olfactométrie dynamique; niem. Luftbeschaffenheit – Bestimmung der Geruchsstoffkonzentration mit dynamischer Olfaktometrie)|wydawca=PKN Warszawa |rok=2007 |język=pl |url=http://sklep.pkn.pl/pn-en-13725-2007p.html|data dostępu=2011-07-05}}</ref>
* <ref name="CEN-CENELEC">{{cytuj stronę|url=http://archive.is/ZV5OK |tytuł=Objective assessment of odours |nazwisko=van Harreveld |imię=Ton |opublikowany=CEN-CENELEC Management Centre |język=en |data dostępu=2011-06-29}}</ref>
* <ref name="Harreveld 2004">{{cytuj pismo|nazwisko=Van Harreveld |imię=A.P. |tytuł=Odour management tools-filling the gaps |czasopismo=Water Sci. Technol. |pmid=15484736) |rok=2004 |wolumin=50 |wydanie=4 |strony=1–8 |język=en}}</ref>
* <ref name="Normalizacja 2005">{{cytuj pismo|nazwisko=Kośmider |imię=J. |nazwisko2=Krajewska |imię2=B. |tytuł=Normalizacja olfaktometrii dynamicznej. Podstawowe pojęcia i jednostki miar |czasopismo=Normalizacja |oznaczenie=nr 1 |strony=15–22 |rok=2005 |język=pl}}</ref>
* <ref name="Wod-Kanal 2008">{{cytuj pismo|nazwisko=Kośmider |imię=J. |tytuł=Pomiary stężeń zapachowych metodą olfaktometrii dynamicznej (PN-EN 13725:2007) |czasopismo=Wodociągi – Kanalizacja |url=http://www.zut.edu.pl/fileadmin/pliki/odory/pdf/WOD_KANAL_2006_Pom_st_zap.pdf |oznaczenie=nr 10 |strony=34–35 |rok=2007 |język=pl}}</ref>
* <ref name="Sampling bags">{{cytuj pismo|nazwisko=van Harreveld |imię=A.P. |tytuł=Odor concentration decay and stability in gas sampling bags |czasopismo=J. Air Waste Manag. Assoc. |pmid=12568253 |wydanie=1 |wolumin=53 |strony=51–60 |język=en |data=styczeń 2003}}</ref>
* <ref name="the validation of the draft EN">{{cytuj pismo|nazwisko=van Harreveld |imię=A.P |nazwisko2=Heeres |imię2=P. |tytuł=The validation of the draft European CEN standard for dynamic olfactometry by an interlaboratory comparison on n-butanol |czasopismo=Gefahrstoffe Reinhaltung der Luft |wydawca=Springer |miejsce=Düsseldorf |wydanie=10 |wolumin=57 |strony=393–398 |issn=0949-8036 |język=en |rok=1997 |url=http://cat.inist.fr/?aModele=afficheN&cpsidt=2862787}}</ref>
* <ref name="Ring test">{{cytuj stronę|url=http://www.proz.com/kudoz/english_to_polish/mathematics_statistics/3522571-ring_test.html#7973560 |tytuł=Tłumaczenie zwrotu „ring test” |praca= English_to_polish/mathematics_statistics | opublikowany=www.proz.com |język=pl |data dostępu=2011-06-29}}</ref>
* <ref name="Ringversuch">{{cytuj stronę|url=http://www.olfatec.de/web2/de/hauptbereich/ringversuche/en-137252003/ |tytuł=Ringversuch/Eignungsprüfung nach DIN EN 13725:2003 |data dostępu=2010-10-16 |autor=OLFAtec GmbH – ein Unternehmen der Odournet Holding b.v. |język=de}}</ref>
* <ref name="ICO 2000">{{cytuj pismo|nazwisko=Mannebeck |imię=D. |nazwisko2=Mannebeck |imię2=H. |tytuł=Interlaboratory comparison of dynamic olfactometry in Central Europe 2000 |czasopismo= Water Sci Technol. |pmid=117624 |wydanie=9 |wolumin=44 |rok=2001}}</ref>
* <ref name="ICO 2005">{{cytuj pismo|nazwisko=Maxeiner |imię=Bjoern |tytuł=Olfactometric Interlaboratory Comparison Test 2005 |czasopismo=WEF/AWWA Odors and Air Emissions |odpowiedzialność=OLFATec GmbH |język=en |rok=2006 |url=http://www.olfatec.de/ger/download/olfactometric_interlab_test_2005.pdf}}</ref>
* <ref name="Proficiency art2009">{{cytuj pismo|nazwisko=van Harreveld |imię=A.P. |nazwisko2=Mannebeck |imię2=D. |nazwisko3=Maxeiner |imię3=B. |tytuł=Proficiency testing as the key element in implementing EN13275 olfactometry |czasopismo=Water Sci. Technol. |wydanie=8 |wolumin=59 |strony=1649–1655 |język=en |rok=2009 |pmid=19403979 |url = http://www.researchgate.net/publication/24378823_Proficiency_testing_as_the_key_element_in_implementing_EN13275_olfactometry}}</ref>
* <ref name="proficiency-testing">{{cytuj stronę|url=http://www.odournet.com/qaqc-services/proficiency-testing/en-13725/ |tytuł= en 13725 - proficiency testing|praca=accredited calibration & proficiency testing|opublikowany=OLFAtec |język=en |data dostępu=2011-06-29}}</ref>
* <ref name="Anal bledow">{{cytuj stronę|url=http://www.eti.pg.gda.pl/katedry/kose/dydaktyka/Metrologia/analiza_bledow.pdf |tytuł=Analiza błędów i niepewności pomiarów |praca=Materiały dydaktyczne PG. Metrologia |opublikowany=www.eti.pg.gda.pl |język=pl |data dostępu=2011-07-02}}</ref>
* <ref name="ISO 5725-1">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=1 |tytuł części=Ogólne zasady i definicje |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/index.php?a=show&m=product&pid=460571&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5725-2">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=2 |tytuł części=Podstawowa metoda określania powtarzalności i odtwarzalności standardowej metody pomiarowej |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/index.php?a=show&m=product&pid=460572&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5725-3">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=3 |tytuł części=Pośrednie miary precyzji standardowej metody pomiarowej |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=460573&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5725-4">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=4 |tytuł części=Podstawowe metody wyznaczania poprawności standardowej metody pomiarowej |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/index.php?a=show&m=product&pid=460574&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ENV 13005">{{cytuj stronę|url=http://www.bipm.org/utils/common/documents/jcgm/JCGM_100_2008_E.pdf |tytuł=Guide to the expression of uncertainty in measurement |rok=1993 |praca=International Organization for Standardization, Genewa, ISO |opublikowany=www.bipm.org |język=en |data dostępu=2011-07-02}}</ref>
* <ref name="ISO 9169">{{cytuj książkę|tytuł=Jakość powietrza – Definicje i wyznaczanie charakterystyk działania automatycznego systemu pomiarowego |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=568418&page=329 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5492">{{cytuj książkę|tytuł=Analiza sensoryczna – Terminologia |język=pl | wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=564387 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 6879">{{cytuj książkę|tytuł=Jakość powietrza – Charakterystyki sprawności metod pomiaru jakości powietrza i pojęcia pokrewne dotyczące tych metod |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=479079&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="PN-ISO 4225">{{cytuj książkę|tytuł=Jakość powietrza - Zagadnienia ogólne - Terminologia|język=pl |wydawca=Polski Komitet Normalizacyjny |url=http://sklep.pkn.pl/pn-iso-4225-1999p.html |data dostępu=2011-07-05}}</ref>
* <ref name="PN-EN ISO/IEC 17000">{{cytuj książkę|tytuł=Ocena zgodności – Terminologia i zasady ogólne |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=487514 |data dostępu=2011-07-05}}</ref>
* <ref name="Harreveld 1993">{{cytuj książkę|tytuł=Materiały Międzynarodowego Seminarium ODOURS – Control, Regulations, Measurements ODOURS’1993 |wydawca=Ekochem |miejsce=Szczecin |rok=1993 |strony=140–156 |rozdział=European standardisation of olfactometry |imię r=A.P. |nazwisko r=van Harreveld |url=http://www.odory-szczecin.ps.pl/index.php?page=a-p-van-harreveld---european-standardisation-of-olfactometry}}</ref>
* <ref name="Heeres Harssema 1993">{{cytuj książkę|tytuł=Materiały Międzynarodowego Seminarium ODOURS – Control, Regulations, Measurements ODOURS’1993 |wydawca=Ekochem |miejsce=Szczecin |rok=1993 |strony=121–129 |rozdział=An interlaboratory study on the odor measurements of n-butanol |imię r=P. |nazwisko r=Heeres |imię2 r=H. |nazwisko2 r=Harssema |url=http://www.odory-szczecin.ps.pl/index.php?page=p-heeres-h-haressema---an-interlaboratory-study-n-butanol}}</ref>
* <ref name="SFREE">{{cytuj stronę|url=http://www.chem-met.com.pl/gasodor.html|tytuł=Gasodor S-FREE – bezsiarkowy nawaniacz do gazu ziemnego |opublikowany=www.chem-met.com.pl |język=pl |data dostępu=2011-07-02}}</ref>
* <ref name="ICO2011">Wyniki ''Interlaboratory Comparison Olfactometry'' 2011, {{cytuj stronę|url=http://www.zut.edu.pl/index.php?id=5763&tx_ttnews|tytuł=ODORY, OLFAKTOMETRIA ... Aktualności |opublikowany= www.zut.edu.pl|język=pl |data dostępu=2011-09-22}}</ref>
}}
== Linki zewnętrzne ==
* Bjoern Maxeiner: [http://www.researchgate.net/publication/233667735_Olfactometric_Interlaboratory_Comparison_Test_2005 Olfactometric Interlaboratory Comparison Test 2005], Proceedings of the Water Environment Federation 12/2005; DOI: 10.2175/193864706783791452
* [http://www.odournet.com/qaqc-services/proficiency-testing?gclid=CjwKEAjwxtKeBRDMzoeQmYn5uHcSJACGCF3D74tsbp1I7SvbVTYvF_rMQ1_sGG9fK1KK7aWqMRpTTxoCN5jw_wcB accredited calibration & proficiency testing] na: www.odournet.com
</noinclude>
<noinclude>
<center>'''[[Uciążliwość zapachowa|Powrót do spisu treści]]'''</center>{{UnikatowaStronaKoniec}}</noinclude>
77hbf4shvgxj8k75dpv7v01xptqxeva
438576
438575
2022-08-23T12:11:33Z
Persino
2851
wikitext
text/x-wiki
<noinclude>
{{OzdobnaNawigacja
|Podrecznik= [[Uciążliwość zapachowa]]
|PoprzStrona=[[Uciążliwość zapachowa/Instrumentalne pomiary zapachu|Instrumentalne pomiary zapachu]]
|ObecnaStrona= Olfaktometria inżynierska
|NastStrona= [[Uciążliwość zapachowa/Modelowanie dyspersji odorantów|Modelowanie dyspersji odorantów]]
}}
{{OzdobnaNawigacja
|Podrecznik=***
|PoprzStrona=<small>[[Uciążliwość zapachowa/Olfaktometria inżynierska/Olfaktometria statyczna|Olfaktometria statyczna]]</small>
|ObecnaStrona=<small>Dokładność olfaktometrii dynamicznej</small>
|NastStrona= <small>[[Uciążliwość zapachowa/Olfaktometria inżynierska/Dokładność olfaktometrii statycznej|Dokładność olfaktometrii statycznej]]</small>
}}
{{UnikatowaStronaStart}}
</noinclude>
== Dokładność olfaktometrii dynamicznej ==
[[w:dokładność i precyzja metody pomiaru|Precyzja i poprawność]] pomiarów [[w:stężenie zapachowe|stężenia zapachowego]] jest kontrolowana w ramach regularnych ocen wewnątrzlaboratoryjnych i okresowych testów międzylaboratoryjnych{{r|PN-EN 13725:2007}}.
W Europie olfaktometryczne pomiary stężenia [[w:odorant|odorantów]] w próbkach gazów [[w:emisja zanieczyszczeń|emitowanych]] do atmosfery są wykonywane metodą [[w:Olfaktometria#Olfaktometria dynamiczna (PN-EN 13725)|olfaktometrii dynamicznej]], zgodnie z [[w:Polska Norma|normą PN-EN]] 13725{{r|PN-EN 13725:2007}} (dosłowne tłumaczenie EN 13725:2003{{r|CEN-CENELEC}}). Parametry poprawności i precyzji wyznacza się z użyciem [[w:materiał odniesienia|materiału odniesienia]] ([[w:alkohol butylowy|''n''-butanolu]]), dla którego ustalono „przyjętą wartość odniesienia” (''EROM'', zob. [[Uciążliwość_zapachowa/Olfaktometria_inżynierska/Dokładność_olfaktometrii_dynamicznej#Uwagi|uwaga 1]]).
Wyznaczone parametry porównuje się ze wskazanymi w normie kryteriami jakości, które zostały [[w:walidacja (technika)|zwalidowane]] podczas ''Międzylaboratoryjnego Porównania Olfaktometrycznego'' (ang.''Interlaboratory Comparison for Olfactometry, ICO'' w roku 1996{{r|PN-EN 13725:2007|the validation of the draft EN}}.
O wykonaniu pomiarów w laboratorium zgodnie z PN-EN 13725 można mówić, jeżeli spełnienie jej wymagań potwierdzono w czasie opisanych w normie prób eksploatacyjnych. Próby powinny być wykonywane jako „badania biegłości” (ang. ''proficiency testing'') – międzylaboratoryjne badania porównawcze, koordynowane przez [[w:certyfikat|certyfikowaną]] jednostkę zewnętrzną (zob. [[Uciążliwość_zapachowa/Olfaktometria_inżynierska/Dokładność_olfaktometrii_dynamicznej#Uwagi|uwaga 2]]){{r|PN-EN 13725:2007|PN-ISO 4225|PN-EN ISO/IEC 17000}}
== Podstawy olfaktometrii ==
[[Plik:Stanowiska TO7.JPG|thumb|150px|Stanowisko członka [[w:Olfaktometria#Zespół|zespołu]] przy olfaktometrze]]
Olfaktometryczne pomiary stężenia zapachowego są jedną z metod [[w:analiza sensoryczna|analizy sensorycznej]]{{r|ISO 5492}}. Są wykonywane zgodnie normą europejską, wydaną przez [[w:Europejski Komitet Normalizacyjny|Europejski Komitet Normalizacyjny]] (ang. ''European Committee for Standardization'') w roku 2003, a w roku 2005 uznaną przez [[w:Polski Komitet Normalizacyjny|PKN]] za [[w:Polska Norma|PN-EN (U)]]. Dwa lata później została wydana wersja polskojęzyczna: PN-EN 13725:2007 „Jakość powietrza – Oznaczanie stężenia zapachowego metodą olfaktometrii dynamicznej”{{r|PN-EN 13725:2007|Normalizacja 2005|Wod-Kanal 2008}}.
W czasie pomiarów strumień próbki badanego gazu jest rozcieńczany strumieniem czystego powietrza z użyciem olfaktometru dynamicznego. Określa się wartość stopnia rozcieńczenia, po którym jest osiągany zespołowy [[w:próg węchowej wyczuwalności|próg wyczuwalności zapachu]]. Stężenie zapachowe (wynik pojedynczego pomiaru) jest [[w:średnia geometryczna|średnią geometryczną]] z co najmniej 8 lub 12 zgodnych wyników oznaczeń indywidualnych (co najmniej 4 osoby, co najmniej 2 lub 3 cykle prezentacji jednej serii rozcieńczeń, zależnie od regulaminu laboratorium){{r|PN-EN 13725:2007|Normalizacja 2005|Wod-Kanal 2008}}.
== Pojęcia dotyczące jakości pomiarów ==
Kontrolę jakości pomiarów olfaktometrycznych wykonuje się tak, jak w przypadku innych pomiarów{{r|Anal bledow|ENV 13005}}. Ogólne zasady postępowania i pojęcia zdefiniowano w [[w:normalizacja (statystyka)|normach]] międzynarodowych ([[w:Międzynarodowa Organizacja Normalizacyjna|ISO]]) i europejskich ([[w:Europejski Komitet Normalizacyjny|EN]]), np. PN-ISO 5725-1:2002{{r|ISO 5725-1}}, PN-ISO 5725-2:2002{{r|ISO 5725-2}}, PN-ISO 5725-3:2002{{r|ISO 5725-3}}, PN-ISO 5725-4:2002{{r|ISO 5725-4}}, PN-ISO 6879:2000{{r|ISO 6879}}, EN ISO/IEC 17000:2006{{r|PN-EN ISO/IEC 17000}}, PN-EN ISO 9169:2011{{r|ISO 9169}}, PN-ISO 4225:1999{{r|PN-ISO 4225}}.
W przypadku olfaktometrii normalizacja była zadaniem trudnym, ponieważ jedna „wartość rzeczywista” stężenia zapachowego zanieczyszczeń powietrza nie istnieje. Jest to związane z dużym zróżnicowaniem wrażliwości węchu w populacji ogólnej na zapach różnych związków chemicznych i ich [[w:mieszanina|mieszanin]]. Z tego powodu{{r|Harreveld 2004}}:
* za [[w:czujnik|czujnik pomiarowy]] uznano zespół reprezentatywny dla [[w:populacja standardowa|populacji standardowej]], grupę ludzi o podobnej wrażliwości węchu na zapach wskazanego certyfikowanego [[w:materiał odniesienia|materiału odniesienia]] (''CRM''{{r|ISO 5725-4}}, ''n''-butanol); kontrola tej wrażliwości odgrywa rolę [[w:Wzorcowanie|kalibracji przyrządu pomiarowego]] (zobacz też [[w:wymagania metrologiczne]]);
* za „wartość odniesienia”{{r|ISO 5725-1}} umożliwiającą [[w:Walidacja (technika)|walidację]] pomiarów, uznano próg wyczuwalności zapachu ''n''-butanolu (z uwzględnieniem naturalnej dla zmysłów [[w:niepewność rozszerzona pomiaru|niepewności pomiarów]]): 1 ou<sub>E</sub>/m³ ≡ 123 μg ''n''-butanolu/m³, gdzie symbol ou<sub>E</sub> oznacza specjalistyczną [[w:jednostka miary|jednostkę miary]] – [[w:europejska jednostka zapachowa|europejską jednostkę zapachową]].
[[Plik:High accuracy Low precision.svg|thumb|150px|Dużą [[w:dokładność i precyzja metody pomiaru|dokładność mało precyzyjnych]] [[w:pomiar|pomiarów]] [[w:olfaktometria|olfaktometrycznych]] można osiągnąć dzięki wielokrotnym powtórzeniom oznaczeń.]]
''Dokładność pomiaru'' stężenia zapachowego (''c''<sub>od</sub> [ou<sub>E</sub>/m³]) to stopień zgodności między uzyskanym wynikiem, a przyjętą wartością odniesienia, określoną na podstawie rzeczywistego [[w:stężenie (chemia)|stężenia]] ''n''-butanolu w próbce. W przypadku obliczeń dotyczących zbioru wyników badań bierze się pod uwagę wspólny błąd systematyczny (obciążenie){{r|ISO 5725-1|PN-EN 13725:2007}}.
''Badania powtarzalności'' są wykonywane w ustalonych warunkach: ta sama metoda, identyczny materiał doświadczalny, to samo laboratorium, ten sam operator, to samo wyposażenie. Analizowany jest zbiór niezależnych wyników uzyskanych w krótkich odstępach czasu. ''Granicę powtarzalności'' zdefiniowano zakładając, że jest akceptowane prawdopodobieństwo 0,05 wystąpienia różnicy między dwoma wynikami pomiarów. Granicą powtarzalności jest minimalna wartość różnicy, która spełnia ten warunek (definicja zgodna z ISO 5725{{r|ISO 5725-1}}).
''Badania odtwarzalności'' wykonuje się stosując jednakowe metody i materiały doświadczalne, ale w różnych laboratoriach, z użyciem różnego wyposażenia i przez różnych operatorów. ''Granicę odtwarzalności'' zdefiniowano analogicznie jak granicę powtarzalności{{r|ISO 5725-1}}.
Powtarzalność i odtwarzalność pomiarów olfaktometrycznych jest zależna od:
* jakości wyposażenia laboratorium, w tym od sprawności sprzętu rozcieńczającego (precyzja i powtarzalność rozcieńczeń)
* sensorycznej sprawności członków zespołu oceniającego zapach (zespół jako czujnik)
* zgodności stosowanych w laboratorium procedur z wymaganiami normy (np. przestrzeganie kodeksu postępowania osób oceniających, sposoby pobierania, przechowywania i transportu próbek, harmonogram i warunki pomiarów)
== Badania jakości laboratorium ==
W normie PN-EN 13725 określono wymagania dotyczące warunków i sposobów prowadzenia pomiarów olfaktometrycznych. Najdokładniej opisano sposoby kontrolowania:
* jakości urządzeń stosowanych do mieszania strumieni badanego gazu i czystego powietrza (np. sprawność olfaktometrów)
* węchowej wrażliwości osób oceniających zapach rozcieńczonych próbek (sprawność sensoryczna członków zespołu)
* ogólnej dokładności pomiarów, zależnej czynników wyżej wymienionych i innych
W wielu sytuacjach dokładność pomiarów jest ściśle związana z jakością stosowanego sprzętu i prawidłowością procedury pobierania próbek (np. jakość sond i pojemników na próbki{{r|Sampling bags}}). Przyczyną dużych błędów mogą być procesy zachodzące w czasie pobierania próbek gorących i wilgotnych. W tych przypadkach badany gaz jest wstępnie rozcieńczany (dynamicznie lub statycznie) przed wprowadzeniem do worków na próbki, co stanowi pierwszy etap analizy olfaktometrycznej.
=== Jakość olfaktometru i innych urządzeń rozcieńczających ===
Kalibrację olfaktometru i innych urządzeń rozcieńczających wykonuje się co najmniej raz w roku (częściej, jeżeli taka potrzeba wynika z historii kalibracji przechowywanej w archiwum). Dla danej serii rozcieńczeń określa się parametry dokładności i niestabilności, które są porównywane z wymaganiami PN-EN 13725.
W czasie kalibracji są stosowane:
* gazy wskaźnikowe zapewniające stabilność stosowanej metody analitycznej (rozszerzona niepewność ±3% lub mniejsza dla około 15% i 90% zakresu pomiarowego); np. tlenek węgla (analiza NDIR) lub – w przypadku kalibracji aparatów bez regulatorów strumienia masy – propan (GC FID) lub SF6 (ECD lub IR).
* odpowiednie przyrządy kontrolne o udokumentowanej dokładności, wyższej o rząd wielkości niż wymagany poziom dokładności kalibrowanego urządzenia
Oznaczenia wykonuje się co najmniej 10-krotnie dla co najmniej pięciu ustawień jednej serii rozcieńczeń.
Określana jest dokładność rozcieńczenia, wyrażana przez:
* poprawność – obciążenie wewnątrzlaboratoryjne (<big><math>\delta_{w,d}</math></big>; dolny indeks <math>d</math> – od ang. ''dilution''; rozcieńczenie), obliczane zwykle z użyciem wartości odniesienia dla ustawienia rozcieńczenia (<big><math>\mu_d</math></big>), określanej zwykle na podstawie poprzedniej kalibracji
* precyzję – granicę powtarzalności rozcieńczenia (<big><math>r_d</math></big>), parametr charakteryzujący różnice między średnim stężeniem wyznaczanym po kolejnych ustawieniach tego samego rozcieńczenia
* niestabilność (<big><math>I_d</math></big>) – parametr charakteryzujący zmiany stężenia w czasie jednej prezentacji, obliczany na podstawie wyników co najmniej 10 kolejnych obserwacji; wynik analizy dotyczącej jednego ustawienia (<big><math>y_{i,d}</math></big>) powinien składać się z co najmniej 10 „obserwacji” (<big><math>o_j</math></big>), wykonywanych co nie więcej niż 10 s (podstawa obliczeń [[w:odchylenie standardowe|odchylenia standardowego]] niestabilności, <big><math>s_{I,d}</math></big>)
W czasie badań dokładności rozcieńczania (poprawności i precyzji) dla każdego z wybranych ustawień oblicza wartości średnie <big><math>\overline{y}_{w,d}</math></big> oraz 95% przedział ufności dla dokładności tych rozcieńczeń:
: <math> d_{w,d} - A_{w,d} \cdot r_d \leqslant \delta_{w,d} \leqslant d_{w,d} + A_{w,d} \cdot r_d </math>
gdzie:
* oszacowanie obciążenia ustawienia rozcieńczenia: <math>d_{w,d} = \overline{y}_{w,d} - \mu_d </math>
* współczynnik statystyczny <math>A_{w,d} = \sqrt{1 \over 2n}</math>
* granica powtarzalności (<math>r_d</math>), obliczona na podstawie odchylenia standardowego (<math>s_{r,d}</math>) w zbiorze wyników uzyskanych po kolejnych ustawieniach jednego rozcieńczenia: <math>r_d = t \cdot \sqrt 2 \cdot s_{r,d}</math>
<br /><br />
'''<span style="color:SteelBlue">Ustalono, że dokładność (<math>A_d</math>) serii rozcieńczeń powinna spełniać warunek</small>:'''
: <math> A_d = \frac {(|d_{w,d}| + A_{w,d} \cdot r_d)}{\mu_d} \leqslant 0{,}20 </math></span>'''
'''<span style="color:SteelBlue">Dla niestabilności rozcieńczenia (''I''<sub>d</sub>) ustalono kryterium:</span>'''
: <math> I_d = \left( \frac {1,96 \cdot s_{I,d}}{y_{i,d}} \right) \cdot 100\% \leqslant 5\% </math>
<br />
=== Sprawność sensoryczna zespołu ===
[[Plik:Select of panel.svg|thumb|250px|Wyniki badań węchowej wrażliwości kandydata do [[w:Olfaktometria#Zespół|zespołu]] (przykład)]]
Zgodnie z PN-EN 13725 węch członków [[w:Olfaktometria#Zespół|zespołu]], pełniącego funkcję czujnika pomiarowego, jest oceniany z wykorzystaniem ''n''-butanolu. Określana jest wysokość indywidualnego progu wyczuwalności zapachu tego związku (''ITE''<sub>''n''-butanol</sub>; ang. ''Individual Threshold Estimate'') i zmienność progu.
'''<span style="color:SteelBlue">Muszą spełniać następujące kryteria:</small>'''
# antylogarytm z odchylenia standardowego ''s''<sub>ITE</sub>, obliczonego z log ''ITE'', <br />jest mniejszy niż 2,3 (''ITE'' wyraża się w jednostkach [[w:stężenie masowe|stężenia masowego]]),
# średnia geometryczna dla wartości ''ITE''<sub>n-butanol</sub> mieści się <br />między 0,5-krotną a 2-krotną wartością odniesienia (62 µg/m³ do 246 µg/m³, czyli 20–80 [[w:ppb|ppb]])
Zgodność z kryteriami jest systematycznie sprawdzana, a wyniki wszystkich oznaczeń ''ITE''<sub>''n''-butanol</sub> są archiwizowane. W olfaktometrycznych badaniach próbek środowiskowych lub przemysłowych mogą uczestniczyć tylko te osoby, które w czasie ostatnich 10–20 pomiarów ''ITE''<sub>''n''-butanol</sub> spełniały kryteria selekcji.
=== Wewnątrzlaboratoryjne badania eksploatacyjne ===
Wewnątrzlaboratoryjne badania dokładności są wykonywane przede wszystkim z użyciem [[w:certyfikat|certyfikowanego]] odorantu odniesienia ([[w:alkohol butylowy|''n''-butanol]]), dla którego jest znana [[w:wartość oczekiwana|wartość oczekiwana]] (<big><math>\mu</math></big>), zastępująca „wartość rzeczywistą” stężenia zapachowego.
Określana jest dokładność, wyrażana przez:
* poprawność – obciążenie wewnątrzlaboratoryjne (<big><math>\delta_w</math></big>)
* precyzję – granica powtarzalności (<big><math>r</math></big>)
W czasie wewnętrznej kontroli jakości pomiarów wykonuje się co najmniej <big><math>n = 10</math></big> pomiarów stężenia zapachowego w próbce i oblicza wartość średnią <big><math>\overline{y}_{w}</math></big> oraz 95% przedział ufności dla obciążenia wewnątrzlaboratoryjnego:
: <math>d_w - A_w \cdot r \leqslant \delta_w \leqslant d_w + A_w \cdot r</math>
gdzie:
* oszacowanie obciążenia wewnątrzlaboratoryjnego: <math>d_w = \overline{y}_{w} - \mu</math>
* współczynnik statystyczny <math>A_{w} = \sqrt{1 \over 2n}</math>
* granica powtarzalności (<big><math>r</math></big>), obliczona na podstawie odchylenia standardowego (<big><math>s_r</math></big>): <math>r = t \cdot \sqrt 2 \cdot s_r</math>
<br /><br />
'''<span style="color:SteelBlue">Kryteria dokładności i powtarzalności określono stosując zmienną pomiarową <math>A_{od}</math>:</big>'''
: <math>A_{od} = |d_w| + (A_w \cdot r) \leqslant 0{,}217</math>
'''<span style="color:SteelBlue">Dodatkowo określono kryterium precyzji (granica powtarzalności) jako:</span>'''
: <math>r \leqslant 0{,}477</math> lub <math>10^r \leqslant 3{,}0</math>
<br />
Wewnątrzlaboratoryjne badania jakości pomiarów stężenia zapachowego w próbkach zawierających inne odoranty ograniczają się do określania precyzji. Ustalenie poprawności (obciążenia) nie jest możliwe, ponieważ nie jest dostępna wartość oczekiwana. Przyjmuje się, że poprawność jest taka sama jak w czasie oznaczeń z użyciem ''n''-butanolu.
=== Badania międzylaboratoryjne ===
Zaleca się, aby oznaczenia dokładności laboratorium były organizowane przez niezależne certyfikowane jednostki, zajmujące się przygotowaniem i dystrybucją próbek, równocześnie analizowanych w różnych laboratoriach („test okrężny”, ''ring-test''{{r|Ring test|Ringversuch}}). Badania umożliwiają ustalenie dokładności oznaczeń stężenia zapachowego w próbkach zawierających n-butanol, inne czyste związki chemiczne lub mieszaniny odorantów (np. w próbkach środowiskowych). W przypadku stosowania odorantów innych niż n-butanol za wartość oczekiwaną uznaje się średnią z wyników uzyskiwanych w różnych laboratoriach.
Międzylaboratoryjne badania zgodności wyników pomiarów olfaktometrycznych były prowadzone w Holandii i w Niemczech od lat 80. XX w. Od roku 2003 koordynuje je prywatna firma OLFAtec GmbH (Niemcy), która uzyskała akredytację zgodnie z EN ISO/IEC 17020:2004{{r|Proficiency art2009|proficiency-testing}}.
== Wyniki ICO 2000, 2003, 2005, 2007, 2011 ==
Międzylaboratoryjne badania olfaktometryczne były prowadzone na dużą skalę już w latach 80. XX w., głównie w Niemczech i Holandii. Ich wyniki zostały wykorzystane w ramach prac Grupy Roboczej WG2 Odours w Europejskim Komitecie Normalizacyjnym, kierowanej przez A.P. van Harrevelda, w czasie opracowywania projektu normy{{r|Harreveld 1993|Heeres Harssema 1993|ICO 2000}}.
W badaniach wykonanych na podstawie projektu z roku 2000 uczestniczyło 31 laboratoriów z czterech krajów Europy Środkowej. Wykonywano testy z użyciem trzech czystych związków chemicznych (''n''-butanol, [[w:siarkowodór|H<sub>2</sub>S]], [[w:tetrahydrotiofen|THT]]) oraz naturalnej mieszaniny odorantów (zapach kawy). Stwierdzono, że laboratoria pracujące zgodnie z nowym standardem uzyskują większą niż inne powtarzalność i odtwarzalność{{r|ICO 2000}}.
W roku ustanowienia EN 13725:2003 w ICO uczestniczyło 51 laboratoriów z 12 krajów, a w roku 2005 – 47 laboratoriów z 15 krajów. {{r|ICO 2005}}. W zakres testu ''RV Standard'' (test zgodności wyników, skrót ''RV'' od niem. ''Ringversuch'') wchodziło oznaczenie stężenia zapachowego w 4 próbkach, dostarczonych przez ''OLFAtec GmbH'', zawierających ''n''-butanol (dwa różne stężenia) oraz [[w:Tetrahydrotiofen|THT]] i ''SFREE'' (bezsiarkowy [[w:nawaniacz|nawaniacz]] gazu ziemnego, stosowany zamiast THT){{r|SFREE}}. Porównując liczbę poprawnych wyników uzyskanych w poszczególnych laboratoriach, stwierdzono duży postęp w czasie dwóch lat. W roku 2003 cztery poprawne wyniki uzyskano w 8 (ok. 16%), a w roku 2005 w 18 laboratoriach (ok. 38%).
Trudniejsze okazało się uzyskanie potwierdzenia wymaganej powtarzalności i poprawności oznaczeń stężenia ''n''-butanolu. W roku 2005 do testu ''RV PLUS'' (10 próbek o różnym stężeniu ''n''-butanolu w azocie) przystąpiło 10 laboratoriów. Tylko dwa z nich uzyskały potwierdzenie zgodności z kryterium powtarzalności (''r'') i poprawności (''A''), a trzy dodatkowe spełniały jedno z kryteriów (''r'' lub ''A''){{r|ICO 2005}}.
W 2007 roku w badaniu biegłości z użyciem ''n''-butanolu uczestniczyło 29 laboratoriów. Wszystkie kryteria statystyczne EN 13725 spełniło 12 z nich. Wśród laboratoriów, które nie uzyskały wymaganej dokładności znalazły się jednostki akredytowane zgodnie z ISO 17025, co potwierdza potrzebę stosowania ICO{{r|Proficiency art2009}}.
W 2011 w analogicznych badaniach wzięło udział 35 zespołów olfaktometrycznych z 14 krajów (Niemcy, Dania, Wielka Brytania, Belgia, Francja, Włochy, Holandia, Hiszpania, Austria, Kanada, Chile, Estonia, Szwajcaria i – po raz pierwszy – Polska). Oba kryteria spełniło 19 laboratoriów. Laboratorium z Polski znalazło się wśród siedmiu, które spełniły tylko jedno z nich. Żadnego kryterium nie spełniło 9 zespołów{{r|ICO2011}}.
== Uwagi ==
# Skrót ''EROM'' oznacza ''European Reference Odour Mass'': <small>'''1 EROM ≡ 123 μg ''n''-butanolu ≡ 1 ou<sub>E</sub> mieszaniny odorantów'''</small><br />Zgodnie z PN-EN 13725 „czujnikiem” olfaktometru jest [[Uciążliwość_zapachowa/Olfaktometria_inżynierska/Olfaktometria_dynamiczna#Zespół|zespół]] oceniających, których indywidualny próg wyczuwalności mieści się w zakresie 62–246 μg ''n''-butanolu/m³.
# W PN-EN 13725 jakości laboratoriów olfaktometrycznych dotyczy rozdz. 5. „Eksploatacyjne wymagania dotyczące jakości” (s. 19) oraz załączniki informacyjne: Załącznik C – Przykład obliczeń dokładności i niestabilności przyrządu (s. 54); Załącznik D – Przykład obliczeń pomiarów odorymetrycznych w jednym laboratorium (s. 57).
== Zobacz też – zestawienie najważniejszych pojęć ==
* [[Uciążliwość zapachowa/Olfaktometria inżynierska/Zestawienie najważniejszych pojęć|Zestawienie najważniejszych pojęć]]
== Czy znasz odpowiedzi? ==
* Czy dokładność uzyskiwanego w olfaktometrze rozcieńczenia Z = 60 jest zgodna z wymaganiami normy PN-EN 13725, jeżeli przed rozcieńczeniem stężenie związku wzorcowego wynosiło 1200 ppm, a po 15 ustawieniach tego rozcieńczenia uzyskano zestawione poniżej wyniki oznaczeń stężenia wzorca w strumieniu wypływającym z aparatu?
{| class="wikitable"
| align="center" style="background:#f0f0f0;"|'''Lp'''
| align="center" style="background:#f0f0f0;"|'''1'''
| align="center" style="background:#f0f0f0;"|'''2'''
| align="center" style="background:#f0f0f0;"|'''3'''
| align="center" style="background:#f0f0f0;"|'''4'''
| align="center" style="background:#f0f0f0;"|'''5'''
| align="center" style="background:#f0f0f0;"|'''6'''
| align="center" style="background:#f0f0f0;"|'''7'''
| align="center" style="background:#f0f0f0;"|'''8'''
| align="center" style="background:#f0f0f0;"|'''9'''
| align="center" style="background:#f0f0f0;"|'''10'''
| align="center" style="background:#f0f0f0;"|'''11'''
| align="center" style="background:#f0f0f0;"|'''12'''
| align="center" style="background:#f0f0f0;"|'''13'''
| align="center" style="background:#f0f0f0;"|'''14'''
| align="center" style="background:#f0f0f0;"|'''15'''
|-
| Stężenie, ppm||21,16||19,61||21,03||23,10||20,54||20,78||20,84||23,13||22,07||23,50||19,22||21,96||23,25||21,49||22,13
|}
<noinclude>{| class="collapsible collapsed"
! <small><small>Obliczenia i odpowiedź</small></small>
|-
|
::;''Wyniki obliczeń dokładności rozcieńczenia'':
{| class="wikitable"
| align="left" style="background:#f0f0f0;"|'''średnia z wyników pomiarów, y<sub>śr.,w,d</sub>'''
| align="center" style="background:#f0f0f0;"|'''21,586'''
|-
| wartość oczekiwana μ<sub>d</sub> = 1200 ppm / Z = 60||'''20'''
|-
| poprawność, obciążenie, d<sub>w,d</sub> = y<sub>śr,w,d</sub> - μ<sub>d</sub>||1,586
|-
| współczynnik statystyczny A<sub>w,d</sub> = (1/2n)<sup>0,5</sup>||0,183
|-
| odchylenie standardowe, s<sub>r,d</sub>||1,268
|-
| t-Studenta (95%)||1,753
|-
| granica powtarzalności r<sub>d</sub> = t * 2<sup>0,5</sup> * s<sub>r,d</sub>||3,143
|-
| dokładność ustawienia, A<sub>w,d</sub> = (d<sub>w,d</sub> + A<sub>w,d</sub> * r<sub>d</sub>) / μ<sub>d</sub> ||'''0,11'''
|}
::;''Odpowiedź'':
::''Kryterium dokładności: '''A<sub>w,d</sub> ≤ 0,20''' jest spełnione. ''
|}
----
* Czy laboratorium spełnia ustalone w PN-EN 13725 kryteria dokładności i powtarzalności pomiarów, jeżeli uzyskano zestawione poniżej wyniki oznaczeń stężenia zapachowego w próbce powietrza, zawierającej 100 ppm n-butanolu (c<sub>th</sub> = 40 ppb)?
{| class="wikitable"
| align="center" style="background:#f0f0f0;"|'''Lp'''
| align="center" style="background:#f0f0f0;"|'''1'''
| align="center" style="background:#f0f0f0;"|'''2'''
| align="center" style="background:#f0f0f0;"|'''3'''
| align="center" style="background:#f0f0f0;"|'''4'''
| align="center" style="background:#f0f0f0;"|'''5'''
| align="center" style="background:#f0f0f0;"|'''6'''
| align="center" style="background:#f0f0f0;"|'''7'''
| align="center" style="background:#f0f0f0;"|'''8'''
| align="center" style="background:#f0f0f0;"|'''9'''
| align="center" style="background:#f0f0f0;"|'''10'''
| align="center" style="background:#f0f0f0;"|'''11'''
| align="center" style="background:#f0f0f0;"|'''12'''
| align="center" style="background:#f0f0f0;"|'''13'''
| align="center" style="background:#f0f0f0;"|'''14'''
| align="center" style="background:#f0f0f0;"|'''15'''
|-
| Stężenie ''c''<sub>od</sub> [ou<sub>E</sub>/m³]||2200||2448||4094||4233||4159||3862||2333||3315||3856||3316||3000||2327||4366||2968||3903
|}
<noinclude>{| class="collapsible collapsed"
! <small><small>Obliczenia i odpowiedź</small></small>
|-
|
::''Stężenie n-butanolu w badanej próbce wynosiło:''
:::: c<sub>od</sub> = c / c<sub>th</sub> = 100 ppm / 0,040 = 2500 ou<sub>E</sub>/m³.
::''Aby ocenić sprawność laboratorium olfaktometrycznego – sprzęt, zespół i procedury – obliczamy:
::– ''geometryczną średnią z wyników pomiarów c<sub>od</sub>,''
::– ''logarytmy z wyników pomiarów i odchylenie standardowe z tych wartości,''
::– ''wartości A<sub>od</sub> i ''r'', które powinny spełniać ustalone kryteria.''
{| class="wikitable"
| align="center" style="background:#f0f0f0;"|'''Lp'''
| align="center" style="background:#f0f0f0;"|'''1'''
| align="center" style="background:#f0f0f0;"|'''2'''
| align="center" style="background:#f0f0f0;"|'''3'''
| align="center" style="background:#f0f0f0;"|'''4'''
| align="center" style="background:#f0f0f0;"|'''5'''
| align="center" style="background:#f0f0f0;"|'''6'''
| align="center" style="background:#f0f0f0;"|'''7'''
| align="center" style="background:#f0f0f0;"|'''8'''
| align="center" style="background:#f0f0f0;"|'''9'''
| align="center" style="background:#f0f0f0;"|'''10'''
| align="center" style="background:#f0f0f0;"|'''11'''
| align="center" style="background:#f0f0f0;"|'''12'''
| align="center" style="background:#f0f0f0;"|'''13'''
| align="center" style="background:#f0f0f0;"|'''14'''
| align="center" style="background:#f0f0f0;"|'''15'''
| align="center" style="background:#f0f0f0;"|
|-
| stężenie ''c''<sub>od</sub> [ou<sub>E</sub>/m³] ||2200||2448||4094||4233||4159||3862||2333||3315||3856||3316||3000||2327||4366||2968||3903||'''śr. geom.'''<br/>'''3270'''
|-
| stężenie ''c'' [ppm]||88||98||164||169||166||154||93||133||154||133||120||93||175||119||156|| *
|-
| logarytm ''c''<sub>od</sub>||2,1206||2,1670||2,3903||2,4048||2,3971||2,3650||2,1461||2,2986||2,3643||2,2987||2,2553||2,1449||2,4183||2,2507||2,3696||'''''s''<sub>r</sub> '''<br/>'''0,1023'''
|}
{{Wikisource|tekst=nie|Tablica rozkładu t-Studenta|tablicę rozkładu Studenta }}
::''Laboratorium spełnia oba kryteria dokładności, ponieważ:''
:::– ''granica powtarzalności: ''
:::: ''r = t * 2<sup>0,5</sup> * s<sub>r</sub> = 1,75305 * 2<sup>0,5</sup> * 0,1023 = '''0,2537 < 0,477'''
:::– ''kryterium dokładności i powtarzalności: ''
:::: ''A<sub>od</sub> = |d<sub>w</sub>| + A<sub>w</sub> * r = (log 3270 - log 2500) + (1/30)<sup>0,5</sup> * 0,2537 = '''0,16296 < 0,217'''''
|}
<noinclude>
== Przypisy ==
{{Przypisy-lista|liczba kolumn=2|1=
* <ref name="PN-EN 13725:2007">{{cytuj książkę|autor=Polski Komitet Normalizacyjny, NKP 280 |tytuł=Jakość powietrza. Oznaczanie stężenia zapachowego metodą olfaktometrii dynamicznej (ang. Air quality – Determination of odour concentration by dynamic olfactometry; fr. Qualité de l’air – Détermination de la concentration d’une odeur par olfactométrie dynamique; niem. Luftbeschaffenheit – Bestimmung der Geruchsstoffkonzentration mit dynamischer Olfaktometrie)|wydawca=PKN Warszawa |rok=2007 |język=pl |url=http://sklep.pkn.pl/pn-en-13725-2007p.html|data dostępu=2011-07-05}}</ref>
* <ref name="CEN-CENELEC">{{cytuj stronę|url=http://archive.is/ZV5OK |tytuł=Objective assessment of odours |nazwisko=van Harreveld |imię=Ton |opublikowany=CEN-CENELEC Management Centre |język=en |data dostępu=2011-06-29}}</ref>
* <ref name="Harreveld 2004">{{cytuj pismo|nazwisko=Van Harreveld |imię=A.P. |tytuł=Odour management tools-filling the gaps |czasopismo=Water Sci. Technol. |pmid=15484736) |rok=2004 |wolumin=50 |wydanie=4 |strony=1–8 |język=en}}</ref>
* <ref name="Normalizacja 2005">{{cytuj pismo|nazwisko=Kośmider |imię=J. |nazwisko2=Krajewska |imię2=B. |tytuł=Normalizacja olfaktometrii dynamicznej. Podstawowe pojęcia i jednostki miar |czasopismo=Normalizacja |oznaczenie=nr 1 |strony=15–22 |rok=2005 |język=pl}}</ref>
* <ref name="Wod-Kanal 2008">{{cytuj pismo|nazwisko=Kośmider |imię=J. |tytuł=Pomiary stężeń zapachowych metodą olfaktometrii dynamicznej (PN-EN 13725:2007) |czasopismo=Wodociągi – Kanalizacja |url=http://www.zut.edu.pl/fileadmin/pliki/odory/pdf/WOD_KANAL_2006_Pom_st_zap.pdf |oznaczenie=nr 10 |strony=34–35 |rok=2007 |język=pl}}</ref>
* <ref name="Sampling bags">{{cytuj pismo|nazwisko=van Harreveld |imię=A.P. |tytuł=Odor concentration decay and stability in gas sampling bags |czasopismo=J. Air Waste Manag. Assoc. |pmid=12568253 |wydanie=1 |wolumin=53 |strony=51–60 |język=en |data=styczeń 2003}}</ref>
* <ref name="the validation of the draft EN">{{cytuj pismo|nazwisko=van Harreveld |imię=A.P |nazwisko2=Heeres |imię2=P. |tytuł=The validation of the draft European CEN standard for dynamic olfactometry by an interlaboratory comparison on n-butanol |czasopismo=Gefahrstoffe Reinhaltung der Luft |wydawca=Springer |miejsce=Düsseldorf |wydanie=10 |wolumin=57 |strony=393–398 |issn=0949-8036 |język=en |rok=1997 |url=http://cat.inist.fr/?aModele=afficheN&cpsidt=2862787}}</ref>
* <ref name="Ring test">{{cytuj stronę|url=http://www.proz.com/kudoz/english_to_polish/mathematics_statistics/3522571-ring_test.html#7973560 |tytuł=Tłumaczenie zwrotu „ring test” |praca= English_to_polish/mathematics_statistics | opublikowany=www.proz.com |język=pl |data dostępu=2011-06-29}}</ref>
* <ref name="Ringversuch">{{cytuj stronę|url=http://www.olfatec.de/web2/de/hauptbereich/ringversuche/en-137252003/ |tytuł=Ringversuch/Eignungsprüfung nach DIN EN 13725:2003 |data dostępu=2010-10-16 |autor=OLFAtec GmbH – ein Unternehmen der Odournet Holding b.v. |język=de}}</ref>
* <ref name="ICO 2000">{{cytuj pismo|nazwisko=Mannebeck |imię=D. |nazwisko2=Mannebeck |imię2=H. |tytuł=Interlaboratory comparison of dynamic olfactometry in Central Europe 2000 |czasopismo= Water Sci Technol. |pmid=117624 |wydanie=9 |wolumin=44 |rok=2001}}</ref>
* <ref name="ICO 2005">{{cytuj pismo|nazwisko=Maxeiner |imię=Bjoern |tytuł=Olfactometric Interlaboratory Comparison Test 2005 |czasopismo=WEF/AWWA Odors and Air Emissions |odpowiedzialność=OLFATec GmbH |język=en |rok=2006 |url=http://www.olfatec.de/ger/download/olfactometric_interlab_test_2005.pdf}}</ref>
* <ref name="Proficiency art2009">{{cytuj pismo|nazwisko=van Harreveld |imię=A.P. |nazwisko2=Mannebeck |imię2=D. |nazwisko3=Maxeiner |imię3=B. |tytuł=Proficiency testing as the key element in implementing EN13275 olfactometry |czasopismo=Water Sci. Technol. |wydanie=8 |wolumin=59 |strony=1649–1655 |język=en |rok=2009 |pmid=19403979 |url = http://www.researchgate.net/publication/24378823_Proficiency_testing_as_the_key_element_in_implementing_EN13275_olfactometry}}</ref>
* <ref name="proficiency-testing">{{cytuj stronę|url=http://www.odournet.com/qaqc-services/proficiency-testing/en-13725/ |tytuł= en 13725 - proficiency testing|praca=accredited calibration & proficiency testing|opublikowany=OLFAtec |język=en |data dostępu=2011-06-29}}</ref>
* <ref name="Anal bledow">{{cytuj stronę|url=http://www.eti.pg.gda.pl/katedry/kose/dydaktyka/Metrologia/analiza_bledow.pdf |tytuł=Analiza błędów i niepewności pomiarów |praca=Materiały dydaktyczne PG. Metrologia |opublikowany=www.eti.pg.gda.pl |język=pl |data dostępu=2011-07-02}}</ref>
* <ref name="ISO 5725-1">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=1 |tytuł części=Ogólne zasady i definicje |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/index.php?a=show&m=product&pid=460571&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5725-2">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=2 |tytuł części=Podstawowa metoda określania powtarzalności i odtwarzalności standardowej metody pomiarowej |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/index.php?a=show&m=product&pid=460572&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5725-3">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=3 |tytuł części=Pośrednie miary precyzji standardowej metody pomiarowej |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=460573&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5725-4">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=4 |tytuł części=Podstawowe metody wyznaczania poprawności standardowej metody pomiarowej |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/index.php?a=show&m=product&pid=460574&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ENV 13005">{{cytuj stronę|url=http://www.bipm.org/utils/common/documents/jcgm/JCGM_100_2008_E.pdf |tytuł=Guide to the expression of uncertainty in measurement |rok=1993 |praca=International Organization for Standardization, Genewa, ISO |opublikowany=www.bipm.org |język=en |data dostępu=2011-07-02}}</ref>
* <ref name="ISO 9169">{{cytuj książkę|tytuł=Jakość powietrza – Definicje i wyznaczanie charakterystyk działania automatycznego systemu pomiarowego |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=568418&page=329 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5492">{{cytuj książkę|tytuł=Analiza sensoryczna – Terminologia |język=pl | wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=564387 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 6879">{{cytuj książkę|tytuł=Jakość powietrza – Charakterystyki sprawności metod pomiaru jakości powietrza i pojęcia pokrewne dotyczące tych metod |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=479079&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="PN-ISO 4225">{{cytuj książkę|tytuł=Jakość powietrza - Zagadnienia ogólne - Terminologia|język=pl |wydawca=Polski Komitet Normalizacyjny |url=http://sklep.pkn.pl/pn-iso-4225-1999p.html |data dostępu=2011-07-05}}</ref>
* <ref name="PN-EN ISO/IEC 17000">{{cytuj książkę|tytuł=Ocena zgodności – Terminologia i zasady ogólne |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=487514 |data dostępu=2011-07-05}}</ref>
* <ref name="Harreveld 1993">{{cytuj książkę|tytuł=Materiały Międzynarodowego Seminarium ODOURS – Control, Regulations, Measurements ODOURS’1993 |wydawca=Ekochem |miejsce=Szczecin |rok=1993 |strony=140–156 |rozdział=European standardisation of olfactometry |imię r=A.P. |nazwisko r=van Harreveld |url=http://www.odory-szczecin.ps.pl/index.php?page=a-p-van-harreveld---european-standardisation-of-olfactometry}}</ref>
* <ref name="Heeres Harssema 1993">{{cytuj książkę|tytuł=Materiały Międzynarodowego Seminarium ODOURS – Control, Regulations, Measurements ODOURS’1993 |wydawca=Ekochem |miejsce=Szczecin |rok=1993 |strony=121–129 |rozdział=An interlaboratory study on the odor measurements of n-butanol |imię r=P. |nazwisko r=Heeres |imię2 r=H. |nazwisko2 r=Harssema |url=http://www.odory-szczecin.ps.pl/index.php?page=p-heeres-h-haressema---an-interlaboratory-study-n-butanol}}</ref>
* <ref name="SFREE">{{cytuj stronę|url=http://www.chem-met.com.pl/gasodor.html|tytuł=Gasodor S-FREE – bezsiarkowy nawaniacz do gazu ziemnego |opublikowany=www.chem-met.com.pl |język=pl |data dostępu=2011-07-02}}</ref>
* <ref name="ICO2011">Wyniki ''Interlaboratory Comparison Olfactometry'' 2011, {{cytuj stronę|url=http://www.zut.edu.pl/index.php?id=5763&tx_ttnews|tytuł=ODORY, OLFAKTOMETRIA ... Aktualności |opublikowany= www.zut.edu.pl|język=pl |data dostępu=2011-09-22}}</ref>
}}
== Linki zewnętrzne ==
* Bjoern Maxeiner: [http://www.researchgate.net/publication/233667735_Olfactometric_Interlaboratory_Comparison_Test_2005 Olfactometric Interlaboratory Comparison Test 2005], Proceedings of the Water Environment Federation 12/2005; DOI: 10.2175/193864706783791452
* [http://www.odournet.com/qaqc-services/proficiency-testing?gclid=CjwKEAjwxtKeBRDMzoeQmYn5uHcSJACGCF3D74tsbp1I7SvbVTYvF_rMQ1_sGG9fK1KK7aWqMRpTTxoCN5jw_wcB accredited calibration & proficiency testing] na: www.odournet.com
</noinclude>
<noinclude>
<center>'''[[Uciążliwość zapachowa|Powrót do spisu treści]]'''</center>{{UnikatowaStronaKoniec}}</noinclude>
0eudodwowvnb1est9l25k57e9zst9od
438577
438576
2022-08-23T12:21:48Z
Persino
2851
wikitext
text/x-wiki
<noinclude>
{{OzdobnaNawigacja
|Podrecznik= [[Uciążliwość zapachowa]]
|PoprzStrona=[[Uciążliwość zapachowa/Instrumentalne pomiary zapachu|Instrumentalne pomiary zapachu]]
|ObecnaStrona= Olfaktometria inżynierska
|NastStrona= [[Uciążliwość zapachowa/Modelowanie dyspersji odorantów|Modelowanie dyspersji odorantów]]
}}
{{OzdobnaNawigacja
|Podrecznik=***
|PoprzStrona=<small>[[Uciążliwość zapachowa/Olfaktometria inżynierska/Olfaktometria statyczna|Olfaktometria statyczna]]</small>
|ObecnaStrona=<small>Dokładność olfaktometrii dynamicznej</small>
|NastStrona= <small>[[Uciążliwość zapachowa/Olfaktometria inżynierska/Dokładność olfaktometrii statycznej|Dokładność olfaktometrii statycznej]]</small>
}}
{{UnikatowaStronaStart}}
</noinclude>
== Dokładność olfaktometrii dynamicznej ==
[[w:dokładność i precyzja metody pomiaru|Precyzja i poprawność]] pomiarów [[w:stężenie zapachowe|stężenia zapachowego]] jest kontrolowana w ramach regularnych ocen wewnątrzlaboratoryjnych i okresowych testów międzylaboratoryjnych{{r|PN-EN 13725:2007}}.
W Europie olfaktometryczne pomiary stężenia [[w:odorant|odorantów]] w próbkach gazów [[w:emisja zanieczyszczeń|emitowanych]] do atmosfery są wykonywane metodą [[w:Olfaktometria#Olfaktometria dynamiczna (PN-EN 13725)|olfaktometrii dynamicznej]], zgodnie z [[w:Polska Norma|normą PN-EN]] 13725{{r|PN-EN 13725:2007}} (dosłowne tłumaczenie EN 13725:2003{{r|CEN-CENELEC}}). Parametry poprawności i precyzji wyznacza się z użyciem [[w:materiał odniesienia|materiału odniesienia]] ([[w:alkohol butylowy|''n''-butanolu]]), dla którego ustalono „przyjętą wartość odniesienia” (''EROM'', zob. [[Uciążliwość_zapachowa/Olfaktometria_inżynierska/Dokładność_olfaktometrii_dynamicznej#Uwagi|uwaga 1]]).
Wyznaczone parametry porównuje się ze wskazanymi w normie kryteriami jakości, które zostały [[w:walidacja (technika)|zwalidowane]] podczas ''Międzylaboratoryjnego Porównania Olfaktometrycznego'' (ang.''Interlaboratory Comparison for Olfactometry, ICO'' w roku 1996{{r|PN-EN 13725:2007|the validation of the draft EN}}.
O wykonaniu pomiarów w laboratorium zgodnie z PN-EN 13725 można mówić, jeżeli spełnienie jej wymagań potwierdzono w czasie opisanych w normie prób eksploatacyjnych. Próby powinny być wykonywane jako „badania biegłości” (ang. ''proficiency testing'') – międzylaboratoryjne badania porównawcze, koordynowane przez [[w:certyfikat|certyfikowaną]] jednostkę zewnętrzną (zob. [[Uciążliwość_zapachowa/Olfaktometria_inżynierska/Dokładność_olfaktometrii_dynamicznej#Uwagi|uwaga 2]]){{r|PN-EN 13725:2007|PN-ISO 4225|PN-EN ISO/IEC 17000}}
== Podstawy olfaktometrii ==
[[Plik:Stanowiska TO7.JPG|thumb|150px|Stanowisko członka [[w:Olfaktometria#Zespół|zespołu]] przy olfaktometrze]]
Olfaktometryczne pomiary stężenia zapachowego są jedną z metod [[w:analiza sensoryczna|analizy sensorycznej]]{{r|ISO 5492}}. Są wykonywane zgodnie normą europejską, wydaną przez [[w:Europejski Komitet Normalizacyjny|Europejski Komitet Normalizacyjny]] (ang. ''European Committee for Standardization'') w roku 2003, a w roku 2005 uznaną przez [[w:Polski Komitet Normalizacyjny|PKN]] za [[w:Polska Norma|PN-EN (U)]]. Dwa lata później została wydana wersja polskojęzyczna: PN-EN 13725:2007 „Jakość powietrza – Oznaczanie stężenia zapachowego metodą olfaktometrii dynamicznej”{{r|PN-EN 13725:2007|Normalizacja 2005|Wod-Kanal 2008}}.
W czasie pomiarów strumień próbki badanego gazu jest rozcieńczany strumieniem czystego powietrza z użyciem olfaktometru dynamicznego. Określa się wartość stopnia rozcieńczenia, po którym jest osiągany zespołowy [[w:próg węchowej wyczuwalności|próg wyczuwalności zapachu]]. Stężenie zapachowe (wynik pojedynczego pomiaru) jest [[w:średnia geometryczna|średnią geometryczną]] z co najmniej 8 lub 12 zgodnych wyników oznaczeń indywidualnych (co najmniej 4 osoby, co najmniej 2 lub 3 cykle prezentacji jednej serii rozcieńczeń, zależnie od regulaminu laboratorium){{r|PN-EN 13725:2007|Normalizacja 2005|Wod-Kanal 2008}}.
== Pojęcia dotyczące jakości pomiarów ==
Kontrolę jakości pomiarów olfaktometrycznych wykonuje się tak, jak w przypadku innych pomiarów{{r|Anal bledow|ENV 13005}}. Ogólne zasady postępowania i pojęcia zdefiniowano w [[w:normalizacja (statystyka)|normach]] międzynarodowych ([[w:Międzynarodowa Organizacja Normalizacyjna|ISO]]) i europejskich ([[w:Europejski Komitet Normalizacyjny|EN]]), np. PN-ISO 5725-1:2002{{r|ISO 5725-1}}, PN-ISO 5725-2:2002{{r|ISO 5725-2}}, PN-ISO 5725-3:2002{{r|ISO 5725-3}}, PN-ISO 5725-4:2002{{r|ISO 5725-4}}, PN-ISO 6879:2000{{r|ISO 6879}}, EN ISO/IEC 17000:2006{{r|PN-EN ISO/IEC 17000}}, PN-EN ISO 9169:2011{{r|ISO 9169}}, PN-ISO 4225:1999{{r|PN-ISO 4225}}.
W przypadku olfaktometrii normalizacja była zadaniem trudnym, ponieważ jedna „wartość rzeczywista” stężenia zapachowego zanieczyszczeń powietrza nie istnieje. Jest to związane z dużym zróżnicowaniem wrażliwości węchu w populacji ogólnej na zapach różnych związków chemicznych i ich [[w:mieszanina|mieszanin]]. Z tego powodu{{r|Harreveld 2004}}:
* za [[w:czujnik|czujnik pomiarowy]] uznano zespół reprezentatywny dla [[w:populacja standardowa|populacji standardowej]], grupę ludzi o podobnej wrażliwości węchu na zapach wskazanego certyfikowanego [[w:materiał odniesienia|materiału odniesienia]] (''CRM''{{r|ISO 5725-4}}, ''n''-butanol); kontrola tej wrażliwości odgrywa rolę [[w:Wzorcowanie|kalibracji przyrządu pomiarowego]] (zobacz też [[w:wymagania metrologiczne]]);
* za „wartość odniesienia”{{r|ISO 5725-1}} umożliwiającą [[w:Walidacja (technika)|walidację]] pomiarów, uznano próg wyczuwalności zapachu ''n''-butanolu (z uwzględnieniem naturalnej dla zmysłów [[w:niepewność rozszerzona pomiaru|niepewności pomiarów]]): 1 ou<sub>E</sub>/m³ ≡ 123 μg ''n''-butanolu/m³, gdzie symbol ou<sub>E</sub> oznacza specjalistyczną [[w:jednostka miary|jednostkę miary]] – [[w:europejska jednostka zapachowa|europejską jednostkę zapachową]].
[[Plik:High accuracy Low precision.svg|thumb|150px|Dużą [[w:dokładność i precyzja metody pomiaru|dokładność mało precyzyjnych]] [[w:pomiar|pomiarów]] [[w:olfaktometria|olfaktometrycznych]] można osiągnąć dzięki wielokrotnym powtórzeniom oznaczeń.]]
''Dokładność pomiaru'' stężenia zapachowego (''c''<sub>od</sub> [ou<sub>E</sub>/m³]) to stopień zgodności między uzyskanym wynikiem, a przyjętą wartością odniesienia, określoną na podstawie rzeczywistego [[w:stężenie (chemia)|stężenia]] ''n''-butanolu w próbce. W przypadku obliczeń dotyczących zbioru wyników badań bierze się pod uwagę wspólny błąd systematyczny (obciążenie){{r|ISO 5725-1|PN-EN 13725:2007}}.
''Badania powtarzalności'' są wykonywane w ustalonych warunkach: ta sama metoda, identyczny materiał doświadczalny, to samo laboratorium, ten sam operator, to samo wyposażenie. Analizowany jest zbiór niezależnych wyników uzyskanych w krótkich odstępach czasu. ''Granicę powtarzalności'' zdefiniowano zakładając, że jest akceptowane prawdopodobieństwo 0,05 wystąpienia różnicy między dwoma wynikami pomiarów. Granicą powtarzalności jest minimalna wartość różnicy, która spełnia ten warunek (definicja zgodna z ISO 5725{{r|ISO 5725-1}}).
''Badania odtwarzalności'' wykonuje się stosując jednakowe metody i materiały doświadczalne, ale w różnych laboratoriach, z użyciem różnego wyposażenia i przez różnych operatorów. ''Granicę odtwarzalności'' zdefiniowano analogicznie jak granicę powtarzalności{{r|ISO 5725-1}}.
Powtarzalność i odtwarzalność pomiarów olfaktometrycznych jest zależna od:
* jakości wyposażenia laboratorium, w tym od sprawności sprzętu rozcieńczającego (precyzja i powtarzalność rozcieńczeń)
* sensorycznej sprawności członków zespołu oceniającego zapach (zespół jako czujnik)
* zgodności stosowanych w laboratorium procedur z wymaganiami normy (np. przestrzeganie kodeksu postępowania osób oceniających, sposoby pobierania, przechowywania i transportu próbek, harmonogram i warunki pomiarów)
== Badania jakości laboratorium ==
W normie PN-EN 13725 określono wymagania dotyczące warunków i sposobów prowadzenia pomiarów olfaktometrycznych. Najdokładniej opisano sposoby kontrolowania:
* jakości urządzeń stosowanych do mieszania strumieni badanego gazu i czystego powietrza (np. sprawność olfaktometrów)
* węchowej wrażliwości osób oceniających zapach rozcieńczonych próbek (sprawność sensoryczna członków zespołu)
* ogólnej dokładności pomiarów, zależnej czynników wyżej wymienionych i innych
W wielu sytuacjach dokładność pomiarów jest ściśle związana z jakością stosowanego sprzętu i prawidłowością procedury pobierania próbek (np. jakość sond i pojemników na próbki{{r|Sampling bags}}). Przyczyną dużych błędów mogą być procesy zachodzące w czasie pobierania próbek gorących i wilgotnych. W tych przypadkach badany gaz jest wstępnie rozcieńczany (dynamicznie lub statycznie) przed wprowadzeniem do worków na próbki, co stanowi pierwszy etap analizy olfaktometrycznej.
=== Jakość olfaktometru i innych urządzeń rozcieńczających ===
Kalibrację olfaktometru i innych urządzeń rozcieńczających wykonuje się co najmniej raz w roku (częściej, jeżeli taka potrzeba wynika z historii kalibracji przechowywanej w archiwum). Dla danej serii rozcieńczeń określa się parametry dokładności i niestabilności, które są porównywane z wymaganiami PN-EN 13725.
W czasie kalibracji są stosowane:
* gazy wskaźnikowe zapewniające stabilność stosowanej metody analitycznej (rozszerzona niepewność ±3% lub mniejsza dla około 15% i 90% zakresu pomiarowego); np. tlenek węgla (analiza NDIR) lub – w przypadku kalibracji aparatów bez regulatorów strumienia masy – propan (GC FID) lub SF6 (ECD lub IR).
* odpowiednie przyrządy kontrolne o udokumentowanej dokładności, wyższej o rząd wielkości niż wymagany poziom dokładności kalibrowanego urządzenia
Oznaczenia wykonuje się co najmniej 10-krotnie dla co najmniej pięciu ustawień jednej serii rozcieńczeń.
Określana jest dokładność rozcieńczenia, wyrażana przez:
* poprawność – obciążenie wewnątrzlaboratoryjne (<big><math>\delta_{w,d}</math></big>; dolny indeks <math>d</math> – od ang. ''dilution''; rozcieńczenie), obliczane zwykle z użyciem wartości odniesienia dla ustawienia rozcieńczenia (<big><math>\mu_d</math></big>), określanej zwykle na podstawie poprzedniej kalibracji
* precyzję – granicę powtarzalności rozcieńczenia (<big><math>r_d</math></big>), parametr charakteryzujący różnice między średnim stężeniem wyznaczanym po kolejnych ustawieniach tego samego rozcieńczenia
* niestabilność (<big><math>I_d</math></big>) – parametr charakteryzujący zmiany stężenia w czasie jednej prezentacji, obliczany na podstawie wyników co najmniej 10 kolejnych obserwacji; wynik analizy dotyczącej jednego ustawienia (<big><math>y_{i,d}</math></big>) powinien składać się z co najmniej 10 „obserwacji” (<big><math>o_j</math></big>), wykonywanych co nie więcej niż 10 s (podstawa obliczeń [[w:odchylenie standardowe|odchylenia standardowego]] niestabilności, <big><math>s_{I,d}</math></big>)
W czasie badań dokładności rozcieńczania (poprawności i precyzji) dla każdego z wybranych ustawień oblicza wartości średnie <big><math>\overline{y}_{w,d}</math></big> oraz 95% przedział ufności dla dokładności tych rozcieńczeń:
: <math> d_{w,d} - A_{w,d} \cdot r_d \leqslant \delta_{w,d} \leqslant d_{w,d} + A_{w,d} \cdot r_d </math>
gdzie:
* oszacowanie obciążenia ustawienia rozcieńczenia: <math>d_{w,d} = \overline{y}_{w,d} - \mu_d </math>
* współczynnik statystyczny <math>A_{w,d} = \sqrt{1 \over 2n}</math>
* granica powtarzalności (<math>r_d</math>), obliczona na podstawie odchylenia standardowego (<math>s_{r,d}</math>) w zbiorze wyników uzyskanych po kolejnych ustawieniach jednego rozcieńczenia: <math>r_d = t \cdot \sqrt 2 \cdot s_{r,d}</math>
<br /><br />
'''<span style="color:SteelBlue">Ustalono, że dokładność (<math>A_d</math>) serii rozcieńczeń powinna spełniać warunek</small>:'''
: <math> A_d = \frac {(|d_{w,d}| + A_{w,d} \cdot r_d)}{\mu_d} \leqslant 0{,}20 </math></span>'''
'''<span style="color:SteelBlue">Dla niestabilności rozcieńczenia (''I''<sub>d</sub>) ustalono kryterium:</span>'''
: <math> I_d = \left( \frac {1,96 \cdot s_{I,d}}{y_{i,d}} \right) \cdot 100\% \leqslant 5\% </math>
<br />
=== Sprawność sensoryczna zespołu ===
[[Plik:Select of panel.svg|thumb|250px|Wyniki badań węchowej wrażliwości kandydata do [[w:Olfaktometria#Zespół|zespołu]] (przykład)]]
Zgodnie z PN-EN 13725 węch członków [[w:Olfaktometria#Zespół|zespołu]], pełniącego funkcję czujnika pomiarowego, jest oceniany z wykorzystaniem ''n''-butanolu. Określana jest wysokość indywidualnego progu wyczuwalności zapachu tego związku (''ITE''<sub>''n''-butanol</sub>; ang. ''Individual Threshold Estimate'') i zmienność progu.
'''<span style="color:SteelBlue">Muszą spełniać następujące kryteria:</small>'''
# antylogarytm z odchylenia standardowego ''s''<sub>ITE</sub>, obliczonego z log ''ITE'', <br />jest mniejszy niż 2,3 (''ITE'' wyraża się w jednostkach [[w:stężenie masowe|stężenia masowego]]),
# średnia geometryczna dla wartości ''ITE''<sub>n-butanol</sub> mieści się <br />między 0,5-krotną a 2-krotną wartością odniesienia (62 µg/m³ do 246 µg/m³, czyli 20–80 [[w:ppb|ppb]])
Zgodność z kryteriami jest systematycznie sprawdzana, a wyniki wszystkich oznaczeń ''ITE''<sub>''n''-butanol</sub> są archiwizowane. W olfaktometrycznych badaniach próbek środowiskowych lub przemysłowych mogą uczestniczyć tylko te osoby, które w czasie ostatnich 10–20 pomiarów ''ITE''<sub>''n''-butanol</sub> spełniały kryteria selekcji.
=== Wewnątrzlaboratoryjne badania eksploatacyjne ===
Wewnątrzlaboratoryjne badania dokładności są wykonywane przede wszystkim z użyciem [[w:certyfikat|certyfikowanego]] odorantu odniesienia ([[w:alkohol butylowy|''n''-butanol]]), dla którego jest znana [[w:wartość oczekiwana|wartość oczekiwana]] (<big><math>\mu</math></big>), zastępująca „wartość rzeczywistą” stężenia zapachowego.
Określana jest dokładność, wyrażana przez:
* poprawność – obciążenie wewnątrzlaboratoryjne (<big><math>\delta_w</math></big>)
* precyzję – granica powtarzalności (<big><math>r</math></big>)
W czasie wewnętrznej kontroli jakości pomiarów wykonuje się co najmniej <big><math>n = 10</math></big> pomiarów stężenia zapachowego w próbce i oblicza wartość średnią <big><math>\overline{y}_{w}</math></big> oraz 95% przedział ufności dla obciążenia wewnątrzlaboratoryjnego:
: <math>d_w - A_w \cdot r \leqslant \delta_w \leqslant d_w + A_w \cdot r</math>
gdzie:
* oszacowanie obciążenia wewnątrzlaboratoryjnego: <math>d_w = \overline{y}_{w} - \mu</math>
* współczynnik statystyczny <math>A_{w} = \sqrt{1 \over 2n}</math>
* granica powtarzalności (<big><math>r</math></big>), obliczona na podstawie odchylenia standardowego (<big><math>s_r</math></big>): <math>r = t \cdot \sqrt 2 \cdot s_r</math>
<br /><br />
'''<span style="color:SteelBlue">Kryteria dokładności i powtarzalności określono stosując zmienną pomiarową <math>A_{od}</math>:</big>'''
: <math>A_{od} = |d_w| + (A_w \cdot r) \leqslant 0{,}217</math>
'''<span style="color:SteelBlue">Dodatkowo określono kryterium precyzji (granica powtarzalności) jako:</span>'''
: <math>r \leqslant 0{,}477</math> lub <math>10^r \leqslant 3{,}0</math>
<br />
Wewnątrzlaboratoryjne badania jakości pomiarów stężenia zapachowego w próbkach zawierających inne odoranty ograniczają się do określania precyzji. Ustalenie poprawności (obciążenia) nie jest możliwe, ponieważ nie jest dostępna wartość oczekiwana. Przyjmuje się, że poprawność jest taka sama jak w czasie oznaczeń z użyciem ''n''-butanolu.
=== Badania międzylaboratoryjne ===
Zaleca się, aby oznaczenia dokładności laboratorium były organizowane przez niezależne certyfikowane jednostki, zajmujące się przygotowaniem i dystrybucją próbek, równocześnie analizowanych w różnych laboratoriach („test okrężny”, ''ring-test''{{r|Ring test|Ringversuch}}). Badania umożliwiają ustalenie dokładności oznaczeń stężenia zapachowego w próbkach zawierających n-butanol, inne czyste związki chemiczne lub mieszaniny odorantów (np. w próbkach środowiskowych). W przypadku stosowania odorantów innych niż n-butanol za wartość oczekiwaną uznaje się średnią z wyników uzyskiwanych w różnych laboratoriach.
Międzylaboratoryjne badania zgodności wyników pomiarów olfaktometrycznych były prowadzone w Holandii i w Niemczech od lat 80. XX w. Od roku 2003 koordynuje je prywatna firma OLFAtec GmbH (Niemcy), która uzyskała akredytację zgodnie z EN ISO/IEC 17020:2004{{r|Proficiency art2009|proficiency-testing}}.
== Wyniki ICO 2000, 2003, 2005, 2007, 2011 ==
Międzylaboratoryjne badania olfaktometryczne były prowadzone na dużą skalę już w latach 80. XX w., głównie w Niemczech i Holandii. Ich wyniki zostały wykorzystane w ramach prac Grupy Roboczej WG2 Odours w Europejskim Komitecie Normalizacyjnym, kierowanej przez A.P. van Harrevelda, w czasie opracowywania projektu normy{{r|Harreveld 1993|Heeres Harssema 1993|ICO 2000}}.
W badaniach wykonanych na podstawie projektu z roku 2000 uczestniczyło 31 laboratoriów z czterech krajów Europy Środkowej. Wykonywano testy z użyciem trzech czystych związków chemicznych (''n''-butanol, [[w:siarkowodór|H<sub>2</sub>S]], [[w:tetrahydrotiofen|THT]]) oraz naturalnej mieszaniny odorantów (zapach kawy). Stwierdzono, że laboratoria pracujące zgodnie z nowym standardem uzyskują większą niż inne powtarzalność i odtwarzalność{{r|ICO 2000}}.
W roku ustanowienia EN 13725:2003 w ICO uczestniczyło 51 laboratoriów z 12 krajów, a w roku 2005 – 47 laboratoriów z 15 krajów. {{r|ICO 2005}}. W zakres testu ''RV Standard'' (test zgodności wyników, skrót ''RV'' od niem. ''Ringversuch'') wchodziło oznaczenie stężenia zapachowego w 4 próbkach, dostarczonych przez ''OLFAtec GmbH'', zawierających ''n''-butanol (dwa różne stężenia) oraz [[w:Tetrahydrotiofen|THT]] i ''SFREE'' (bezsiarkowy [[w:nawaniacz|nawaniacz]] gazu ziemnego, stosowany zamiast THT){{r|SFREE}}. Porównując liczbę poprawnych wyników uzyskanych w poszczególnych laboratoriach, stwierdzono duży postęp w czasie dwóch lat. W roku 2003 cztery poprawne wyniki uzyskano w 8 (ok. 16%), a w roku 2005 w 18 laboratoriach (ok. 38%).
Trudniejsze okazało się uzyskanie potwierdzenia wymaganej powtarzalności i poprawności oznaczeń stężenia ''n''-butanolu. W roku 2005 do testu ''RV PLUS'' (10 próbek o różnym stężeniu ''n''-butanolu w azocie) przystąpiło 10 laboratoriów. Tylko dwa z nich uzyskały potwierdzenie zgodności z kryterium powtarzalności (''r'') i poprawności (''A''), a trzy dodatkowe spełniały jedno z kryteriów (''r'' lub ''A''){{r|ICO 2005}}.
W 2007 roku w badaniu biegłości z użyciem ''n''-butanolu uczestniczyło 29 laboratoriów. Wszystkie kryteria statystyczne EN 13725 spełniło 12 z nich. Wśród laboratoriów, które nie uzyskały wymaganej dokładności znalazły się jednostki akredytowane zgodnie z ISO 17025, co potwierdza potrzebę stosowania ICO{{r|Proficiency art2009}}.
W 2011 w analogicznych badaniach wzięło udział 35 zespołów olfaktometrycznych z 14 krajów (Niemcy, Dania, Wielka Brytania, Belgia, Francja, Włochy, Holandia, Hiszpania, Austria, Kanada, Chile, Estonia, Szwajcaria i – po raz pierwszy – Polska). Oba kryteria spełniło 19 laboratoriów. Laboratorium z Polski znalazło się wśród siedmiu, które spełniły tylko jedno z nich. Żadnego kryterium nie spełniło 9 zespołów{{r|ICO2011}}.
== Uwagi ==
# Skrót ''EROM'' oznacza ''European Reference Odour Mass'': <small>'''1 EROM ≡ 123 μg ''n''-butanolu ≡ 1 ou<sub>E</sub> mieszaniny odorantów'''</small><br />Zgodnie z PN-EN 13725 „czujnikiem” olfaktometru jest [[Uciążliwość_zapachowa/Olfaktometria_inżynierska/Olfaktometria_dynamiczna#Zespół|zespół]] oceniających, których indywidualny próg wyczuwalności mieści się w zakresie 62–246 μg ''n''-butanolu/m³.
# W PN-EN 13725 jakości laboratoriów olfaktometrycznych dotyczy rozdz. 5. „Eksploatacyjne wymagania dotyczące jakości” (s. 19) oraz załączniki informacyjne: Załącznik C – Przykład obliczeń dokładności i niestabilności przyrządu (s. 54); Załącznik D – Przykład obliczeń pomiarów odorymetrycznych w jednym laboratorium (s. 57).
== Zobacz też – zestawienie najważniejszych pojęć ==
* [[Uciążliwość zapachowa/Olfaktometria inżynierska/Zestawienie najważniejszych pojęć|Zestawienie najważniejszych pojęć]]
== Czy znasz odpowiedzi? ==
* Czy dokładność uzyskiwanego w olfaktometrze rozcieńczenia Z = 60 jest zgodna z wymaganiami normy PN-EN 13725, jeżeli przed rozcieńczeniem stężenie związku wzorcowego wynosiło 1200 ppm, a po 15 ustawieniach tego rozcieńczenia uzyskano zestawione poniżej wyniki oznaczeń stężenia wzorca w strumieniu wypływającym z aparatu?
{| class="wikitable"
| align="center" style="background:#f0f0f0;"|'''Lp'''
| align="center" style="background:#f0f0f0;"|'''1'''
| align="center" style="background:#f0f0f0;"|'''2'''
| align="center" style="background:#f0f0f0;"|'''3'''
| align="center" style="background:#f0f0f0;"|'''4'''
| align="center" style="background:#f0f0f0;"|'''5'''
| align="center" style="background:#f0f0f0;"|'''6'''
| align="center" style="background:#f0f0f0;"|'''7'''
| align="center" style="background:#f0f0f0;"|'''8'''
| align="center" style="background:#f0f0f0;"|'''9'''
| align="center" style="background:#f0f0f0;"|'''10'''
| align="center" style="background:#f0f0f0;"|'''11'''
| align="center" style="background:#f0f0f0;"|'''12'''
| align="center" style="background:#f0f0f0;"|'''13'''
| align="center" style="background:#f0f0f0;"|'''14'''
| align="center" style="background:#f0f0f0;"|'''15'''
|-
| Stężenie, ppm||21,16||19,61||21,03||23,10||20,54||20,78||20,84||23,13||22,07||23,50||19,22||21,96||23,25||21,49||22,13
|}
{| class="collapsible collapsed"
! <small><small>Obliczenia i odpowiedź</small></small>
|-
|
::;''Wyniki obliczeń dokładności rozcieńczenia'':
{| class="wikitable"
| align="left" style="background:#f0f0f0;"|'''średnia z wyników pomiarów, y<sub>śr.,w,d</sub>'''
| align="center" style="background:#f0f0f0;"|'''21,586'''
|-
| wartość oczekiwana μ<sub>d</sub> = 1200 ppm / Z = 60||'''20'''
|-
| poprawność, obciążenie, d<sub>w,d</sub> = y<sub>śr,w,d</sub> - μ<sub>d</sub>||1,586
|-
| współczynnik statystyczny A<sub>w,d</sub> = (1/2n)<sup>0,5</sup>||0,183
|-
| odchylenie standardowe, s<sub>r,d</sub>||1,268
|-
| t-Studenta (95%)||1,753
|-
| granica powtarzalności r<sub>d</sub> = t * 2<sup>0,5</sup> * s<sub>r,d</sub>||3,143
|-
| dokładność ustawienia, A<sub>w,d</sub> = (d<sub>w,d</sub> + A<sub>w,d</sub> * r<sub>d</sub>) / μ<sub>d</sub> ||'''0,11'''
|}
::;''Odpowiedź'':
::''Kryterium dokładności: '''A<sub>w,d</sub> ≤ 0,20''' jest spełnione. ''
|}
----
* Czy laboratorium spełnia ustalone w PN-EN 13725 kryteria dokładności i powtarzalności pomiarów, jeżeli uzyskano zestawione poniżej wyniki oznaczeń stężenia zapachowego w próbce powietrza, zawierającej 100 ppm n-butanolu (c<sub>th</sub> = 40 ppb)?
{| class="wikitable"
| align="center" style="background:#f0f0f0;"|'''Lp'''
| align="center" style="background:#f0f0f0;"|'''1'''
| align="center" style="background:#f0f0f0;"|'''2'''
| align="center" style="background:#f0f0f0;"|'''3'''
| align="center" style="background:#f0f0f0;"|'''4'''
| align="center" style="background:#f0f0f0;"|'''5'''
| align="center" style="background:#f0f0f0;"|'''6'''
| align="center" style="background:#f0f0f0;"|'''7'''
| align="center" style="background:#f0f0f0;"|'''8'''
| align="center" style="background:#f0f0f0;"|'''9'''
| align="center" style="background:#f0f0f0;"|'''10'''
| align="center" style="background:#f0f0f0;"|'''11'''
| align="center" style="background:#f0f0f0;"|'''12'''
| align="center" style="background:#f0f0f0;"|'''13'''
| align="center" style="background:#f0f0f0;"|'''14'''
| align="center" style="background:#f0f0f0;"|'''15'''
|-
| Stężenie ''c''<sub>od</sub> [ou<sub>E</sub>/m³]||2200||2448||4094||4233||4159||3862||2333||3315||3856||3316||3000||2327||4366||2968||3903
|}
{| class="collapsible collapsed"
! <small><small>Obliczenia i odpowiedź</small></small>
|-
|
::''Stężenie n-butanolu w badanej próbce wynosiło:''
:::: c<sub>od</sub> = c / c<sub>th</sub> = 100 ppm / 0,040 = 2500 ou<sub>E</sub>/m³.
::''Aby ocenić sprawność laboratorium olfaktometrycznego – sprzęt, zespół i procedury – obliczamy:
::– ''geometryczną średnią z wyników pomiarów c<sub>od</sub>,''
::– ''logarytmy z wyników pomiarów i odchylenie standardowe z tych wartości,''
::– ''wartości A<sub>od</sub> i ''r'', które powinny spełniać ustalone kryteria.''
{| class="wikitable"
| align="center" style="background:#f0f0f0;"|'''Lp'''
| align="center" style="background:#f0f0f0;"|'''1'''
| align="center" style="background:#f0f0f0;"|'''2'''
| align="center" style="background:#f0f0f0;"|'''3'''
| align="center" style="background:#f0f0f0;"|'''4'''
| align="center" style="background:#f0f0f0;"|'''5'''
| align="center" style="background:#f0f0f0;"|'''6'''
| align="center" style="background:#f0f0f0;"|'''7'''
| align="center" style="background:#f0f0f0;"|'''8'''
| align="center" style="background:#f0f0f0;"|'''9'''
| align="center" style="background:#f0f0f0;"|'''10'''
| align="center" style="background:#f0f0f0;"|'''11'''
| align="center" style="background:#f0f0f0;"|'''12'''
| align="center" style="background:#f0f0f0;"|'''13'''
| align="center" style="background:#f0f0f0;"|'''14'''
| align="center" style="background:#f0f0f0;"|'''15'''
| align="center" style="background:#f0f0f0;"|
|-
| stężenie ''c''<sub>od</sub> [ou<sub>E</sub>/m³] ||2200||2448||4094||4233||4159||3862||2333||3315||3856||3316||3000||2327||4366||2968||3903||'''śr. geom.'''<br/>'''3270'''
|-
| stężenie ''c'' [ppm]||88||98||164||169||166||154||93||133||154||133||120||93||175||119||156|| *
|-
| logarytm ''c''<sub>od</sub>||2,1206||2,1670||2,3903||2,4048||2,3971||2,3650||2,1461||2,2986||2,3643||2,2987||2,2553||2,1449||2,4183||2,2507||2,3696||'''''s''<sub>r</sub> '''<br/>'''0,1023'''
|}
{{Wikisource|tekst=nie|Tablica rozkładu t-Studenta|tablicę rozkładu Studenta }}
::''Laboratorium spełnia oba kryteria dokładności, ponieważ:''
:::– ''granica powtarzalności: ''
:::: ''r = t * 2<sup>0,5</sup> * s<sub>r</sub> = 1,75305 * 2<sup>0,5</sup> * 0,1023 = '''0,2537 < 0,477'''
:::– ''kryterium dokładności i powtarzalności: ''
:::: ''A<sub>od</sub> = |d<sub>w</sub>| + A<sub>w</sub> * r = (log 3270 - log 2500) + (1/30)<sup>0,5</sup> * 0,2537 = '''0,16296 < 0,217'''''
|}
== Przypisy ==
<noinclude>{{Przypisy-lista|liczba kolumn=2|1=
* <ref name="PN-EN 13725:2007">{{cytuj książkę|autor=Polski Komitet Normalizacyjny, NKP 280 |tytuł=Jakość powietrza. Oznaczanie stężenia zapachowego metodą olfaktometrii dynamicznej (ang. Air quality – Determination of odour concentration by dynamic olfactometry; fr. Qualité de l’air – Détermination de la concentration d’une odeur par olfactométrie dynamique; niem. Luftbeschaffenheit – Bestimmung der Geruchsstoffkonzentration mit dynamischer Olfaktometrie)|wydawca=PKN Warszawa |rok=2007 |język=pl |url=http://sklep.pkn.pl/pn-en-13725-2007p.html|data dostępu=2011-07-05}}</ref>
* <ref name="CEN-CENELEC">{{cytuj stronę|url=http://archive.is/ZV5OK |tytuł=Objective assessment of odours |nazwisko=van Harreveld |imię=Ton |opublikowany=CEN-CENELEC Management Centre |język=en |data dostępu=2011-06-29}}</ref>
* <ref name="Harreveld 2004">{{cytuj pismo|nazwisko=Van Harreveld |imię=A.P. |tytuł=Odour management tools-filling the gaps |czasopismo=Water Sci. Technol. |pmid=15484736) |rok=2004 |wolumin=50 |wydanie=4 |strony=1–8 |język=en}}</ref>
* <ref name="Normalizacja 2005">{{cytuj pismo|nazwisko=Kośmider |imię=J. |nazwisko2=Krajewska |imię2=B. |tytuł=Normalizacja olfaktometrii dynamicznej. Podstawowe pojęcia i jednostki miar |czasopismo=Normalizacja |oznaczenie=nr 1 |strony=15–22 |rok=2005 |język=pl}}</ref>
* <ref name="Wod-Kanal 2008">{{cytuj pismo|nazwisko=Kośmider |imię=J. |tytuł=Pomiary stężeń zapachowych metodą olfaktometrii dynamicznej (PN-EN 13725:2007) |czasopismo=Wodociągi – Kanalizacja |url=http://www.zut.edu.pl/fileadmin/pliki/odory/pdf/WOD_KANAL_2006_Pom_st_zap.pdf |oznaczenie=nr 10 |strony=34–35 |rok=2007 |język=pl}}</ref>
* <ref name="Sampling bags">{{cytuj pismo|nazwisko=van Harreveld |imię=A.P. |tytuł=Odor concentration decay and stability in gas sampling bags |czasopismo=J. Air Waste Manag. Assoc. |pmid=12568253 |wydanie=1 |wolumin=53 |strony=51–60 |język=en |data=styczeń 2003}}</ref>
* <ref name="the validation of the draft EN">{{cytuj pismo|nazwisko=van Harreveld |imię=A.P |nazwisko2=Heeres |imię2=P. |tytuł=The validation of the draft European CEN standard for dynamic olfactometry by an interlaboratory comparison on n-butanol |czasopismo=Gefahrstoffe Reinhaltung der Luft |wydawca=Springer |miejsce=Düsseldorf |wydanie=10 |wolumin=57 |strony=393–398 |issn=0949-8036 |język=en |rok=1997 |url=http://cat.inist.fr/?aModele=afficheN&cpsidt=2862787}}</ref>
* <ref name="Ring test">{{cytuj stronę|url=http://www.proz.com/kudoz/english_to_polish/mathematics_statistics/3522571-ring_test.html#7973560 |tytuł=Tłumaczenie zwrotu „ring test” |praca= English_to_polish/mathematics_statistics | opublikowany=www.proz.com |język=pl |data dostępu=2011-06-29}}</ref>
* <ref name="Ringversuch">{{cytuj stronę|url=http://www.olfatec.de/web2/de/hauptbereich/ringversuche/en-137252003/ |tytuł=Ringversuch/Eignungsprüfung nach DIN EN 13725:2003 |data dostępu=2010-10-16 |autor=OLFAtec GmbH – ein Unternehmen der Odournet Holding b.v. |język=de}}</ref>
* <ref name="ICO 2000">{{cytuj pismo|nazwisko=Mannebeck |imię=D. |nazwisko2=Mannebeck |imię2=H. |tytuł=Interlaboratory comparison of dynamic olfactometry in Central Europe 2000 |czasopismo= Water Sci Technol. |pmid=117624 |wydanie=9 |wolumin=44 |rok=2001}}</ref>
* <ref name="ICO 2005">{{cytuj pismo|nazwisko=Maxeiner |imię=Bjoern |tytuł=Olfactometric Interlaboratory Comparison Test 2005 |czasopismo=WEF/AWWA Odors and Air Emissions |odpowiedzialność=OLFATec GmbH |język=en |rok=2006 |url=http://www.olfatec.de/ger/download/olfactometric_interlab_test_2005.pdf}}</ref>
* <ref name="Proficiency art2009">{{cytuj pismo|nazwisko=van Harreveld |imię=A.P. |nazwisko2=Mannebeck |imię2=D. |nazwisko3=Maxeiner |imię3=B. |tytuł=Proficiency testing as the key element in implementing EN13275 olfactometry |czasopismo=Water Sci. Technol. |wydanie=8 |wolumin=59 |strony=1649–1655 |język=en |rok=2009 |pmid=19403979 |url = http://www.researchgate.net/publication/24378823_Proficiency_testing_as_the_key_element_in_implementing_EN13275_olfactometry}}</ref>
* <ref name="proficiency-testing">{{cytuj stronę|url=http://www.odournet.com/qaqc-services/proficiency-testing/en-13725/ |tytuł= en 13725 - proficiency testing|praca=accredited calibration & proficiency testing|opublikowany=OLFAtec |język=en |data dostępu=2011-06-29}}</ref>
* <ref name="Anal bledow">{{cytuj stronę|url=http://www.eti.pg.gda.pl/katedry/kose/dydaktyka/Metrologia/analiza_bledow.pdf |tytuł=Analiza błędów i niepewności pomiarów |praca=Materiały dydaktyczne PG. Metrologia |opublikowany=www.eti.pg.gda.pl |język=pl |data dostępu=2011-07-02}}</ref>
* <ref name="ISO 5725-1">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=1 |tytuł części=Ogólne zasady i definicje |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/index.php?a=show&m=product&pid=460571&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5725-2">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=2 |tytuł części=Podstawowa metoda określania powtarzalności i odtwarzalności standardowej metody pomiarowej |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/index.php?a=show&m=product&pid=460572&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5725-3">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=3 |tytuł części=Pośrednie miary precyzji standardowej metody pomiarowej |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=460573&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5725-4">{{cytuj książkę|tytuł=Dokładność (poprawność i precyzja) metod pomiarowych i wyników pomiarów |część=4 |tytuł części=Podstawowe metody wyznaczania poprawności standardowej metody pomiarowej |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/index.php?a=show&m=product&pid=460574&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="ENV 13005">{{cytuj stronę|url=http://www.bipm.org/utils/common/documents/jcgm/JCGM_100_2008_E.pdf |tytuł=Guide to the expression of uncertainty in measurement |rok=1993 |praca=International Organization for Standardization, Genewa, ISO |opublikowany=www.bipm.org |język=en |data dostępu=2011-07-02}}</ref>
* <ref name="ISO 9169">{{cytuj książkę|tytuł=Jakość powietrza – Definicje i wyznaczanie charakterystyk działania automatycznego systemu pomiarowego |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=568418&page=329 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 5492">{{cytuj książkę|tytuł=Analiza sensoryczna – Terminologia |język=pl | wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=564387 |data dostępu=2011-07-05}}</ref>
* <ref name="ISO 6879">{{cytuj książkę|tytuł=Jakość powietrza – Charakterystyki sprawności metod pomiaru jakości powietrza i pojęcia pokrewne dotyczące tych metod |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=479079&page=1 |data dostępu=2011-07-05}}</ref>
* <ref name="PN-ISO 4225">{{cytuj książkę|tytuł=Jakość powietrza - Zagadnienia ogólne - Terminologia|język=pl |wydawca=Polski Komitet Normalizacyjny |url=http://sklep.pkn.pl/pn-iso-4225-1999p.html |data dostępu=2011-07-05}}</ref>
* <ref name="PN-EN ISO/IEC 17000">{{cytuj książkę|tytuł=Ocena zgodności – Terminologia i zasady ogólne |język=pl |wydawca=Polski Komitet Normalizacyjny |url=https://sklep.pkn.pl/?a=show&m=product&pid=487514 |data dostępu=2011-07-05}}</ref>
* <ref name="Harreveld 1993">{{cytuj książkę|tytuł=Materiały Międzynarodowego Seminarium ODOURS – Control, Regulations, Measurements ODOURS’1993 |wydawca=Ekochem |miejsce=Szczecin |rok=1993 |strony=140–156 |rozdział=European standardisation of olfactometry |imię r=A.P. |nazwisko r=van Harreveld |url=http://www.odory-szczecin.ps.pl/index.php?page=a-p-van-harreveld---european-standardisation-of-olfactometry}}</ref>
* <ref name="Heeres Harssema 1993">{{cytuj książkę|tytuł=Materiały Międzynarodowego Seminarium ODOURS – Control, Regulations, Measurements ODOURS’1993 |wydawca=Ekochem |miejsce=Szczecin |rok=1993 |strony=121–129 |rozdział=An interlaboratory study on the odor measurements of n-butanol |imię r=P. |nazwisko r=Heeres |imię2 r=H. |nazwisko2 r=Harssema |url=http://www.odory-szczecin.ps.pl/index.php?page=p-heeres-h-haressema---an-interlaboratory-study-n-butanol}}</ref>
* <ref name="SFREE">{{cytuj stronę|url=http://www.chem-met.com.pl/gasodor.html|tytuł=Gasodor S-FREE – bezsiarkowy nawaniacz do gazu ziemnego |opublikowany=www.chem-met.com.pl |język=pl |data dostępu=2011-07-02}}</ref>
* <ref name="ICO2011">Wyniki ''Interlaboratory Comparison Olfactometry'' 2011, {{cytuj stronę|url=http://www.zut.edu.pl/index.php?id=5763&tx_ttnews|tytuł=ODORY, OLFAKTOMETRIA ... Aktualności |opublikowany= www.zut.edu.pl|język=pl |data dostępu=2011-09-22}}</ref>
}}
== Linki zewnętrzne ==
* Bjoern Maxeiner: [http://www.researchgate.net/publication/233667735_Olfactometric_Interlaboratory_Comparison_Test_2005 Olfactometric Interlaboratory Comparison Test 2005], Proceedings of the Water Environment Federation 12/2005; DOI: 10.2175/193864706783791452
* [http://www.odournet.com/qaqc-services/proficiency-testing?gclid=CjwKEAjwxtKeBRDMzoeQmYn5uHcSJACGCF3D74tsbp1I7SvbVTYvF_rMQ1_sGG9fK1KK7aWqMRpTTxoCN5jw_wcB accredited calibration & proficiency testing] na: www.odournet.com
</noinclude>
<noinclude>
<center>'''[[Uciążliwość zapachowa|Powrót do spisu treści]]'''</center>{{UnikatowaStronaKoniec}}</noinclude>
gx1ywvbu6uhw6usx18h07x7g7xo02fw
Szablon:U
10
32873
438582
319225
2022-08-23T12:51:48Z
Persino
2851
wikitext
text/x-wiki
<includeonly><includeonly>{{#invoke:Ramka|Powtarzaj|wytnij=tak|{{((}}Ref{{!}}nazwa{{=}}{{(((}}{{((}}_{{))}}{{)))}}{{!}}grupa{{=}}uwaga{{))}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude></includeonly><noinclude>{{Dokumentacja|Szablon:R/opis}}</noinclude>
tl12n09zwmm2gpv0wczi3yhsygpc4x5
438583
438582
2022-08-23T12:55:09Z
Persino
2851
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Powtarzaj|wytnij=tak|{{((}}Ref{{!}}nazwa{{=}}{{(((}}{{((}}_{{))}}{{)))}}{{!}}grupa{{=}}uwaga{{))}}}}</includeonly><noinclude>{{Dokumentacja|Szablon:R/opis}}</noinclude>
grnwc3uckl005kct1m2zf0lkz56j2qx
Moduł:Przypisy
828
33180
438574
438564
2022-08-23T12:02:59Z
Persino
2851
Scribunto
text/plain
return {
["Przypisy"] = function(frame)
--mw.logObject(frame:getParent():getTitle(), "parent:title")
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local pudelko_modul=require("Module:Pudełko");
local pf=parametry_modul.PobierzFrameEwentualnieParent(frame);
local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame);
local nazwa_jednostki=pudelko_modul["Nazwa jednostki 2"](frame);
local uchwyt_strony=mw.title.makeTitle(nazwa_przestrzeni_nazw,nazwa_jednostki);
uchwyt_strony=((uchwyt_strony)and(uchwyt_strony.exists))and uchwyt_strony or mw.title.getCurrentTitle();
local frame2=pf:newChild{args={["obsługiwane jednostki jako nieopisowe strony"]="tak",
["nazwa przestrzeni nazw"]=uchwyt_strony.nsText,
["nazwa jednostki"]=uchwyt_strony.text,
}
}
local typ_jednostki=pudelko_modul["Typ jednostki 2"](frame2)
local typ_strony_w_nawiasach;
if(typ_jednostki=="artykuł")then
typ_strony_w_nawiasach="(artykuły)";
elseif(typ_jednostki=="artykuł dla dzieci")then
typ_strony_w_nawiasach="(artykuły dla dzieci)";
elseif(typ_jednostki=="strona użytkownika")then
typ_strony_w_nawiasach="(strony użytkowników)";
elseif(typ_jednostki=="strona brudnopisu projektu")then
typ_strony_w_nawiasach="(strony brudnopisu projektu)";
else
typ_strony_w_nawiasach="(strony niepodręcznikowe)";
end;
local result = {}
local patternX = frame.args["wzór"]
local pattern0 = frame.args["wzór0"] or patternX
local pattern1 = frame.args["wzór1"]
local pattern2 = frame.args["wzór2"] or pattern1
local section = frame.args["nagłówek"]
local section0 = frame.args["nagłówek0"]
local category = (frame.args["kategoria"])and string.format(frame.args["kategoria"],typ_strony_w_nawiasach) or nil;
local category0 = (frame.args["kategoria0"])and string.format(frame.args["kategoria0"],typ_strony_w_nawiasach) or nil;
local category1 = (frame.args["kategoria1"])and string.format(frame.args["kategoria1"],typ_strony_w_nawiasach) or nil;
local category2 = (frame.args["kategoria2"])and string.format(frame.args["kategoria2"],typ_strony_w_nawiasach) or nil;
local category3 = (frame.args["kategoria3"])and string.format(frame.args["kategoria3"],typ_strony_w_nawiasach) or nil;
local category4 = (frame.args["kategoria4"])and string.format(frame.args["kategoria4"],typ_strony_w_nawiasach) or nil;
local defaultGroup = frame.args["grupa"]
local hasIgnoredFields = false
-- grupa przekazywana w polu o pustej nazwie
-- aby docelowo zwolnić wszystkie nazwy na przypisy
local group = pf.args[""]
if group and string.match(group, "^=*$") then
-- z wyjątkiem błednych wywołań w stylu "=="
hasIgnoredFields = true
group = nil
end
-- alternatywnie do czasu przebotowania z pola o nazwie "grupa"
if not group then
group = pf.args["grupa"]
if group and (#group == 0) then
group = nil
end
end
local function noArgs()
for k, v in pairs(pf.args) do
return false
end
return true
end
local function missingHeader(pattern, section_or_section0)
local stronicowyparser_modul=require("Module:StronicowyParser");
local spreparowany_wikikod_strony=stronicowyparser_modul.SpreparowanyWikikodStrony(uchwyt_strony.fullText,true);
---mw.log(tekst_rozwinietej_strony);
local czy_dopasowano_wedlug_wzorca=mw.ustring.match(spreparowany_wikikod_strony, pattern);
return
pattern -- wymagany wzór na wyszukiwanie wywołania z nagłówkiem
and section_or_section0-- wymagany nagłówek do wstawienia
and pattern~="" --wyrażenie regularne do sprawdzania, czy występują oczekiwane niepuste nagłówki sekcji
and section_or_section0~="" --wstawiany nagłówek sekcji, gdy nie ma oczekiwanych niepustych nagłówków
and not czy_dopasowano_wedlug_wzorca;
end
--mw.logObject(pattern, "pattern")
local args=pf.args;
local parametry_modul=require("Module:Parametry");
local z_kategoria=not parametry_modul.CzyTak{[1]=args["bez kategorii"],};
local function cat(category0, category1)
local pattern=noArgs() and ((not group)and pattern0 or pattern2) or ((not group)and patternX or pattern1)
local section_or_section0=(((not group)and(section)) or (group and(section0)))
if missingHeader(pattern,section_or_section0) then
if((not args["stopień nagłówka"])or((args["stopień nagłówka"])and(mw.ustring.find(args["stopień nagłówka"],"^=+$"))))then
table.insert(result, section_or_section0)
table.insert(result, "\n")
end;
if z_kategoria then
if(parametry_modul.CzyTak{[1]=category1,})then
table.insert(result,category1)
end;
end;
elseif z_kategoria then
if(parametry_modul.CzyTak{[1]=category0,})then
table.insert(result,category0)
end;
end;
end
if(not group)then
cat(category1,category2)
elseif(group~="")then
cat(category3,category4)
end
table.insert(result, '<div class="do-not-make-smaller refsection')
if group or defaultGroup then
local groupClass, _ = (group or defaultGroup) == "uwaga" and "uwagi" or string.gsub(group or defaultGroup, ' ', '_')
table.insert(result, " refsection-")
table.insert(result, groupClass)
end
table.insert(result, '">')
-- to jest lista powszechnie występujących pól
-- w wywołaniach szablonów przypisów i/lub uwag
local exceptions = {
"", -- to jest docelowo jedyne wyjątkowe pole
"colwidth", -- kopia z enwiki?
"group", -- kopia z enwiki?
"grupa",
"poziom",
"przypis",
"przypisy",
"Przypisy",
"refs", -- kopia z enwiki?
"status",
"stopien",
"stopień",
"Stopień",
"stopnień",
"uwagi",
}
local parametry_niepotrzebne_w_przypisach={
---- parametry pudełka
["nazwa jednostki"]=true,
["nazwa przestrzeni nazw"]=true,
---- parametry kategorii
["bez kategorii"]=true,
---- parametry szablonu [[Szablon:Przypisy-lista]]
["liczba kolumn"]=true,
}
local ignore = {}
for i, v in ipairs(exceptions) do
ignore[v] = true
end
local contents = {}
for k, v in pairs(args) do
if (type(k) == "number") and (k == 1) then
--mw.logObject( {k, v}, "pole {{{1}}} puste lub z przypisami w stylu <ref name=...>")
table.insert(contents, v)
elseif(k=="stopień nagłówka")then
-- gdy poziom nagłówka oznaczany przez parametr w szablonie: stopień nagłówka
if(not string.match(v,"^=+$"))then
-- wchodzę, gdy wartość parametru stopień nagłówka nie składa się z samych równości lub nie jest wartością pustą
hasIgnoredFields=true;
end;
elseif(parametry_niepotrzebne_w_przypisach[k])then
elseif ignore[k] then
-- !!! TO WYŁĄCZĘ PO PRZEBOTOWANIU !!!
hasIgnoredFields = k ~= "";
-- pole ignorowane
--mw.logObject( {k, v}, "ignorowane pole z potencjalnymi przypisami w stylu <ref name=...>")
table.insert(contents, v)
elseif (type(k) == "string") then
-- pole podanej nazwie tłumaczymy na przypis o takiej samej nazwie
local ref = frame:extensionTag('ref', v, {name=k, group=group or defaultGroup})
--mw.logObject( {k, v, ref}, "indywidualny przypis")
table.insert(contents, ref)
else
-- pole indeksowane
--mw.logObject( {k, v}, "indeksowane pole z potencjalnymi przypisami w stylu <ref name=...>")
table.insert(contents, v)
hasIgnoredFields = true
end
end
local references = frame:extensionTag('references', table.concat(contents), {group=group or defaultGroup, responsive="1"})
table.insert(result, references)
table.insert(result, '</div>')
if z_kategoria and hasIgnoredFields and category and category ~="" then
--mw.logObject({hasIgnoredFields, category}, "hasIgnoredFields and category")
if(not group)then
table.insert(result, category)
else
table.insert(result, category0)
end
end
--mw.logObject(table.concat(result), "result")
return table.concat(result)
end,
}
j7dwx7mtzyfd78wpauj5r1atsmlhncn
Moduł:Mapa/dane/Caraș-Severin
828
35535
438588
272400
2022-08-23T15:48:33Z
CommonsDelinker
1569
Replacing Harta_CarasSeverin.png with [[File:Harta_jud_Caras-Severin.png]] (by [[:c:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: [[:c:COM:FR#FR4|Criterion 4]] (harmonizing names of file set) · Requesting in order to harmoniz
Scribunto
text/plain
return {
{
["link alias"] = "Okręg Caraș-Severin",
["nazwa alias"] = "Caraș-Severin",
["skrót"] = "RO-CS",
["dopełniacz"] = "okręgu Caraș-Severin",
["nadrzędna"] = "Rumunia",
mapa = "Harta jud Caras-Severin.png",
top = 45.68,
bottom = 44.60,
left = 21.305,
right = 22.745,
["przykład"] = {
{ "45°18′0″N 21°53′0″E", "Reşiţa", }, -- 45/18/0/N/21/53/0/E/Reşiţa
},
kategoria = "podziału Rumunii",
},
}
a49rjsig2scb8aka97huv1j5itadok5
Moduł:Ramka
828
44224
438584
429482
2022-08-23T14:13:52Z
Persino
2851
Scribunto
text/plain
function SzablonModulParserWywolanie(frame, co_ma_wywolac)
local pf=frame:getParent();
local nazwa_szablonu_modulu_lub_parsera="Nazwa";
local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera];
local argumenty_szablonu_modulu_lub_parsera={};
local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={};
local bez_parametrow={[nazwa_szablonu_modulu_lub_parsera]=true,
["bez argumentów rodzica"]=true,
["nazwa szablonu rodzica"]=true,
["bez argumentów nienazwanych rodzica"]=true,
["potomek"]=true,
["nie potomek"]=true,
["parametry rodzica"]=true,
["zmienna z parametrami rodzica"]=true,
["zmienna z argumentami ramki"]=true,
["zmienna z nazwą szablonu rodzica"]=true,
["parametry funkcji modułu pudełek"]=true,
};
if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end;
for nazwa_parametru,wartosc_parametru in pairs(frame.args) do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru;
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
local ramka_modul=require("Module:Ramka");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tabela_bez_argumentow=ramka_modul.RozpakujArgumenty(frame.args["bez argumentów rodzica"]);
local czy_przekazac_parametry_rodzica=parametry_modul.CzyTak(frame.args["zmienna z parametrami rodzica"]);
local z_dodatkowymi_sprawdzeniami=not(parametry_modul.CzyTak(frame.args["bez dodatkowych sprawdzeń"]) or parametry_modul.CzyTak(pf.args["bez dodatkowych sprawdzeń"]));
local PakujArgumentyRamki = function(args)
local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"];
if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end;
local tabelka1={};
for nazwa_parametru,_ in pairs(args)do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
tabelka1[nazwa_parametru]=true;
end;
end;
local tabelka2=(args["bez argumentów szablonu"]) and ramka_modul.RozpakujArgumenty(args["bez argumentów szablonu"]);
local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2);
local tablica_mikroszablonow={
[";"]="{{+}}",
};
local str="";
for name,_ in pairs(tabelka) do
str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow);
end;
return str;
end;
if(czy_przekazac_parametry_rodzica)then
if(z_dodatkowymi_sprawdzeniami)then
local str=ramka_modul.PakujParametry(pf.args);
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"]=PakujArgumentyRamki(frame.args);
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
else
local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]);
if(z_argumentami_najwyzszego_rodzica)then
local potomek=parametry_modul.CzyTak(pf.args["potomek"]);
if(potomek)then
local parametry_rodzic=pf.args["parametry rodzica"];
if(parametry_rodzic)then
if(z_dodatkowymi_sprawdzeniami)then
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"]=PakujArgumentyRamki(frame.args);
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
end;
end;
end;
local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"];
if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
end;
end;
local czy_bez_argomentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]);
local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]);
local pudelko_modul=require("Module:Pudełko");
for nazwa_parametru,wartosc_parametru in pairs(pf.args) do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru])
and(not tabela_bez_argumentow[nazwa_parametru])
and((not czy_bez_argomentow_nienazwanych_rodzica)or((czy_bez_argomentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru)))
))then
local czy_dodac_do_parametrow;
if czy_parametry_pudelka then
local czy_dodac_do_parametrow=(mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$")
and wartosc_parametru
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$")
and wartosc_parametru
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru));
if(czy_dodac_do_parametrow)then
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
else
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
end;
end;
if(co_ma_wywolac==0)then
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
elseif(co_ma_wywolac==1)then
local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera};
local funkcja=frame.args["Funkcja"];
return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2);
elseif(co_ma_wywolac==2)then
return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
else
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
end;
end;
local function Skladaj_lancuch(frame,tab_lancuch,minimum,maksimum)
local parametry_modul=require("Module:Parametry");
local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]);
local akapit=czy_akapit and "\n\n" or "";
local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or "";
local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]);
local nowa_linia=czy_nowa_linia and "\n" or "";
local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]);
local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]);
local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]);
local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]);
local lancuch_znakow="";
local koniec=#tab_lancuch;
for i=1,koniec,1 do
local lancuch=tab_lancuch[i];
lancuch,_=mw.ustring.gsub(lancuch,"{{min}}",minimum);
lancuch,_=mw.ustring.gsub(lancuch,"{{max}}",maksimum);
if(not wyliczanka)then
lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and " - " or "")));
else
lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or " i "));
end;
lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch;
end;
if(warunkowe)then
local ramka_modul=require("Module:Ramka")
return ramka_modul.InstrukcjeWarunkowe(lancuch_znakow,true);
else
return lancuch_znakow;
end;
end;
return {
InstrukcjeWarunkowe = function(ciag,derektywy_specjalne)
local ciag_warunkowe_fun=function(s)
local function ParserWiki(s,wywolanie)
local czy_parser=mw.ustring.match(s,wywolanie);
if(czy_parser)then
return mw.getCurrentFrame():preprocess(s);
end;
end
return ParserWiki(s,"^({{%s*#if:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifeq:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#switch:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexpr:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#iferror:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexist:[^|]+|[^{}]*}})$")
or s;
end;
local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun);
if(derektywy_specjalne)then
local tab_zamieniane={
["__!__"]="|",
["__!!__"]="||",
["__(__"]="{",
["__((__"]="{{",
["__(((__"]="{{{",
["__)__"]="}",
["__))__"]="}}",
["__)))__"]="}}}",
["__!(__"]="[",
["__!((__"]="[[",
["__)!__"]="]",
["__))!__"]="]]",
};
ciag=mw.ustring.gsub(ciag,"__[^_]+__",tab_zamieniane);
return ciag;
end;
return ciag;
end;
RozpakujArgumenty = function(zmienna_z_argumentami)
local tablica_mikroszablonow={
["{{+}}"]=";",
};
local tabela_bez_argumentow={};
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_argumentami))then
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local podlancuch;
for podlancuch in iter do
podlancuch=mw.text.trim(podlancuch);
local liczba=tonumber(podlancuch);
tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true;
end;
end;
return tabela_bez_argumentow;
end;
PakujParametry = function(args)
local str="";
local znak_127=mw.ustring.char(127);
for name,value in pairs(args)do
str=str..((str~="")and (znak_127.."'\"`UNIQ--RAMKA-00000001-QINU`\"'"..znak_127) or "")..name..(znak_127.."'\"`UNIQ--RAMKA-00000002-QINU`\"'"..znak_127)..value;
end;
return str;
end;
RozpakujParametry = function (zmienna_z_parametrami)
local tabela_parametrow_rodzica={};
local szablon;
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_parametrami))then
local znak_127=mw.ustring.char(127);
local rodzic_table=mw.text.split(zmienna_z_parametrami,znak_127.."'\"`UNIQ--RAMKA-00000001-QINU`\"'"..znak_127,true);
for i=1,#rodzic_table,1 do
local element=rodzic_table[i];
local tab=mw.text.split(element,znak_127.."'\"`UNIQ--RAMKA-00000002-QINU`\"'"..znak_127,true)
local index=mw.text.trim(tab[1]);
wartosc=mw.text.trim(tab[2]);
index=tonumber(index) or index;
tabela_parametrow_rodzica[index]=wartosc;
end;
end;
return tabela_parametrow_rodzica;
end;
["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end,
["Log"] = function(frame)
local wikitekst=frame.args[1];
mw.log(wikitekst);
return wikitekst;
end;
["Szablon"] = function(frame)
return SzablonModulParserWywolanie(frame,0);
end,
["Moduł"] = function(frame)
return SzablonModulParserWywolanie(frame, 1);
end,
["Parser"] = function(frame)
return SzablonModulParserWywolanie(frame, 2);
end,
["OpakujKategorie"] = function(frame)
local pf=frame:getParent();
local wikikod=frame.args[1] or pf.args[1];
local _;
wikikod,_=mw.ustring.gsub(wikikod,"__NOINDEX__","")
local bez_kategorii=frame.args["bez kategorii wikikodu"] or pf.args["bez kategorii wikikodu"];
local z_nazwa_sortowania=frame.args["z nazwą sortowania"] or pf.args["z nazwą sortowania"];
local category;
local tablica_category={};
local iterator1=mw.ustring.gmatch(wikikod,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*[^%[%]]+%s*%]%]");
local iterator2=mw.ustring.gmatch(wikikod,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*[^%[%]]+%s*%]%]");
local parametry_modul=require("Module:Parametry");
local function Nazwa_kategorii(category)
local nazwa=mw.ustring.match(category,"^%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|]*)")
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
else
nazwa=mw.ustring.match(category,"^%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|]*)");
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
end;
end;
return nil;
end;
local sprawdz_modul=require("Module:Sprawdź");
local nazwa_sprawdzania_parametrow_szablonu=sprawdz_modul["NazwaKategoriiSprawdzaniaParametrówSzablonu"]();
for category in iterator1 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
for category in iterator2 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
local parametry_modul=require("Module:Parametry");
if(not parametry_modul["CzySąElementyTablicy"](tablica_category))then return wikikod;end;
wikikod=mw.ustring.gsub(wikikod,"(%[%[%s*[^%[%]]+%s*%]%])",tablica_category);
if(parametry_modul.CzyTak(bez_kategorii))then return wikikod;end;
local czy_z_nazwa_sortowania=parametry_modul.CzyTak(z_nazwa_sortowania);
local ulramka=mw.html.create('ul');
ulramka:css('margin-left','0.3em')
ulramka:css('display','inline');
local pionowa=false;
local kategorie_istnieja=frame.args["kategorie istnieją"] or pf.args["kategorie istnieją"];
local czy_kategorie_istnieja=parametry_modul.CzyTak(kategorie_istnieja);
local parametry_modul=require("Module:Parametry")
local i=1;
for nazwa,wartosc in pairs(tablica_category) do
local nazwa2;
local kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
function tag(nazwa)
local czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
while czy_tag do
nazwa=mw.ustring.gsub(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>","%1");
czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
end;
return nazwa;
end;
kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej)
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
else
local kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej);
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
end;
end;
end;
end;
if(((not czy_kategorie_istnieja)or((czy_kategorie_istnieja)and((not kategoria_istnieje)or(kategoria_istnieje~="Szablon kategoria - nieistniejąca kategoria"))))
and((not kategoria_istnieje)or(kategoria_istnieje~=nazwa_sprawdzania_parametrow_szablonu))
)then
nazwa2=parametry_modul["Odstępy"]{[1]=nazwa2,[2]="tak",};
local liramka=mw.html.create('li');
liramka:css('display','inline');
liramka:css('white-space','normal');
if(pionowa)then
liramka:css('border-left','1px solid #a2a9b1');
liramka:css('margin-left','0.4em')
liramka:css('padding-left','0.4em')
pionowa=true;
else
pionowa=true;
end;
liramka:wikitext(nazwa2);
ulramka:node(liramka);
end;
end;
local kategorie="[[Specjalna:Kategorie|Kategorie]]:"
local divramka=mw.html.create('div');
divramka:css('width', 'auto' );
divramka:css('min-height', 'auto');
divramka:css('font-size','1em');
divramka:css('border','1px solid #a2a9b1');
divramka:css('background-color','#f8f9fa');
divramka:css('text-align','left');
divramka:css('padding','5px')
divramka:css('margin-top','0.5em');
divramka:css('margin-bottom','0.5em');
divramka:css('display','flex');
divramka:css('flex-direction','row')
local divramka2=mw.html.create('div');
divramka2:wikitext(kategorie);
divramka2:node(ulramka);
divramka:node(divramka2);
return wikikod..'\n'..tostring(divramka:allDone());
end,
["Powtarzaj"] = function(frame)
local pf=frame:getParent();
local parametry_modul=require("Moduł:Parametry");
local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]);
local tabela={};
local zacznij_nazwane;
local parametry_modul=require("Module:Parametry");
if(czy_parametry)then
local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false);
local czy=true;
for znaczenia in iter do
znaczenia=mw.text.trim(znaczenia);
local czy_omijac=parametry_modul.CzyTak(znaczenia);
if(czy_omijac)then
if(czy)then
zacznij_nazwane=tonumber(znaczenia);
czy=false;
if(not zacznij_nazwane)then
local tab1,tab2=mw.ustring.match(znaczenia,"%s*([%w%s]+)%s*=%s*(.*)%s*$");
if(tab1 and tab2)then
local parametr_tab=mw.text.split(tab2,"%s*,%s*",false);
tabela[parametry_modul["Odstępy"]{[1]=tab1,[2]="tak",}]=parametr_tab;
else
tabela[parametry_modul["Odstępy"]{[1]=znaczenia,[2]="tak",}]={};
end;
zacznij_nazwane=0;
end;
else
local tab1,tab2=mw.ustring.match(znaczenia,"%s*([%w%s]+)%s*=%s*(.*)%s*$");
if(tab1 and tab2)then
local parametr_tab=mw.text.split(tab2,"%s*,%s*",false);
tabela[parametry_modul["Odstępy"]{[1]=tab1,[2]="tak",}]=parametr_tab;
else
tabela[parametry_modul["Odstępy"]{[1]=znaczenia,[2]="tak",}]={};
end;
end;
end;
end;
end;
if(not zacznij_nazwane)then zacznij_nazwane=0;end;
function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana)
local args=pf.args;
local maksymalna_liczba_nazwy_danego_parametru=0;
for nazwa_parametru, wartosc_parametru in pairs(args)do
local czy_jedynka=false;
if(type(nazwa_parametru)=="string")then
local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%s]*%a)(%s?)(%d+)$");
if(not nazwa_podstawy_parametru and not spacja and not liczba)then
nazwa_podstawy_parametru=nazwa_parametru;
spacja="";
liczba=1;
czy_jedynka=true;
end;
local subtab=tabela[nazwa_podstawy_parametru];
if(subtab)then
local nie_spacja_parametru=parametry_modul.CzyTak(subtab[1]);
local czy_z_jedynka=parametry_modul.CzyTak(subtab[2]);
liczba=tonumber(liczba) or 0;
if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
)then
if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then
maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba);
end;
end;
end;
end;
end;
return maksymalna_liczba_nazwy_danego_parametru;
end;
local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function()
local maksimum=0;
for wartosc_parametru,_ in pairs(tabela)do
if(type(wartosc_parametru)=="string")then
local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru);
maksimum=tabela[wartosc_parametru]
and math.max(maksimum,maksymalna_liczba_nazwy_danego_parametru-(tonumber(tabela[wartosc_parametru][3]) or 0))
or (tonumber(maksymalna_liczba_nazwy_danego_parametru) or 0);
end;
end;
maksimum=math.max(maksimum-zacznij_nazwane,0);
return maksimum;
end;
local zacznij_na_poczatku,skoncz_na_koncu;
local tekst_do_analizy=frame.args[1];
if(not frame.args[1])then return "(brak parametru do analizy)";end;
local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy);
if(not czy_tekst)then return "(parametr do analizy pusty)";end;
local czy_start=parametry_modul.CzyTak(frame.args["start"]);
local czy_koniec=parametry_modul.CzyTak(frame.args["koniec"]);
local zaznacz=frame.args["zaznacz"];
local tabela_zaznacz={};
if(zaznacz)then
local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false)
for liczba in iter do
tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0;
end;
end;
local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]);
local czy_ma_nazwane;
local function Wylicz_skoncz_na_koncu()
czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela);
if(czy_ma_nazwane)then
if(czy_rozne)then
local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]);
if(not maks_numer)then
return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
else
return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow();
end;
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
end;
local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu();
if(not czy_koniec)then
skoncz_na_koncu=skoncz_na_koncu_wyliczona;
else
skoncz_na_koncu=math.min(skoncz_na_koncu_wyliczona, tonumber(frame.args["koniec"]) or 0);
end;
zacznij_na_poczatku=tonumber(frame.args["start"]) or 1;
if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end;
for name, tab_par in pairs(tabela)do
local _4=tonumber(tab_par[4]);local _5=tonumber(tab_par[5]);
if(_4)then zacznij_na_poczatku=math.min(zacznij_na_poczatku,_4 or 0);end;
if(_5)then skoncz_na_koncu=math.max(skoncz_na_koncu,_5 or 0);end;
end;
local lancuch_znakow="";
local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or "";
if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end;
local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]);
local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]);
local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]);
local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_";
local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru)
local value=tabela[nazwa_parametru];
if(value)then
return not parametry_modul.CzyTak(value[1]),parametry_modul.CzyTak(value[2]);
end;
return true,false;
end;
if(not czy_rozne)then
if(czy_ma_nazwane)then
local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local lancuch=tekst_do_analizy;
local czy=nil;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
if(zmienne_parametrowe)then
local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik];
local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element))));
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste)))
or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu)))
or ((wytnij_puste)and (parametry_modul.CzyTak(wartosc_elementu))));
local tabelka_szablonow={
["{{".._i.."}}"]=licznik,
["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))),
};
local function fun_tabelka_szablonow(ciag)
local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}");
return tabelka_szablonow[ciag_strip] or ciag;
end;
lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow);
end;
end;
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest))) then
tab_lancuch[#tab_lancuch+1]=lancuch;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end
lancuch_znakow=Skladaj_lancuch(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_dla_bez_rozne(tabela);
else
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local element=pf.args[licznik]
local czy=(((element)and ((not wytnij)and(not wytnij_puste)))
or((wytnij)and(parametry_modul["CzyTakCiąg"](element)))
or((wytnij_puste)and(parametry_modul.CzyTak(element))));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik);
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
lancuch_znakow=Skladaj_lancuch(frame, tab_lancuch,minimum or 0,maksimum);
end;
else
local function Analizuj_z_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local czy=false;
local czy_niepuste=false;
local wytnij_ujemne=false;
local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka)
local wartosc,klucz;
if(zmienne_parametrowe)then
local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia)
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba];
local czy_jedynka=(liczba==1)and element;
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy_niepuste=czy_niepuste
or (wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu))
or (wytnij_puste and parametry_modul.CzyTak(wartosc_elementu));
czy=czy or wartosc_elementu;
wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or "")));
klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}";
end;
end;
local subtab=tabela[zmienne_parametrowe];
local czy_w_tabeli=subtab and tonumber(subtab[3]);
local liczba_przesuniecia=(czy_w_tabeli)and czy_w_tabeli or 0;
Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia);
end;
return klucz,wartosc;
end;
local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc)
if((wartosc)and(klucz))then
local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc);
return przetwarzane;
end;
return "";
end;
local lancuch_zaanalizowany=tekst_do_analizy;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.." %s*{{%s*".._i.._i.."+%s*}}");
if(lokalizacja)then
zmienne_parametrowe=mw.text.trim(zmienne_parametrowe);
local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka);
if(wytnij_ujemne)then break;end;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
end;
end;
if(not wytnij_ujemne)then
local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}");
czy=czy or (mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")and(not zmienna_numerowana_wikikodu))or((zmienna_numerowana_wikikodu)and(pf.args[licznik]));
local klucz="{{%s*".._i.."%s*}}";
local wartosc=licznik;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
czy_niepuste=czy_niepuste
or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik]))
or (wytnij_puste and parametry_modul.CzyTak(pf.args[licznik]));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end;
lancuch_znakow=Skladaj_lancuch(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_z_rozne(tabela);
end;
if(#lancuch_znakow==0)then return gdy_nic;end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow;
return przetworzony_wikikod;
end,
["PowtarzajOdDo"]=function(frame)
local start=tonumber(frame.args["start"]);
local koniec=tonumber(frame.args["koniec"]);
local krok=tonumber(frame.args["krok"]) or 1;
local parametry_modul=require("Module:Parametry")
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
if((not start)or(not koniec))then return "";end;
if(krok==0)then return "";end;
if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end;
local kod=frame.args[1];
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end,
["PrzetwarzajIterującCiąg"]=function(frame)
local poziom=frame.args["ciąg"];
poziom=mw.text.trim(poziom);
local tab_poziom=mw.text.split(poziom,"%s*;%s*",false);
local len_tab_poziom=#tab_poziom;
local start=1;local koniec=len_tab_poziom;local krok=1;
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
local parametry_modul=require("Module:Parametry");
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
local kod=frame.args[1];
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local tabela_microszablonow2={
["{{_}}"]=licznik,
["{{ciąg}}"]=tab_poziom[licznik];
};
local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end,
["PowtarzajWedług"] = function(frame)
local wybrany_wzor=frame.args["wzór"];
local parametry_modul=require("Module:Parametry")
local czy_link=parametry_modul.CzyTak(frame.args["link"]);
local ramka_modul=require("Module:Ramka");
local liczba_list=ramka_modul["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}};
local lancuch="";
local linki_modul=require("Module:S");
for i=1,liczba_list,1 do
local wybrany_link_lub_bez;
local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i));
if czy_link then
wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez};
end;
lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez;
end;
return lancuch;
end;
["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
licznik=start;
local strona=frame.args["wzór"];
while true do
local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik);
local title=mw.title.makeTitle('',strona2);
if((not title) or (not title.exists))then
return licznik-1;
end;
licznik=licznik+1;
end;
end,
}
i8dxupxk162w8xnzxfaaq2pbab5rup8
438585
438584
2022-08-23T14:41:18Z
Persino
2851
Scribunto
text/plain
function SzablonModulParserWywolanie(frame, co_ma_wywolac)
local pf=frame:getParent();
local nazwa_szablonu_modulu_lub_parsera="Nazwa";
local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera];
local argumenty_szablonu_modulu_lub_parsera={};
local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={};
local bez_parametrow={[nazwa_szablonu_modulu_lub_parsera]=true,
["bez argumentów rodzica"]=true,
["nazwa szablonu rodzica"]=true,
["bez argumentów nienazwanych rodzica"]=true,
["potomek"]=true,
["nie potomek"]=true,
["parametry rodzica"]=true,
["zmienna z parametrami rodzica"]=true,
["zmienna z argumentami ramki"]=true,
["zmienna z nazwą szablonu rodzica"]=true,
["parametry funkcji modułu pudełek"]=true,
};
if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end;
for nazwa_parametru,wartosc_parametru in pairs(frame.args) do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru;
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
local ramka_modul=require("Module:Ramka");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tabela_bez_argumentow=ramka_modul.RozpakujArgumenty(frame.args["bez argumentów rodzica"]);
local czy_przekazac_parametry_rodzica=parametry_modul.CzyTak(frame.args["zmienna z parametrami rodzica"]);
local z_dodatkowymi_sprawdzeniami=not(parametry_modul.CzyTak(frame.args["bez dodatkowych sprawdzeń"]) or parametry_modul.CzyTak(pf.args["bez dodatkowych sprawdzeń"]));
local PakujArgumentyRamki = function(args)
local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"];
if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end;
local tabelka1={};
for nazwa_parametru,_ in pairs(args)do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
tabelka1[nazwa_parametru]=true;
end;
end;
local tabelka2=(args["bez argumentów szablonu"]) and ramka_modul.RozpakujArgumenty(args["bez argumentów szablonu"]);
local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2);
local tablica_mikroszablonow={
[";"]="{{+}}",
};
local str="";
for name,_ in pairs(tabelka) do
str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow);
end;
return str;
end;
if(czy_przekazac_parametry_rodzica)then
if(z_dodatkowymi_sprawdzeniami)then
local str=ramka_modul.PakujParametry(pf.args);
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"]=PakujArgumentyRamki(frame.args);
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
else
local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]);
if(z_argumentami_najwyzszego_rodzica)then
local potomek=parametry_modul.CzyTak(pf.args["potomek"]);
if(potomek)then
local parametry_rodzic=pf.args["parametry rodzica"];
if(parametry_rodzic)then
if(z_dodatkowymi_sprawdzeniami)then
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"]=PakujArgumentyRamki(frame.args);
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
end;
end;
end;
local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"];
if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
end;
end;
local czy_bez_argomentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]);
local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]);
local pudelko_modul=require("Module:Pudełko");
for nazwa_parametru,wartosc_parametru in pairs(pf.args) do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru])
and(not tabela_bez_argumentow[nazwa_parametru])
and((not czy_bez_argomentow_nienazwanych_rodzica)or((czy_bez_argomentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru)))
))then
local czy_dodac_do_parametrow;
if czy_parametry_pudelka then
local czy_dodac_do_parametrow=(mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$")
and wartosc_parametru
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$")
and wartosc_parametru
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru));
if(czy_dodac_do_parametrow)then
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
else
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
end;
end;
if(co_ma_wywolac==0)then
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
elseif(co_ma_wywolac==1)then
local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera};
local funkcja=frame.args["Funkcja"];
return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2);
elseif(co_ma_wywolac==2)then
return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
else
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
end;
end;
local function Skladaj_lancuch(frame,tab_lancuch,minimum,maksimum)
local parametry_modul=require("Module:Parametry");
local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]);
local akapit=czy_akapit and "\n\n" or "";
local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or "";
local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]);
local nowa_linia=czy_nowa_linia and "\n" or "";
local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]);
local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]);
local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]);
local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]);
local lancuch_znakow="";
local koniec=#tab_lancuch;
for i=1,koniec,1 do
local lancuch=tab_lancuch[i];
lancuch,_=mw.ustring.gsub(lancuch,"{{min}}",minimum);
lancuch,_=mw.ustring.gsub(lancuch,"{{max}}",maksimum);
if(not wyliczanka)then
lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and " - " or "")));
else
lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or " i "));
end;
lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch;
end;
if(warunkowe)then
local ramka_modul=require("Module:Ramka")
return ramka_modul.InstrukcjeWarunkowe(lancuch_znakow,true);
else
return lancuch_znakow;
end;
end;
return {
InstrukcjeWarunkowe = function(ciag,derektywy_specjalne)
local ciag_warunkowe_fun=function(s)
local function ParserWiki(s,wywolanie)
local czy_parser=mw.ustring.match(s,wywolanie);
if(czy_parser)then
return mw.getCurrentFrame():preprocess(s);
end;
end
return ParserWiki(s,"^({{%s*#if:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifeq:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#switch:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexpr:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#iferror:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexist:[^|]+|[^{}]*}})$")
or s;
end;
local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun);
if(derektywy_specjalne)then
local tab_zamieniane={
["__!__"]="|",
["__!!__"]="||",
["__(__"]="{",
["__((__"]="{{",
["__(((__"]="{{{",
["__)__"]="}",
["__))__"]="}}",
["__)))__"]="}}}",
["__!(__"]="[",
["__!((__"]="[[",
["__)!__"]="]",
["__))!__"]="]]",
};
ciag=mw.ustring.gsub(ciag,"__[^_]+__",tab_zamieniane);
return ciag;
end;
return ciag;
end;
RozpakujArgumenty = function(zmienna_z_argumentami)
local tablica_mikroszablonow={
["{{+}}"]=";",
};
local tabela_bez_argumentow={};
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_argumentami))then
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local podlancuch;
for podlancuch in iter do
podlancuch=mw.text.trim(podlancuch);
local liczba=tonumber(podlancuch);
tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true;
end;
end;
return tabela_bez_argumentow;
end;
PakujParametry = function(args)
local str="";
local znak_127=mw.ustring.char(127);
for name,value in pairs(args)do
str=str..((str~="")and (znak_127.."'\"`UNIQ--RAMKA-00000001-QINU`\"'"..znak_127) or "")..name..(znak_127.."'\"`UNIQ--RAMKA-00000002-QINU`\"'"..znak_127)..value;
end;
return str;
end;
RozpakujParametry = function (zmienna_z_parametrami)
local tabela_parametrow_rodzica={};
local szablon;
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_parametrami))then
local znak_127=mw.ustring.char(127);
local rodzic_table=mw.text.split(zmienna_z_parametrami,znak_127.."'\"`UNIQ--RAMKA-00000001-QINU`\"'"..znak_127,true);
for i=1,#rodzic_table,1 do
local element=rodzic_table[i];
local tab=mw.text.split(element,znak_127.."'\"`UNIQ--RAMKA-00000002-QINU`\"'"..znak_127,true)
local index=mw.text.trim(tab[1]);
wartosc=mw.text.trim(tab[2]);
index=tonumber(index) or index;
tabela_parametrow_rodzica[index]=wartosc;
end;
end;
return tabela_parametrow_rodzica;
end;
["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end,
["Log"] = function(frame)
local wikitekst=frame.args[1];
mw.log(wikitekst);
return wikitekst;
end;
["Szablon"] = function(frame)
return SzablonModulParserWywolanie(frame,0);
end,
["Moduł"] = function(frame)
return SzablonModulParserWywolanie(frame, 1);
end,
["Parser"] = function(frame)
return SzablonModulParserWywolanie(frame, 2);
end,
["OpakujKategorie"] = function(frame)
local pf=frame:getParent();
local wikikod=frame.args[1] or pf.args[1];
local _;
wikikod,_=mw.ustring.gsub(wikikod,"__NOINDEX__","")
local bez_kategorii=frame.args["bez kategorii wikikodu"] or pf.args["bez kategorii wikikodu"];
local z_nazwa_sortowania=frame.args["z nazwą sortowania"] or pf.args["z nazwą sortowania"];
local category;
local tablica_category={};
local iterator1=mw.ustring.gmatch(wikikod,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*[^%[%]]+%s*%]%]");
local iterator2=mw.ustring.gmatch(wikikod,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*[^%[%]]+%s*%]%]");
local parametry_modul=require("Module:Parametry");
local function Nazwa_kategorii(category)
local nazwa=mw.ustring.match(category,"^%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|]*)")
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
else
nazwa=mw.ustring.match(category,"^%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|]*)");
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
end;
end;
return nil;
end;
local sprawdz_modul=require("Module:Sprawdź");
local nazwa_sprawdzania_parametrow_szablonu=sprawdz_modul["NazwaKategoriiSprawdzaniaParametrówSzablonu"]();
for category in iterator1 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
for category in iterator2 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
local parametry_modul=require("Module:Parametry");
if(not parametry_modul["CzySąElementyTablicy"](tablica_category))then return wikikod;end;
wikikod=mw.ustring.gsub(wikikod,"(%[%[%s*[^%[%]]+%s*%]%])",tablica_category);
if(parametry_modul.CzyTak(bez_kategorii))then return wikikod;end;
local czy_z_nazwa_sortowania=parametry_modul.CzyTak(z_nazwa_sortowania);
local ulramka=mw.html.create('ul');
ulramka:css('margin-left','0.3em')
ulramka:css('display','inline');
local pionowa=false;
local kategorie_istnieja=frame.args["kategorie istnieją"] or pf.args["kategorie istnieją"];
local czy_kategorie_istnieja=parametry_modul.CzyTak(kategorie_istnieja);
local parametry_modul=require("Module:Parametry")
local i=1;
for nazwa,wartosc in pairs(tablica_category) do
local nazwa2;
local kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
function tag(nazwa)
local czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
while czy_tag do
nazwa=mw.ustring.gsub(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>","%1");
czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
end;
return nazwa;
end;
kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej)
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
else
local kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej);
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
end;
end;
end;
end;
if(((not czy_kategorie_istnieja)or((czy_kategorie_istnieja)and((not kategoria_istnieje)or(kategoria_istnieje~="Szablon kategoria - nieistniejąca kategoria"))))
and((not kategoria_istnieje)or(kategoria_istnieje~=nazwa_sprawdzania_parametrow_szablonu))
)then
nazwa2=parametry_modul["Odstępy"]{[1]=nazwa2,[2]="tak",};
local liramka=mw.html.create('li');
liramka:css('display','inline');
liramka:css('white-space','normal');
if(pionowa)then
liramka:css('border-left','1px solid #a2a9b1');
liramka:css('margin-left','0.4em')
liramka:css('padding-left','0.4em')
pionowa=true;
else
pionowa=true;
end;
liramka:wikitext(nazwa2);
ulramka:node(liramka);
end;
end;
local kategorie="[[Specjalna:Kategorie|Kategorie]]:"
local divramka=mw.html.create('div');
divramka:css('width', 'auto' );
divramka:css('min-height', 'auto');
divramka:css('font-size','1em');
divramka:css('border','1px solid #a2a9b1');
divramka:css('background-color','#f8f9fa');
divramka:css('text-align','left');
divramka:css('padding','5px')
divramka:css('margin-top','0.5em');
divramka:css('margin-bottom','0.5em');
divramka:css('display','flex');
divramka:css('flex-direction','row')
local divramka2=mw.html.create('div');
divramka2:wikitext(kategorie);
divramka2:node(ulramka);
divramka:node(divramka2);
return wikikod..'\n'..tostring(divramka:allDone());
end,
["Powtarzaj"] = function(frame)
local pf=frame:getParent();
local parametry_modul=require("Moduł:Parametry");
local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]);
local tabela={};
local zacznij_nazwane;
local parametry_modul=require("Module:Parametry");
if(czy_parametry)then
local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false);
local czy=true;
for znaczenia in iter do
znaczenia=mw.text.trim(znaczenia);
local czy_omijac=parametry_modul.CzyTak(znaczenia);
if(czy_omijac)then
if(czy)then
zacznij_nazwane=tonumber(znaczenia);
czy=false;
if(not zacznij_nazwane)then
local tab1,tab2=mw.ustring.match(znaczenia,"%s*([%w%s]+)%s*=%s*(.*)%s*$");
if(tab1 and tab2)then
local parametr_tab=mw.text.split(tab2,"%s*,%s*",false);
tabela[parametry_modul["Odstępy"]{[1]=tab1,[2]="tak",}]=parametr_tab;
else
tabela[parametry_modul["Odstępy"]{[1]=znaczenia,[2]="tak",}]={};
end;
zacznij_nazwane=0;
end;
else
local tab1,tab2=mw.ustring.match(znaczenia,"%s*([%w%s]+)%s*=%s*(.*)%s*$");
if(tab1 and tab2)then
local parametr_tab=mw.text.split(tab2,"%s*,%s*",false);
tabela[parametry_modul["Odstępy"]{[1]=tab1,[2]="tak",}]=parametr_tab;
else
tabela[parametry_modul["Odstępy"]{[1]=znaczenia,[2]="tak",}]={};
end;
end;
end;
end;
end;
if(not zacznij_nazwane)then zacznij_nazwane=0;end;
function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana)
local args=pf.args;
local maksymalna_liczba_nazwy_danego_parametru=0;
for nazwa_parametru, wartosc_parametru in pairs(args)do
local czy_jedynka=false;
if(type(nazwa_parametru)=="string")then
local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%s]*%a)(%s?)(%d+)$");
if(not nazwa_podstawy_parametru and not spacja and not liczba)then
nazwa_podstawy_parametru=nazwa_parametru;
spacja="";
liczba=1;
czy_jedynka=true;
end;
local subtab=tabela[nazwa_podstawy_parametru];
if(subtab)then
local nie_spacja_parametru=parametry_modul.CzyTak(subtab[1]);
local czy_z_jedynka=parametry_modul.CzyTak(subtab[2]);
liczba=tonumber(liczba) or 0;
if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
)then
if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then
maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba);
end;
end;
end;
end;
end;
return maksymalna_liczba_nazwy_danego_parametru;
end;
local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function()
local maksimum=0;
for wartosc_parametru,_ in pairs(tabela)do
if(type(wartosc_parametru)=="string")then
local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru);
maksimum=tabela[wartosc_parametru]
and math.max(maksimum,maksymalna_liczba_nazwy_danego_parametru-(tonumber(tabela[wartosc_parametru][3]) or 0))
or (tonumber(maksymalna_liczba_nazwy_danego_parametru) or 0);
end;
end;
maksimum=math.max(maksimum-zacznij_nazwane,0);
return maksimum;
end;
local zacznij_na_poczatku,skoncz_na_koncu;
local tekst_do_analizy=frame.args[1];
if(not frame.args[1])then return "(brak parametru do analizy)";end;
local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy);
if(not czy_tekst)then return "(parametr do analizy pusty)";end;
local czy_start=parametry_modul.CzyTak(frame.args["start"]);
local czy_koniec=parametry_modul.CzyTak(frame.args["koniec"]);
local zaznacz=frame.args["zaznacz"];
local tabela_zaznacz={};
if(zaznacz)then
local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false)
for liczba in iter do
tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0;
end;
end;
local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]);
local czy_ma_nazwane;
local function Wylicz_skoncz_na_koncu()
czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela);
if(czy_ma_nazwane)then
if(czy_rozne)then
local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]);
if(not maks_numer)then
return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
else
return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow();
end;
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
end;
local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu();
if(not czy_koniec)then
skoncz_na_koncu=skoncz_na_koncu_wyliczona;
else
skoncz_na_koncu=math.min(skoncz_na_koncu_wyliczona, tonumber(frame.args["koniec"]) or 0);
end;
zacznij_na_poczatku=tonumber(frame.args["start"]) or 1;
if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end;
for name, tab_par in pairs(tabela)do
local _4=tonumber(tab_par[4]);local _5=tonumber(tab_par[5]);
if(_4)then zacznij_na_poczatku=math.min(zacznij_na_poczatku,_4 or 0);end;
if(_5)then skoncz_na_koncu=math.max(skoncz_na_koncu,_5 or 0);end;
end;
local lancuch_znakow="";
local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or "";
if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end;
local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]);
local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]);
local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]);
local nie_wytnij_nazwane=parametry_modul.CzyTak(frame.args["nie wytnij nazwane"]);
local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_";
local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru)
local value=tabela[nazwa_parametru];
if(value)then
return not parametry_modul.CzyTak(value[1]),parametry_modul.CzyTak(value[2]);
end;
return true,false;
end;
if(not czy_rozne)then
if(czy_ma_nazwane)then
local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local lancuch=tekst_do_analizy;
local czy=nil;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
if(zmienne_parametrowe)then
local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik];
local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element))));
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste)))
or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu)))
or ((wytnij_puste)and (parametry_modul.CzyTak(wartosc_elementu))));
local tabelka_szablonow={
["{{".._i.."}}"]=licznik,
["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))),
};
local function fun_tabelka_szablonow(ciag)
local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}");
return tabelka_szablonow[ciag_strip] or ciag;
end;
lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow);
end;
end;
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest))) then
tab_lancuch[#tab_lancuch+1]=lancuch;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end
lancuch_znakow=Skladaj_lancuch(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_dla_bez_rozne(tabela);
else
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local element=pf.args[licznik]
local czy=(((element)and ((not wytnij)and(not wytnij_puste)))
or((wytnij)and(parametry_modul["CzyTakCiąg"](element)))
or((wytnij_puste)and(parametry_modul.CzyTak(element))));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik);
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
lancuch_znakow=Skladaj_lancuch(frame, tab_lancuch,minimum or 0,maksimum);
end;
else
local function Analizuj_z_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local czy=false;
local czy_niepuste=false;
local wytnij_ujemne=false;
local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka)
local wartosc,klucz;
if(zmienne_parametrowe)then
local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia)
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba];
local czy_jedynka=(liczba==1)and element;
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy_niepuste=czy_niepuste
or ((not nie_wytnij_nazwane)and((wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu))
or (wytnij_puste and parametry_modul.CzyTak(wartosc_elementu))));
czy=czy or wartosc_elementu;
wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or "")));
klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}";
end;
end;
local subtab=tabela[zmienne_parametrowe];
local czy_w_tabeli=subtab and tonumber(subtab[3]);
local liczba_przesuniecia=(czy_w_tabeli)and czy_w_tabeli or 0;
Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia);
end;
return klucz,wartosc;
end;
local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc)
if((wartosc)and(klucz))then
local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc);
return przetwarzane;
end;
return "";
end;
local lancuch_zaanalizowany=tekst_do_analizy;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.." %s*{{%s*".._i.._i.."+%s*}}");
if(lokalizacja)then
zmienne_parametrowe=mw.text.trim(zmienne_parametrowe);
local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka);
if(wytnij_ujemne)then break;end;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
end;
end;
if(not wytnij_ujemne)then
local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}");
czy=czy or (mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")and(not zmienna_numerowana_wikikodu))or((zmienna_numerowana_wikikodu)and(pf.args[licznik]));
local klucz="{{%s*".._i.."%s*}}";
local wartosc=licznik;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
czy_niepuste=czy_niepuste
or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik]))
or (wytnij_puste and parametry_modul.CzyTak(pf.args[licznik]));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end;
lancuch_znakow=Skladaj_lancuch(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_z_rozne(tabela);
end;
if(#lancuch_znakow==0)then return gdy_nic;end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow;
return przetworzony_wikikod;
end,
["PowtarzajOdDo"]=function(frame)
local start=tonumber(frame.args["start"]);
local koniec=tonumber(frame.args["koniec"]);
local krok=tonumber(frame.args["krok"]) or 1;
local parametry_modul=require("Module:Parametry")
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
if((not start)or(not koniec))then return "";end;
if(krok==0)then return "";end;
if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end;
local kod=frame.args[1];
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end,
["PrzetwarzajIterującCiąg"]=function(frame)
local poziom=frame.args["ciąg"];
poziom=mw.text.trim(poziom);
local tab_poziom=mw.text.split(poziom,"%s*;%s*",false);
local len_tab_poziom=#tab_poziom;
local start=1;local koniec=len_tab_poziom;local krok=1;
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
local parametry_modul=require("Module:Parametry");
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
local kod=frame.args[1];
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local tabela_microszablonow2={
["{{_}}"]=licznik,
["{{ciąg}}"]=tab_poziom[licznik];
};
local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end,
["PowtarzajWedług"] = function(frame)
local wybrany_wzor=frame.args["wzór"];
local parametry_modul=require("Module:Parametry")
local czy_link=parametry_modul.CzyTak(frame.args["link"]);
local ramka_modul=require("Module:Ramka");
local liczba_list=ramka_modul["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}};
local lancuch="";
local linki_modul=require("Module:S");
for i=1,liczba_list,1 do
local wybrany_link_lub_bez;
local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i));
if czy_link then
wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez};
end;
lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez;
end;
return lancuch;
end;
["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
licznik=start;
local strona=frame.args["wzór"];
while true do
local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik);
local title=mw.title.makeTitle('',strona2);
if((not title) or (not title.exists))then
return licznik-1;
end;
licznik=licznik+1;
end;
end,
}
cizvdl84csxwonrdqnm1ea6ekye3uku
438586
438585
2022-08-23T14:56:31Z
Persino
2851
Scribunto
text/plain
function SzablonModulParserWywolanie(frame, co_ma_wywolac)
local pf=frame:getParent();
local nazwa_szablonu_modulu_lub_parsera="Nazwa";
local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera];
local argumenty_szablonu_modulu_lub_parsera={};
local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={};
local bez_parametrow={[nazwa_szablonu_modulu_lub_parsera]=true,
["bez argumentów rodzica"]=true,
["nazwa szablonu rodzica"]=true,
["bez argumentów nienazwanych rodzica"]=true,
["potomek"]=true,
["nie potomek"]=true,
["parametry rodzica"]=true,
["zmienna z parametrami rodzica"]=true,
["zmienna z argumentami ramki"]=true,
["zmienna z nazwą szablonu rodzica"]=true,
["parametry funkcji modułu pudełek"]=true,
};
if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end;
for nazwa_parametru,wartosc_parametru in pairs(frame.args) do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru;
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
local ramka_modul=require("Module:Ramka");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tabela_bez_argumentow=ramka_modul.RozpakujArgumenty(frame.args["bez argumentów rodzica"]);
local czy_przekazac_parametry_rodzica=parametry_modul.CzyTak(frame.args["zmienna z parametrami rodzica"]);
local z_dodatkowymi_sprawdzeniami=not(parametry_modul.CzyTak(frame.args["bez dodatkowych sprawdzeń"]) or parametry_modul.CzyTak(pf.args["bez dodatkowych sprawdzeń"]));
local PakujArgumentyRamki = function(args)
local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"];
if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end;
local tabelka1={};
for nazwa_parametru,_ in pairs(args)do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
tabelka1[nazwa_parametru]=true;
end;
end;
local tabelka2=(args["bez argumentów szablonu"]) and ramka_modul.RozpakujArgumenty(args["bez argumentów szablonu"]);
local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2);
local tablica_mikroszablonow={
[";"]="{{+}}",
};
local str="";
for name,_ in pairs(tabelka) do
str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow);
end;
return str;
end;
if(czy_przekazac_parametry_rodzica)then
if(z_dodatkowymi_sprawdzeniami)then
local str=ramka_modul.PakujParametry(pf.args);
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"]=PakujArgumentyRamki(frame.args);
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
else
local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]);
if(z_argumentami_najwyzszego_rodzica)then
local potomek=parametry_modul.CzyTak(pf.args["potomek"]);
if(potomek)then
local parametry_rodzic=pf.args["parametry rodzica"];
if(parametry_rodzic)then
if(z_dodatkowymi_sprawdzeniami)then
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"]=PakujArgumentyRamki(frame.args);
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
end;
end;
end;
local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"];
if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
end;
end;
local czy_bez_argomentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]);
local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]);
local pudelko_modul=require("Module:Pudełko");
for nazwa_parametru,wartosc_parametru in pairs(pf.args) do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru])
and(not tabela_bez_argumentow[nazwa_parametru])
and((not czy_bez_argomentow_nienazwanych_rodzica)or((czy_bez_argomentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru)))
))then
local czy_dodac_do_parametrow;
if czy_parametry_pudelka then
local czy_dodac_do_parametrow=(mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$")
and wartosc_parametru
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$")
and wartosc_parametru
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru));
if(czy_dodac_do_parametrow)then
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
else
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
end;
end;
if(co_ma_wywolac==0)then
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
elseif(co_ma_wywolac==1)then
local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera};
local funkcja=frame.args["Funkcja"];
return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2);
elseif(co_ma_wywolac==2)then
return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
else
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
end;
end;
local function Skladaj_lancuch(frame,tab_lancuch,minimum,maksimum)
local parametry_modul=require("Module:Parametry");
local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]);
local akapit=czy_akapit and "\n\n" or "";
local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or "";
local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]);
local nowa_linia=czy_nowa_linia and "\n" or "";
local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]);
local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]);
local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]);
local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]);
local lancuch_znakow="";
local koniec=#tab_lancuch;
for i=1,koniec,1 do
local lancuch=tab_lancuch[i];
lancuch,_=mw.ustring.gsub(lancuch,"{{min}}",minimum);
lancuch,_=mw.ustring.gsub(lancuch,"{{max}}",maksimum);
if(not wyliczanka)then
lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and " - " or "")));
else
lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or " i "));
end;
lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch;
end;
if(warunkowe)then
local ramka_modul=require("Module:Ramka")
return ramka_modul.InstrukcjeWarunkowe(lancuch_znakow,true);
else
return lancuch_znakow;
end;
end;
return {
InstrukcjeWarunkowe = function(ciag,derektywy_specjalne)
local ciag_warunkowe_fun=function(s)
local function ParserWiki(s,wywolanie)
local czy_parser=mw.ustring.match(s,wywolanie);
if(czy_parser)then
return mw.getCurrentFrame():preprocess(s);
end;
end
return ParserWiki(s,"^({{%s*#if:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifeq:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#switch:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexpr:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#iferror:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexist:[^|]+|[^{}]*}})$")
or s;
end;
local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun);
if(derektywy_specjalne)then
local tab_zamieniane={
["__!__"]="|",
["__!!__"]="||",
["__(__"]="{",
["__((__"]="{{",
["__(((__"]="{{{",
["__)__"]="}",
["__))__"]="}}",
["__)))__"]="}}}",
["__!(__"]="[",
["__!((__"]="[[",
["__)!__"]="]",
["__))!__"]="]]",
};
ciag=mw.ustring.gsub(ciag,"__[^_]+__",tab_zamieniane);
return ciag;
end;
return ciag;
end;
RozpakujArgumenty = function(zmienna_z_argumentami)
local tablica_mikroszablonow={
["{{+}}"]=";",
};
local tabela_bez_argumentow={};
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_argumentami))then
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local podlancuch;
for podlancuch in iter do
podlancuch=mw.text.trim(podlancuch);
local liczba=tonumber(podlancuch);
tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true;
end;
end;
return tabela_bez_argumentow;
end;
PakujParametry = function(args)
local str="";
local znak_127=mw.ustring.char(127);
for name,value in pairs(args)do
str=str..((str~="")and (znak_127.."'\"`UNIQ--RAMKA-00000001-QINU`\"'"..znak_127) or "")..name..(znak_127.."'\"`UNIQ--RAMKA-00000002-QINU`\"'"..znak_127)..value;
end;
return str;
end;
RozpakujParametry = function (zmienna_z_parametrami)
local tabela_parametrow_rodzica={};
local szablon;
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_parametrami))then
local znak_127=mw.ustring.char(127);
local rodzic_table=mw.text.split(zmienna_z_parametrami,znak_127.."'\"`UNIQ--RAMKA-00000001-QINU`\"'"..znak_127,true);
for i=1,#rodzic_table,1 do
local element=rodzic_table[i];
local tab=mw.text.split(element,znak_127.."'\"`UNIQ--RAMKA-00000002-QINU`\"'"..znak_127,true)
local index=mw.text.trim(tab[1]);
wartosc=mw.text.trim(tab[2]);
index=tonumber(index) or index;
tabela_parametrow_rodzica[index]=wartosc;
end;
end;
return tabela_parametrow_rodzica;
end;
["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end,
["Log"] = function(frame)
local wikitekst=frame.args[1];
mw.log(wikitekst);
return wikitekst;
end;
["Szablon"] = function(frame)
return SzablonModulParserWywolanie(frame,0);
end,
["Moduł"] = function(frame)
return SzablonModulParserWywolanie(frame, 1);
end,
["Parser"] = function(frame)
return SzablonModulParserWywolanie(frame, 2);
end,
["OpakujKategorie"] = function(frame)
local pf=frame:getParent();
local wikikod=frame.args[1] or pf.args[1];
local _;
wikikod,_=mw.ustring.gsub(wikikod,"__NOINDEX__","")
local bez_kategorii=frame.args["bez kategorii wikikodu"] or pf.args["bez kategorii wikikodu"];
local z_nazwa_sortowania=frame.args["z nazwą sortowania"] or pf.args["z nazwą sortowania"];
local category;
local tablica_category={};
local iterator1=mw.ustring.gmatch(wikikod,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*[^%[%]]+%s*%]%]");
local iterator2=mw.ustring.gmatch(wikikod,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*[^%[%]]+%s*%]%]");
local parametry_modul=require("Module:Parametry");
local function Nazwa_kategorii(category)
local nazwa=mw.ustring.match(category,"^%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|]*)")
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
else
nazwa=mw.ustring.match(category,"^%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|]*)");
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
end;
end;
return nil;
end;
local sprawdz_modul=require("Module:Sprawdź");
local nazwa_sprawdzania_parametrow_szablonu=sprawdz_modul["NazwaKategoriiSprawdzaniaParametrówSzablonu"]();
for category in iterator1 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
for category in iterator2 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
local parametry_modul=require("Module:Parametry");
if(not parametry_modul["CzySąElementyTablicy"](tablica_category))then return wikikod;end;
wikikod=mw.ustring.gsub(wikikod,"(%[%[%s*[^%[%]]+%s*%]%])",tablica_category);
if(parametry_modul.CzyTak(bez_kategorii))then return wikikod;end;
local czy_z_nazwa_sortowania=parametry_modul.CzyTak(z_nazwa_sortowania);
local ulramka=mw.html.create('ul');
ulramka:css('margin-left','0.3em')
ulramka:css('display','inline');
local pionowa=false;
local kategorie_istnieja=frame.args["kategorie istnieją"] or pf.args["kategorie istnieją"];
local czy_kategorie_istnieja=parametry_modul.CzyTak(kategorie_istnieja);
local parametry_modul=require("Module:Parametry")
local i=1;
for nazwa,wartosc in pairs(tablica_category) do
local nazwa2;
local kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
function tag(nazwa)
local czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
while czy_tag do
nazwa=mw.ustring.gsub(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>","%1");
czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
end;
return nazwa;
end;
kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej)
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
else
local kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej);
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
end;
end;
end;
end;
if(((not czy_kategorie_istnieja)or((czy_kategorie_istnieja)and((not kategoria_istnieje)or(kategoria_istnieje~="Szablon kategoria - nieistniejąca kategoria"))))
and((not kategoria_istnieje)or(kategoria_istnieje~=nazwa_sprawdzania_parametrow_szablonu))
)then
nazwa2=parametry_modul["Odstępy"]{[1]=nazwa2,[2]="tak",};
local liramka=mw.html.create('li');
liramka:css('display','inline');
liramka:css('white-space','normal');
if(pionowa)then
liramka:css('border-left','1px solid #a2a9b1');
liramka:css('margin-left','0.4em')
liramka:css('padding-left','0.4em')
pionowa=true;
else
pionowa=true;
end;
liramka:wikitext(nazwa2);
ulramka:node(liramka);
end;
end;
local kategorie="[[Specjalna:Kategorie|Kategorie]]:"
local divramka=mw.html.create('div');
divramka:css('width', 'auto' );
divramka:css('min-height', 'auto');
divramka:css('font-size','1em');
divramka:css('border','1px solid #a2a9b1');
divramka:css('background-color','#f8f9fa');
divramka:css('text-align','left');
divramka:css('padding','5px')
divramka:css('margin-top','0.5em');
divramka:css('margin-bottom','0.5em');
divramka:css('display','flex');
divramka:css('flex-direction','row')
local divramka2=mw.html.create('div');
divramka2:wikitext(kategorie);
divramka2:node(ulramka);
divramka:node(divramka2);
return wikikod..'\n'..tostring(divramka:allDone());
end,
["Powtarzaj"] = function(frame)
local pf=frame:getParent();
local parametry_modul=require("Moduł:Parametry");
local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]);
local tabela={};
local zacznij_nazwane;
local parametry_modul=require("Module:Parametry");
if(czy_parametry)then
local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false);
local czy=true;
for znaczenia in iter do
znaczenia=mw.text.trim(znaczenia);
local czy_omijac=parametry_modul.CzyTak(znaczenia);
if(czy_omijac)then
if(czy)then
zacznij_nazwane=tonumber(znaczenia);
czy=false;
if(not zacznij_nazwane)then
local tab1,tab2=mw.ustring.match(znaczenia,"%s*([%w%s]+)%s*=%s*(.*)%s*$");
if(tab1 and tab2)then
local parametr_tab=mw.text.split(tab2,"%s*,%s*",false);
tabela[parametry_modul["Odstępy"]{[1]=tab1,[2]="tak",}]=parametr_tab;
else
tabela[parametry_modul["Odstępy"]{[1]=znaczenia,[2]="tak",}]={};
end;
zacznij_nazwane=0;
end;
else
local tab1,tab2=mw.ustring.match(znaczenia,"%s*([%w%s]+)%s*=%s*(.*)%s*$");
if(tab1 and tab2)then
local parametr_tab=mw.text.split(tab2,"%s*,%s*",false);
tabela[parametry_modul["Odstępy"]{[1]=tab1,[2]="tak",}]=parametr_tab;
else
tabela[parametry_modul["Odstępy"]{[1]=znaczenia,[2]="tak",}]={};
end;
end;
end;
end;
end;
if(not zacznij_nazwane)then zacznij_nazwane=0;end;
function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana)
local args=pf.args;
local maksymalna_liczba_nazwy_danego_parametru=0;
for nazwa_parametru, wartosc_parametru in pairs(args)do
local czy_jedynka=false;
if(type(nazwa_parametru)=="string")then
local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%s]*%a)(%s?)(%d+)$");
if(not nazwa_podstawy_parametru and not spacja and not liczba)then
nazwa_podstawy_parametru=nazwa_parametru;
spacja="";
liczba=1;
czy_jedynka=true;
end;
local subtab=tabela[nazwa_podstawy_parametru];
if(subtab)then
local nie_spacja_parametru=parametry_modul.CzyTak(subtab[1]);
local czy_z_jedynka=parametry_modul.CzyTak(subtab[2]);
liczba=tonumber(liczba) or 0;
if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
)then
if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then
maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba);
end;
end;
end;
end;
end;
return maksymalna_liczba_nazwy_danego_parametru;
end;
local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function()
local maksimum=0;
for wartosc_parametru,_ in pairs(tabela)do
if(type(wartosc_parametru)=="string")then
local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru);
maksimum=tabela[wartosc_parametru]
and math.max(maksimum,maksymalna_liczba_nazwy_danego_parametru-(tonumber(tabela[wartosc_parametru][3]) or 0))
or (tonumber(maksymalna_liczba_nazwy_danego_parametru) or 0);
end;
end;
maksimum=math.max(maksimum-zacznij_nazwane,0);
return maksimum;
end;
local zacznij_na_poczatku,skoncz_na_koncu;
local tekst_do_analizy=frame.args[1];
if(not frame.args[1])then return "(brak parametru do analizy)";end;
local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy);
if(not czy_tekst)then return "(parametr do analizy pusty)";end;
local czy_start=parametry_modul.CzyTak(frame.args["start"]);
local czy_koniec=parametry_modul.CzyTak(frame.args["koniec"]);
local zaznacz=frame.args["zaznacz"];
local tabela_zaznacz={};
if(zaznacz)then
local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false)
for liczba in iter do
tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0;
end;
end;
local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]);
local czy_ma_nazwane;
local function Wylicz_skoncz_na_koncu()
czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela);
if(czy_ma_nazwane)then
if(czy_rozne)then
local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]);
if(not maks_numer)then
return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
else
return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow();
end;
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
end;
local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu();
if(not czy_koniec)then
skoncz_na_koncu=skoncz_na_koncu_wyliczona;
else
skoncz_na_koncu=math.min(skoncz_na_koncu_wyliczona, tonumber(frame.args["koniec"]) or 0);
end;
zacznij_na_poczatku=tonumber(frame.args["start"]) or 1;
if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end;
for name, tab_par in pairs(tabela)do
local _4=tonumber(tab_par[4]);local _5=tonumber(tab_par[5]);
if(_4)then zacznij_na_poczatku=math.min(zacznij_na_poczatku,_4 or 0);end;
if(_5)then skoncz_na_koncu=math.max(skoncz_na_koncu,_5 or 0);end;
end;
local lancuch_znakow="";
local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or "";
if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end;
local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]);
local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]);
local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]);
local nie_wytnij_nazwane=parametry_modul.CzyTak(frame.args["nie wytnij nazwane"]);
local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_";
local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru)
local value=tabela[nazwa_parametru];
if(value)then
return not parametry_modul.CzyTak(value[1]),parametry_modul.CzyTak(value[2]);
end;
return true,false;
end;
if(not czy_rozne)then
if(czy_ma_nazwane)then
local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local lancuch=tekst_do_analizy;
local czy=nil;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
if(zmienne_parametrowe)then
local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik];
local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element))));
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste)))
or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu)))
or ((wytnij_puste)and (parametry_modul.CzyTak(wartosc_elementu))));
local tabelka_szablonow={
["{{".._i.."}}"]=licznik,
["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))),
};
local function fun_tabelka_szablonow(ciag)
local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}");
return tabelka_szablonow[ciag_strip] or ciag;
end;
lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow);
end;
end;
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest))) then
tab_lancuch[#tab_lancuch+1]=lancuch;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end
lancuch_znakow=Skladaj_lancuch(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_dla_bez_rozne(tabela);
else
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local element=pf.args[licznik]
local czy=(((element)and ((not wytnij)and(not wytnij_puste)))
or((wytnij)and(parametry_modul["CzyTakCiąg"](element)))
or((wytnij_puste)and(parametry_modul.CzyTak(element))));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik);
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
lancuch_znakow=Skladaj_lancuch(frame, tab_lancuch,minimum or 0,maksimum);
end;
else
local function Analizuj_z_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local czy=false;
local czy_niepuste=false;
local wytnij_ujemne=false;
local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka)
local wartosc,klucz;
if(zmienne_parametrowe)then
local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia)
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba];
local czy_jedynka=(liczba==1)and element;
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy_niepuste=czy_niepuste
or ((not nie_wytnij_nazwane)and((wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu))
or (wytnij_puste and parametry_modul.CzyTak(wartosc_elementu))) or wartosc_elementu);
czy=czy or wartosc_elementu;
wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or "")));
klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}";
end;
end;
local subtab=tabela[zmienne_parametrowe];
local czy_w_tabeli=subtab and tonumber(subtab[3]);
local liczba_przesuniecia=(czy_w_tabeli)and czy_w_tabeli or 0;
Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia);
end;
return klucz,wartosc;
end;
local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc)
if((wartosc)and(klucz))then
local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc);
return przetwarzane;
end;
return "";
end;
local lancuch_zaanalizowany=tekst_do_analizy;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.." %s*{{%s*".._i.._i.."+%s*}}");
if(lokalizacja)then
zmienne_parametrowe=mw.text.trim(zmienne_parametrowe);
local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka);
if(wytnij_ujemne)then break;end;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
end;
end;
if(not wytnij_ujemne)then
local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}");
czy=czy or (mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")and(not zmienna_numerowana_wikikodu))or((zmienna_numerowana_wikikodu)and(pf.args[licznik]));
local klucz="{{%s*".._i.."%s*}}";
local wartosc=licznik;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
czy_niepuste=czy_niepuste
or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik]))
or (wytnij_puste and parametry_modul.CzyTak(pf.args[licznik]));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end;
lancuch_znakow=Skladaj_lancuch(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_z_rozne(tabela);
end;
if(#lancuch_znakow==0)then return gdy_nic;end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow;
return przetworzony_wikikod;
end,
["PowtarzajOdDo"]=function(frame)
local start=tonumber(frame.args["start"]);
local koniec=tonumber(frame.args["koniec"]);
local krok=tonumber(frame.args["krok"]) or 1;
local parametry_modul=require("Module:Parametry")
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
if((not start)or(not koniec))then return "";end;
if(krok==0)then return "";end;
if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end;
local kod=frame.args[1];
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end,
["PrzetwarzajIterującCiąg"]=function(frame)
local poziom=frame.args["ciąg"];
poziom=mw.text.trim(poziom);
local tab_poziom=mw.text.split(poziom,"%s*;%s*",false);
local len_tab_poziom=#tab_poziom;
local start=1;local koniec=len_tab_poziom;local krok=1;
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
local parametry_modul=require("Module:Parametry");
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
local kod=frame.args[1];
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local tabela_microszablonow2={
["{{_}}"]=licznik,
["{{ciąg}}"]=tab_poziom[licznik];
};
local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end,
["PowtarzajWedług"] = function(frame)
local wybrany_wzor=frame.args["wzór"];
local parametry_modul=require("Module:Parametry")
local czy_link=parametry_modul.CzyTak(frame.args["link"]);
local ramka_modul=require("Module:Ramka");
local liczba_list=ramka_modul["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}};
local lancuch="";
local linki_modul=require("Module:S");
for i=1,liczba_list,1 do
local wybrany_link_lub_bez;
local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i));
if czy_link then
wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez};
end;
lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez;
end;
return lancuch;
end;
["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
licznik=start;
local strona=frame.args["wzór"];
while true do
local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik);
local title=mw.title.makeTitle('',strona2);
if((not title) or (not title.exists))then
return licznik-1;
end;
licznik=licznik+1;
end;
end,
}
62t53qhb15e3fr82rj6w0438nqbsih7
438587
438586
2022-08-23T15:01:46Z
Persino
2851
Scribunto
text/plain
function SzablonModulParserWywolanie(frame, co_ma_wywolac)
local pf=frame:getParent();
local nazwa_szablonu_modulu_lub_parsera="Nazwa";
local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera];
local argumenty_szablonu_modulu_lub_parsera={};
local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={};
local bez_parametrow={[nazwa_szablonu_modulu_lub_parsera]=true,
["bez argumentów rodzica"]=true,
["nazwa szablonu rodzica"]=true,
["bez argumentów nienazwanych rodzica"]=true,
["potomek"]=true,
["nie potomek"]=true,
["parametry rodzica"]=true,
["zmienna z parametrami rodzica"]=true,
["zmienna z argumentami ramki"]=true,
["zmienna z nazwą szablonu rodzica"]=true,
["parametry funkcji modułu pudełek"]=true,
};
if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end;
for nazwa_parametru,wartosc_parametru in pairs(frame.args) do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru;
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
local ramka_modul=require("Module:Ramka");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tabela_bez_argumentow=ramka_modul.RozpakujArgumenty(frame.args["bez argumentów rodzica"]);
local czy_przekazac_parametry_rodzica=parametry_modul.CzyTak(frame.args["zmienna z parametrami rodzica"]);
local z_dodatkowymi_sprawdzeniami=not(parametry_modul.CzyTak(frame.args["bez dodatkowych sprawdzeń"]) or parametry_modul.CzyTak(pf.args["bez dodatkowych sprawdzeń"]));
local PakujArgumentyRamki = function(args)
local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"];
if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end;
local tabelka1={};
for nazwa_parametru,_ in pairs(args)do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
tabelka1[nazwa_parametru]=true;
end;
end;
local tabelka2=(args["bez argumentów szablonu"]) and ramka_modul.RozpakujArgumenty(args["bez argumentów szablonu"]);
local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2);
local tablica_mikroszablonow={
[";"]="{{+}}",
};
local str="";
for name,_ in pairs(tabelka) do
str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow);
end;
return str;
end;
if(czy_przekazac_parametry_rodzica)then
if(z_dodatkowymi_sprawdzeniami)then
local str=ramka_modul.PakujParametry(pf.args);
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"]=PakujArgumentyRamki(frame.args);
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
else
local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]);
if(z_argumentami_najwyzszego_rodzica)then
local potomek=parametry_modul.CzyTak(pf.args["potomek"]);
if(potomek)then
local parametry_rodzic=pf.args["parametry rodzica"];
if(parametry_rodzic)then
if(z_dodatkowymi_sprawdzeniami)then
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"]=PakujArgumentyRamki(frame.args);
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
end;
end;
end;
local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"];
if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or techniczne_modul.NazwaSzablonu(pf:getTitle());
end;
end;
local czy_bez_argomentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]);
local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]);
local pudelko_modul=require("Module:Pudełko");
for nazwa_parametru,wartosc_parametru in pairs(pf.args) do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])))then
if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru])
and(not tabela_bez_argumentow[nazwa_parametru])
and((not czy_bez_argomentow_nienazwanych_rodzica)or((czy_bez_argomentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru)))
))then
local czy_dodac_do_parametrow;
if czy_parametry_pudelka then
local czy_dodac_do_parametrow=(mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$")
and wartosc_parametru
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$")
and wartosc_parametru
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki$")
and wartosc_parametru
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru));
if(czy_dodac_do_parametrow)then
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
else
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
end;
end;
if(co_ma_wywolac==0)then
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
elseif(co_ma_wywolac==1)then
local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera};
local funkcja=frame.args["Funkcja"];
return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2);
elseif(co_ma_wywolac==2)then
return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
else
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
end;
end;
local function Skladaj_lancuch(frame,tab_lancuch,minimum,maksimum)
local parametry_modul=require("Module:Parametry");
local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]);
local akapit=czy_akapit and "\n\n" or "";
local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or "";
local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]);
local nowa_linia=czy_nowa_linia and "\n" or "";
local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]);
local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]);
local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]);
local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]);
local lancuch_znakow="";
local koniec=#tab_lancuch;
for i=1,koniec,1 do
local lancuch=tab_lancuch[i];
lancuch,_=mw.ustring.gsub(lancuch,"{{min}}",minimum);
lancuch,_=mw.ustring.gsub(lancuch,"{{max}}",maksimum);
if(not wyliczanka)then
lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and " - " or "")));
else
lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or " i "));
end;
lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch;
end;
if(warunkowe)then
local ramka_modul=require("Module:Ramka")
return ramka_modul.InstrukcjeWarunkowe(lancuch_znakow,true);
else
return lancuch_znakow;
end;
end;
return {
InstrukcjeWarunkowe = function(ciag,derektywy_specjalne)
local ciag_warunkowe_fun=function(s)
local function ParserWiki(s,wywolanie)
local czy_parser=mw.ustring.match(s,wywolanie);
if(czy_parser)then
return mw.getCurrentFrame():preprocess(s);
end;
end
return ParserWiki(s,"^({{%s*#if:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifeq:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#switch:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexpr:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#iferror:[^|]+|[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexist:[^|]+|[^{}]*}})$")
or s;
end;
local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun);
if(derektywy_specjalne)then
local tab_zamieniane={
["__!__"]="|",
["__!!__"]="||",
["__(__"]="{",
["__((__"]="{{",
["__(((__"]="{{{",
["__)__"]="}",
["__))__"]="}}",
["__)))__"]="}}}",
["__!(__"]="[",
["__!((__"]="[[",
["__)!__"]="]",
["__))!__"]="]]",
};
ciag=mw.ustring.gsub(ciag,"__[^_]+__",tab_zamieniane);
return ciag;
end;
return ciag;
end;
RozpakujArgumenty = function(zmienna_z_argumentami)
local tablica_mikroszablonow={
["{{+}}"]=";",
};
local tabela_bez_argumentow={};
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_argumentami))then
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local podlancuch;
for podlancuch in iter do
podlancuch=mw.text.trim(podlancuch);
local liczba=tonumber(podlancuch);
tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true;
end;
end;
return tabela_bez_argumentow;
end;
PakujParametry = function(args)
local str="";
local znak_127=mw.ustring.char(127);
for name,value in pairs(args)do
str=str..((str~="")and (znak_127.."'\"`UNIQ--RAMKA-00000001-QINU`\"'"..znak_127) or "")..name..(znak_127.."'\"`UNIQ--RAMKA-00000002-QINU`\"'"..znak_127)..value;
end;
return str;
end;
RozpakujParametry = function (zmienna_z_parametrami)
local tabela_parametrow_rodzica={};
local szablon;
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_parametrami))then
local znak_127=mw.ustring.char(127);
local rodzic_table=mw.text.split(zmienna_z_parametrami,znak_127.."'\"`UNIQ--RAMKA-00000001-QINU`\"'"..znak_127,true);
for i=1,#rodzic_table,1 do
local element=rodzic_table[i];
local tab=mw.text.split(element,znak_127.."'\"`UNIQ--RAMKA-00000002-QINU`\"'"..znak_127,true)
local index=mw.text.trim(tab[1]);
wartosc=mw.text.trim(tab[2]);
index=tonumber(index) or index;
tabela_parametrow_rodzica[index]=wartosc;
end;
end;
return tabela_parametrow_rodzica;
end;
["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end,
["Log"] = function(frame)
local wikitekst=frame.args[1];
mw.log(wikitekst);
return wikitekst;
end;
["Szablon"] = function(frame)
return SzablonModulParserWywolanie(frame,0);
end,
["Moduł"] = function(frame)
return SzablonModulParserWywolanie(frame, 1);
end,
["Parser"] = function(frame)
return SzablonModulParserWywolanie(frame, 2);
end,
["OpakujKategorie"] = function(frame)
local pf=frame:getParent();
local wikikod=frame.args[1] or pf.args[1];
local _;
wikikod,_=mw.ustring.gsub(wikikod,"__NOINDEX__","")
local bez_kategorii=frame.args["bez kategorii wikikodu"] or pf.args["bez kategorii wikikodu"];
local z_nazwa_sortowania=frame.args["z nazwą sortowania"] or pf.args["z nazwą sortowania"];
local category;
local tablica_category={};
local iterator1=mw.ustring.gmatch(wikikod,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*[^%[%]]+%s*%]%]");
local iterator2=mw.ustring.gmatch(wikikod,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*[^%[%]]+%s*%]%]");
local parametry_modul=require("Module:Parametry");
local function Nazwa_kategorii(category)
local nazwa=mw.ustring.match(category,"^%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|]*)")
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
else
nazwa=mw.ustring.match(category,"^%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|]*)");
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
end;
end;
return nil;
end;
local sprawdz_modul=require("Module:Sprawdź");
local nazwa_sprawdzania_parametrow_szablonu=sprawdz_modul["NazwaKategoriiSprawdzaniaParametrówSzablonu"]();
for category in iterator1 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
for category in iterator2 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
local parametry_modul=require("Module:Parametry");
if(not parametry_modul["CzySąElementyTablicy"](tablica_category))then return wikikod;end;
wikikod=mw.ustring.gsub(wikikod,"(%[%[%s*[^%[%]]+%s*%]%])",tablica_category);
if(parametry_modul.CzyTak(bez_kategorii))then return wikikod;end;
local czy_z_nazwa_sortowania=parametry_modul.CzyTak(z_nazwa_sortowania);
local ulramka=mw.html.create('ul');
ulramka:css('margin-left','0.3em')
ulramka:css('display','inline');
local pionowa=false;
local kategorie_istnieja=frame.args["kategorie istnieją"] or pf.args["kategorie istnieją"];
local czy_kategorie_istnieja=parametry_modul.CzyTak(kategorie_istnieja);
local parametry_modul=require("Module:Parametry")
local i=1;
for nazwa,wartosc in pairs(tablica_category) do
local nazwa2;
local kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
function tag(nazwa)
local czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
while czy_tag do
nazwa=mw.ustring.gsub(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>","%1");
czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
end;
return nazwa;
end;
kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej)
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
else
local kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej);
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
end;
end;
end;
end;
if(((not czy_kategorie_istnieja)or((czy_kategorie_istnieja)and((not kategoria_istnieje)or(kategoria_istnieje~="Szablon kategoria - nieistniejąca kategoria"))))
and((not kategoria_istnieje)or(kategoria_istnieje~=nazwa_sprawdzania_parametrow_szablonu))
)then
nazwa2=parametry_modul["Odstępy"]{[1]=nazwa2,[2]="tak",};
local liramka=mw.html.create('li');
liramka:css('display','inline');
liramka:css('white-space','normal');
if(pionowa)then
liramka:css('border-left','1px solid #a2a9b1');
liramka:css('margin-left','0.4em')
liramka:css('padding-left','0.4em')
pionowa=true;
else
pionowa=true;
end;
liramka:wikitext(nazwa2);
ulramka:node(liramka);
end;
end;
local kategorie="[[Specjalna:Kategorie|Kategorie]]:"
local divramka=mw.html.create('div');
divramka:css('width', 'auto' );
divramka:css('min-height', 'auto');
divramka:css('font-size','1em');
divramka:css('border','1px solid #a2a9b1');
divramka:css('background-color','#f8f9fa');
divramka:css('text-align','left');
divramka:css('padding','5px')
divramka:css('margin-top','0.5em');
divramka:css('margin-bottom','0.5em');
divramka:css('display','flex');
divramka:css('flex-direction','row')
local divramka2=mw.html.create('div');
divramka2:wikitext(kategorie);
divramka2:node(ulramka);
divramka:node(divramka2);
return wikikod..'\n'..tostring(divramka:allDone());
end,
["Powtarzaj"] = function(frame)
local pf=frame:getParent();
local parametry_modul=require("Moduł:Parametry");
local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]);
local tabela={};
local zacznij_nazwane;
local parametry_modul=require("Module:Parametry");
if(czy_parametry)then
local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false);
local czy=true;
for znaczenia in iter do
znaczenia=mw.text.trim(znaczenia);
local czy_omijac=parametry_modul.CzyTak(znaczenia);
if(czy_omijac)then
if(czy)then
zacznij_nazwane=tonumber(znaczenia);
czy=false;
if(not zacznij_nazwane)then
local tab1,tab2=mw.ustring.match(znaczenia,"%s*([%w%s]+)%s*=%s*(.*)%s*$");
if(tab1 and tab2)then
local parametr_tab=mw.text.split(tab2,"%s*,%s*",false);
tabela[parametry_modul["Odstępy"]{[1]=tab1,[2]="tak",}]=parametr_tab;
else
tabela[parametry_modul["Odstępy"]{[1]=znaczenia,[2]="tak",}]={};
end;
zacznij_nazwane=0;
end;
else
local tab1,tab2=mw.ustring.match(znaczenia,"%s*([%w%s]+)%s*=%s*(.*)%s*$");
if(tab1 and tab2)then
local parametr_tab=mw.text.split(tab2,"%s*,%s*",false);
tabela[parametry_modul["Odstępy"]{[1]=tab1,[2]="tak",}]=parametr_tab;
else
tabela[parametry_modul["Odstępy"]{[1]=znaczenia,[2]="tak",}]={};
end;
end;
end;
end;
end;
if(not zacznij_nazwane)then zacznij_nazwane=0;end;
function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana)
local args=pf.args;
local maksymalna_liczba_nazwy_danego_parametru=0;
for nazwa_parametru, wartosc_parametru in pairs(args)do
local czy_jedynka=false;
if(type(nazwa_parametru)=="string")then
local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%s]*%a)(%s?)(%d+)$");
if(not nazwa_podstawy_parametru and not spacja and not liczba)then
nazwa_podstawy_parametru=nazwa_parametru;
spacja="";
liczba=1;
czy_jedynka=true;
end;
local subtab=tabela[nazwa_podstawy_parametru];
if(subtab)then
local nie_spacja_parametru=parametry_modul.CzyTak(subtab[1]);
local czy_z_jedynka=parametry_modul.CzyTak(subtab[2]);
liczba=tonumber(liczba) or 0;
if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
)then
if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then
maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba);
end;
end;
end;
end;
end;
return maksymalna_liczba_nazwy_danego_parametru;
end;
local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function()
local maksimum=0;
for wartosc_parametru,_ in pairs(tabela)do
if(type(wartosc_parametru)=="string")then
local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru);
maksimum=tabela[wartosc_parametru]
and math.max(maksimum,maksymalna_liczba_nazwy_danego_parametru-(tonumber(tabela[wartosc_parametru][3]) or 0))
or (tonumber(maksymalna_liczba_nazwy_danego_parametru) or 0);
end;
end;
maksimum=math.max(maksimum-zacznij_nazwane,0);
return maksimum;
end;
local zacznij_na_poczatku,skoncz_na_koncu;
local tekst_do_analizy=frame.args[1];
if(not frame.args[1])then return "(brak parametru do analizy)";end;
local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy);
if(not czy_tekst)then return "(parametr do analizy pusty)";end;
local czy_start=parametry_modul.CzyTak(frame.args["start"]);
local czy_koniec=parametry_modul.CzyTak(frame.args["koniec"]);
local zaznacz=frame.args["zaznacz"];
local tabela_zaznacz={};
if(zaznacz)then
local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false)
for liczba in iter do
tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0;
end;
end;
local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]);
local czy_ma_nazwane;
local function Wylicz_skoncz_na_koncu()
czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela);
if(czy_ma_nazwane)then
if(czy_rozne)then
local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]);
if(not maks_numer)then
return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
else
return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow();
end;
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
end;
local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu();
if(not czy_koniec)then
skoncz_na_koncu=skoncz_na_koncu_wyliczona;
else
skoncz_na_koncu=math.min(skoncz_na_koncu_wyliczona, tonumber(frame.args["koniec"]) or 0);
end;
zacznij_na_poczatku=tonumber(frame.args["start"]) or 1;
if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end;
for name, tab_par in pairs(tabela)do
local _4=tonumber(tab_par[4]);local _5=tonumber(tab_par[5]);
if(_4)then zacznij_na_poczatku=math.min(zacznij_na_poczatku,_4 or 0);end;
if(_5)then skoncz_na_koncu=math.max(skoncz_na_koncu,_5 or 0);end;
end;
local lancuch_znakow="";
local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or "";
if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end;
local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]);
local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]);
local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]);
local nie_wytnij_nazwane=parametry_modul.CzyTak(frame.args["nie wytnij nazwane"]);
local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_";
local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru)
local value=tabela[nazwa_parametru];
if(value)then
return not parametry_modul.CzyTak(value[1]),parametry_modul.CzyTak(value[2]);
end;
return true,false;
end;
if(not czy_rozne)then
if(czy_ma_nazwane)then
local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local lancuch=tekst_do_analizy;
local czy=nil;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
if(zmienne_parametrowe)then
local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik];
local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element))));
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste)))
or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu)))
or ((wytnij_puste and not wytnij)and (parametry_modul.CzyTak(wartosc_elementu))));
local tabelka_szablonow={
["{{".._i.."}}"]=licznik,
["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))),
};
local function fun_tabelka_szablonow(ciag)
local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}");
return tabelka_szablonow[ciag_strip] or ciag;
end;
lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow);
end;
end;
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest))) then
tab_lancuch[#tab_lancuch+1]=lancuch;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end
lancuch_znakow=Skladaj_lancuch(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_dla_bez_rozne(tabela);
else
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local element=pf.args[licznik]
local czy=(((element)and ((not wytnij)and(not wytnij_puste)))
or((wytnij)and(parametry_modul["CzyTakCiąg"](element)))
or((wytnij_puste and not wytnij)and(parametry_modul.CzyTak(element))));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik);
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
lancuch_znakow=Skladaj_lancuch(frame, tab_lancuch,minimum or 0,maksimum);
end;
else
local function Analizuj_z_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local czy=false;
local czy_niepuste=false;
local wytnij_ujemne=false;
local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka)
local wartosc,klucz;
if(zmienne_parametrowe)then
local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia)
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba];
local czy_jedynka=(liczba==1)and element;
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy_niepuste=czy_niepuste
or ((not nie_wytnij_nazwane)and((wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(wartosc_elementu))) or (nie_wytnij_nazwane and wartosc_elementu));
czy=czy or wartosc_elementu;
wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or "")));
klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}";
end;
end;
local subtab=tabela[zmienne_parametrowe];
local czy_w_tabeli=subtab and tonumber(subtab[3]);
local liczba_przesuniecia=(czy_w_tabeli)and czy_w_tabeli or 0;
Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia);
end;
return klucz,wartosc;
end;
local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc)
if((wartosc)and(klucz))then
local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc);
return przetwarzane;
end;
return "";
end;
local lancuch_zaanalizowany=tekst_do_analizy;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.." %s*{{%s*".._i.._i.."+%s*}}");
if(lokalizacja)then
zmienne_parametrowe=mw.text.trim(zmienne_parametrowe);
local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka);
if(wytnij_ujemne)then break;end;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
end;
end;
if(not wytnij_ujemne)then
local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}");
czy=czy or (mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")and(not zmienna_numerowana_wikikodu))or((zmienna_numerowana_wikikodu)and(pf.args[licznik]));
local klucz="{{%s*".._i.."%s*}}";
local wartosc=licznik;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
czy_niepuste=czy_niepuste
or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik]))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(pf.args[licznik]));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end;
lancuch_znakow=Skladaj_lancuch(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_z_rozne(tabela);
end;
if(#lancuch_znakow==0)then return gdy_nic;end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow;
return przetworzony_wikikod;
end,
["PowtarzajOdDo"]=function(frame)
local start=tonumber(frame.args["start"]);
local koniec=tonumber(frame.args["koniec"]);
local krok=tonumber(frame.args["krok"]) or 1;
local parametry_modul=require("Module:Parametry")
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
if((not start)or(not koniec))then return "";end;
if(krok==0)then return "";end;
if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end;
local kod=frame.args[1];
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end,
["PrzetwarzajIterującCiąg"]=function(frame)
local poziom=frame.args["ciąg"];
poziom=mw.text.trim(poziom);
local tab_poziom=mw.text.split(poziom,"%s*;%s*",false);
local len_tab_poziom=#tab_poziom;
local start=1;local koniec=len_tab_poziom;local krok=1;
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
local parametry_modul=require("Module:Parametry");
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
local kod=frame.args[1];
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local tabela_microszablonow2={
["{{_}}"]=licznik,
["{{ciąg}}"]=tab_poziom[licznik];
};
local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end,
["PowtarzajWedług"] = function(frame)
local wybrany_wzor=frame.args["wzór"];
local parametry_modul=require("Module:Parametry")
local czy_link=parametry_modul.CzyTak(frame.args["link"]);
local ramka_modul=require("Module:Ramka");
local liczba_list=ramka_modul["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}};
local lancuch="";
local linki_modul=require("Module:S");
for i=1,liczba_list,1 do
local wybrany_link_lub_bez;
local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i));
if czy_link then
wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez};
end;
lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez;
end;
return lancuch;
end;
["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
licznik=start;
local strona=frame.args["wzór"];
while true do
local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik);
local title=mw.title.makeTitle('',strona2);
if((not title) or (not title.exists))then
return licznik-1;
end;
licznik=licznik+1;
end;
end,
}
qwejn52a98czzy1oljuctqrao5zuo34
Moduł:StronicowyParser/DalszeFunkcje
828
55009
438601
438173
2022-08-23T18:07:02Z
Persino
2851
Scribunto
text/plain
local p={};
function p.ZaczynajAnalizowacArtykulyKsiazek(self)
self.tabela_listy_danych_analizy_ksiazki={};
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu={};
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
self.tabela_listy_danych_analizy_ksiazki.problemy={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_doloczonych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu={};
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych={};
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=elementy_w_tablicy_obiekty[1];
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[wartosc]={};
end;
self.tabela_listy_danych_analizy_ksiazki.licencja={};
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe")
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"]();
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"]();
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"]();
local pelna_nazwa_ksiazki="Szablon:Podręcznik/Ustawienia/"..((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki;
local techniczne_modul=require("Module:Techniczne");
local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki.."/config",};
if(ile>0)then
local frame=mw.getCurrentFrame();
local nazwa_szablonu=techniczne_modul.NazwaSzablonu(pelna_nazwa_ksiazki);
local zastepczy=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępczy",}};
if(not mw.ustring.match(zastepczy,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.zastepczy=true;
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka zastępcza",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł zastępczy",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
local ksiazka_normalna=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul_normalny=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka_normalna,"^%s*$"))then
local strona=ksiazka_normalna..((artykul_normalny~="") and ("/"..artykul_normalny) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
else
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
local tabela_listy_danych_analizy_ksiazki2={};
local linkobiekt={};
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, true,tabela_listy_danych_analizy_ksiazki2,linkobiekt);
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki,})then
p:PrzetworzZebraneInformacje(tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.DodawanieElementowDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki)
local tabela_listy_danych_analizy_ksiazki=self.tabela_listy_danych_analizy_ksiazki.problemy;
if(not tabela_listy_danych_analizy_ksiazki[element_tablicy])then
tabela_listy_danych_analizy_ksiazki[element_tablicy]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[element_tablicy];
if(nazwa_obiektu)then
if(not tabela_listy_danych_analizy_ksiazki[nazwa_obiektu])then
tabela_listy_danych_analizy_ksiazki[nazwa_obiektu]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_obiektu];
end;
if(not tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni])then
tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni];
tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki]=true;
end;
function p.SpisTresciWstep(self,tekst_artykulu,nazwa_strony,obiekty,nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany)
nazwa_strony=nazwa_strony and mw.ustring.gsub(nazwa_strony,"(|)",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end) or nil;
local tablica_spisu_tresci=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local uzyskany_w_wyniku_parsowania;
local tablica_powtarzajacych_sie_elementow={};
local elementy_linku=nil;
local frame=mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tab_szablony=mw.loadData("Module:StronicowyParser/obiekty").szablony_stronicowego_parsera;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu);
local numeracja;
local function SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
local wywolanie_naglowek_iterator=mw.ustring.match(naglowek,"{{%s*Śródtytuł%s*}}") or mw.ustring.gmatch(naglowek,"{{%s*Śródtytuł%s*|[^{}]*}}");
local powtorka=0;
for wywolanie_naglowek in wywolanie_naglowek_iterator do
wywolanie_naglowek=mw.ustring.gsub(wywolanie_naglowek,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie_naglowek);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(powtorka>=1)then
if(self.tabela_listy_danych_analizy_ksiazki)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("powtorka_naglowek_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
break;
end;
powtorka=powtorka+1;
end;
end;
local function SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu)
local jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*}}") or mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*|[^{}]*}}");
if(jest_naglowkuj_w_tekscie_rozdzialu)then
jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.gsub(jest_naglowkuj_w_tekscie_rozdzialu,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](jest_naglowkuj_w_tekscie_rozdzialu);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("naglowek_w_tekscie_rozdzialu_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
end;
for naglowek,text_rozdzialu,poziom_rozdzialu in iterator do
numeracja=nil;
if(self)then
SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu);
end;
local function SzablonyWywolywane(wywolanie)
local parametry_wywolania_szablonu=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie);
if(tab_szablony[parametry_wywolania_szablonu[0]])then return "";end;
return wywolanie;
end;
naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywane);
naglowek=frame:preprocess(naglowek);
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[:?([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+|([^{}%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%s*%S+%s+([^%[%]]*)%]","%1");
naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
local linki_modul=require("Module:Linki");
local nazwa_rozdzialu_w_artykule=linki_modul["UsuńZnaczniki"](naglowek);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"<[^<>]+>","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[<>]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"_"," ");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";");
local numer_tego_samego_naglowka=1;
local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule);
local numer_tego_samego_naglowka=1;
for s=1,#tablica_powtarzajacych_sie_elementow,1 do
local element=tablica_powtarzajacych_sie_elementow[s];
if(element==nazwa_rozdzialu_w_artykule)then
numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
end;
end;
if(numer_tego_samego_naglowka==1)then
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule,naglowek};
else
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek};
end;
if((obiekty)and(numeracja))then
obiekty[#obiekty+1]={numeracja,{elementy_linku[1], elementy_linku[2]}};
end;
if((poziom_rozdzialu or 0)>0)then
local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu);
tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule;
if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={};end;
tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony};
end;
end;
if(self)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
if((linia_poczatkowa)and(mw.ustring.match(linia_poczatkowa,"^=+.+=+%s*")))then
return tablica_spisu_tresci;
end;
local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=+[^=]+=+") or tekst_artykulu;
SzablonNaglowkujWTekscieRozdzialu(tekst_zerowy);
end;
end;
end;
return tablica_spisu_tresci;
end;
function p.ZbierajJakieSaArtykulyIInformacjeOLicencji(self,nazwa_przestrzeni,nazwa_ksiazki,czy_artykul_korzystany)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_ksiazki))then return 0;end;
local nazwa_modolu=(parametry_modul.CzyTak(nazwa_przestrzeni)and parametry_modul.CzyTak(nazwa_ksiazki))and nazwa_przestrzeni..":"..nazwa_ksiazki or nazwa_ksiazki;
local tekst_rozwiniety_calego_artykulu=p.SpreparowanyWikikodStrony(nil,nazwa_modolu,true);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
----
local techniczne_modul=require("Module:Techniczne");
local wywolanie_spis_tresci="{{%s*"..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or ":")
..techniczne_modul["WzórNazwyStrony"](nazwa_ksiazki).."(/[Ss]pis[%s_]+treści)%s*}}";
local wywolanie_spis_tresci2="{{%s*(/[Ss]pis[%s_]+treści)%s*}}";
local strona_ze_spisem_tresci=mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci)
local strona_ze_spisem_tresci2=(not strona_ze_spisem_tresci) and mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci2) or nil;
if(strona_ze_spisem_tresci or strona_ze_spisem_tresci2)then
local tekst_rozwiniety_calego_spisu_tresci=p.SpreparowanyWikikodStrony(nil,nazwa_modolu..strona_ze_spisem_tresci,true);
if(tekst_rozwiniety_calego_spisu_tresci)then
tekst_rozwiniety_calego_spisu_tresci=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_rozwiniety_calego_spisu_tresci);
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
tablica_ksiazki.spis_tresci.tekst=tekst_rozwiniety_calego_spisu_tresci;
if(not tablica_ksiazki.spis_tresci.wywolanie)then tablica_ksiazki.spis_tresci.wywolanie={};end;
tablica_ksiazki.spis_tresci.wywolanie[1]=wywolanie_spis_tresci;
tablica_ksiazki.spis_tresci.wywolanie[2]=wywolanie_spis_tresci2;
----
local wywolanie=strona_ze_spisem_tresci and wywolanie_spis_tresci or wywolanie_spis_tresci2;
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,wywolanie,tekst_rozwiniety_calego_spisu_tresci);
end;
end;
----
local wyzyskane_wywolanie_szablonu_spis_tresci="";
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_modul=require("Module:StronicowyParser");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_ksiazki,true);
local html_modul=require("Module:Html");
local _1=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!}}");
local _2=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!((}}");
local _3=html_modul["KodyHTMLZnakówWikiCiągu"]("{{))!}}");
local mikroszablony={
["{{!}}"]=_1,
["{{!((}}"]=_2,
["{{))!}}"]=_3,
};
local mikroszablony_odwrotne={
[_1]="|",
[_2]="[[",
[_3]="]]",
};
local stronicowyparser_informacje=mw.loadData("Module:StronicowyParser/obiekty");
local jakie_nie_rozdzialy=stronicowyparser_informacje.tab_rozdzialow_pomijanych_w_rozwazaniach_na_stronach_glownych_ksiazek;
local jakie_spisy_tresci=stronicowyparser_informacje.tab_rozdzialow_glownych_spisow_tresci_ksiazek;
local wyrazenie_regularne="({{[&#;!%(%)]+}})";
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local function AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja)
rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
if((poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[rozdzial]))then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if(poziom_spisu_tresci<poziom_rozdzialu)then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
repeat
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._3.."%4}}");
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._1.."%4".._3.."%5}}");
until((not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}") )
and (not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}")));
text,_=mw.ustring.gsub(text,"{{[^{}]+}}",mikroszablony);
if(not tabela_artykulow)then tabela_artykulow={};end;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_artykulow[numer_rozdzialu_w_ksiazce][1]={rozdzial,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,},};
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([^{}%[%]\n]*)[^%S\n]*([^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
czy_rozdzial=true;
if((poziom_rozdzialu or 0)>0)then
return "","",rozdzial,true;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek and wyzyskane_wywolanie_szablonu_spis_tresci)then
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=iter();
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
----
local function LiniaArtykolow(linia)
repeat
linia,_=mw.ustring.gsub(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])", function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
linia,_=mw.ustring.gsub(linia,"({{[^{}]*)(,)([^{}]*}})",function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
until not mw.ustring.match(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])") and not mw.ustring.match(linia,"({{[^{}]*)(,)([^{}]*}})");
if(mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]Książka[%s_]*|[^{}]*}})")
)then
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})","%1,%2");
else
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
end;
local tabela_linii_artykolow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykolow,1 do
tabela_linii_artykolow[i],_=mw.ustring.gsub(tabela_linii_artykolow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykolow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local tab_linia=LiniaArtykolow(linia)
for k=1,#tab_linia,1 do
local iterator2=mw.ustring.gmatch(tab_linia[k],"([%[{][%[{][^{}]-[%]}][%]}])");
for wyzyskane_wywolanie_szablonu_spis_tresci in iterator2 do
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci2,wyrazenie_regularne,mikroszablony_odwrotne);
wyzyskane_wywolanie_szablonu_spis_tresci2=parametry_modul["Odstępy"]{[1]=wyzyskane_wywolanie_szablonu_spis_tresci2,[2]="tak",};
if(mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci2,"^%[%[([^%[%]]+)%]%]$"))then
wyzyskane_wywolanie_szablonu_spis_tresci=wyzyskane_wywolanie_szablonu_spis_tresci2;
end;
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom;
if(wliczaj_artykuly_tego_rozdzialu)then
tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_ksiazki);
--Rozdzialy początek
local znaki_niedozwolone;
if((tab_pozycja_artykulu)and(tab_pozycja_artykulu[1]))then
tab_pozycja_artykulu[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_artykulu[1],[2]="tak",}
--pozycja_artykulu=mw.getContentLanguage():ucfirst(pozycja_artykulu);
tab_pozycja_artykulu[1]=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](tab_pozycja_artykulu[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_artykulu[1],"[|<>{}%[%]]");
if(znaki_niedozwolone)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci)then
self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci=0;
end;
end;
tab_pozycja_artykulu[1]=html_modul["PoprawAdresNagłówkaStronyAdresu"](tab_pozycja_artykulu[1]);
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][2])then tabela_artykulow[numer_rozdzialu_w_ksiazce][2]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local strona=stronicowyparser_modul.PrzekierowanieDoStrony(nazwa_ksiazki..((tab_pozycja_artykulu[1]~="") and ("/"..tab_pozycja_artykulu[1]) or ""));
if(strona)then
tab_pozycja_artykulu[1]=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
local tab_stare={((tab_pozycja_artykulu[2]) and ({tab_pozycja_artykulu[1],tab_pozycja_artykulu[2],}) or tab_pozycja_artykulu[1]),{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][2],tab_stare);
break;
elseif((tab_pozycja_artykulu_inne)and(tab_pozycja_artykulu_inne[1]))then
local wiki_modul=require("Module:Wiki");
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][3])then tabela_artykulow[numer_rozdzialu_w_ksiazce][3]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local tab_stare={((tab_pozycja_artykulu_inne[1])and((tab_pozycja_artykulu_inne[2])or(tab_pozycja_artykulu_inne[3])or(tab_pozycja_artykulu_inne[4])))and({tab_pozycja_artykulu_inne[1],tab_pozycja_artykulu_inne[2],tab_pozycja_artykulu_inne[3],tab_pozycja_artykulu_inne[4],}) or tab_pozycja_artykulu_inne[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,#(tabela_artykulow[numer_rozdzialu_w_ksiazce][2] or {}),};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][3],tab_stare);
end;
else
link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"({{[^{}]+}})");
end;
if(((not tab_pozycja_artykulu)or(not tab_pozycja_artykulu[1]))and(link_szablon)and(czy_artykul_korzystany)and(licencja_z_autorem))then
local wywolanie_spisu_tresci=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^{{[Ll]icencja|([^{}]-)}}$");
if(wywolanie_spisu_tresci)then
wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"(%[%[[^|%[%]]-)(|)([^|%[%]]-%]%])","%1&#"..tostring(mw.ustring.byte('|'))..";%3");
local tabela_parametrow=techniczne_modul["ParsujWywołanieSzablonu"](wyzyskane_wywolanie_szablonu_spis_tresci);
if(tabela_parametrow)then
local autor=tabela_parametrow["Autor"];
local szkoly=tabela_parametrow["Ukończone szkoły"];
local email=tabela_parametrow["Email"];
local dotyczy=tabela_parametrow["Dotyczy"];
local licencjonowanie=tabela_parametrow["Licencjonowanie"];
local umowa_prawna=tabela_parametrow["Umowa prawna"];
local konsekwencje=tabela_parametrow["Konsekwencje"];
if(autor~=nil)then
autor,_=mw.ustring.gsub(autor,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(szkoly~=nil)then
szkoly,_=mw.ustring.gsub(szkoly,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(email~=nil)then
email,_=mw.ustring.gsub(email,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(dotyczy~=nil)then
dotyczy,_=mw.ustring.gsub(dotyczy,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(licencjonowanie~=nil)then
licencjonowanie,_=mw.ustring.gsub(licencjonowanie,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(umowa_prawna~=nil)then
umowa_prawna,_=mw.ustring.gsub(umowa_prawna,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(konsekwencje~=nil)then
konsekwencje,_=mw.ustring.gsub(konsekwencje,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
break;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end
end;
end;
end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end
local parsuj_rozdzialami=nil;
for rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja in iterator do
AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",tekst_rozwiniety_calego_artykulu,1,nil,nil);
end;
if(czy_artykul_korzystany)then tabelalisty2={tabela_artykulow, tabela_licencji_spisu_tresci,};else tabelalisty2=tabela_artykulow;end;
return tabelalisty2;
end;
function p.ObslugaSzczegolnaElementu(self,kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany)
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
function p.ObsluzSzablonWzor(self,tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji)
local kod_uchwytu=nil;
if(tabela_parametrow_szablonu["uchwyt"])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu["uchwyt"]);
elseif(tabela_parametrow_szablonu[numer_numeracji])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu[numer_numeracji]);
end;
if(kod_uchwytu and not mw.ustring.match(kod_uchwytu,"^%s*$"))then
p:ObslugaSzczegolnaElementu(kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany);
end;
end;
function p.Czy_jest_taki_element_w_tabeli_wynikow(self,element, nazwa_przestrzeni, nazwa_ksiazki)
local parametry_modul=require("Module:Parametry");
local tabela_problemow=self.tabela_listy_danych_analizy_ksiazki.problemy[element];
return (parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow,nazwa_przestrzeni)
and parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow[nazwa_przestrzeni],nazwa_ksiazki));
end;
function p.SprawdzCzyJestDostepnySpisTresci(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if(nazwa_przestrzeni)then
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu;
if(tablica_przestrzeni)then
local tabela_ksiazek=tablica_przestrzeni[nazwa_przestrzeni];
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki~=nazwa_ksiazki)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=nazwa_artykulu))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:DodawanieElementowDoTablicy("brak_spisy_tresci_do_doloczanych_stron",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron)then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron=0;
end;
end;
end;
end;
end;
end;
function p.PusteParametryLinkow(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and mw.ustring.match(nazwa_ksiazki,"^%s*$") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and mw.ustring.match(nazwa_artykulu,"^%s*$") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and mw.ustring.match(uchwyt_obiektu,"^%s*$") or nil;
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1]=0;
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2]=0;
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3]=0;
end;
end;
end;
function p.ZbieranieInformacjiArtykolowKsiazek(self,tabela_parametrow_szablonu)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=nazwa_artykulu or (pelna_nazwa_ksiazki and (((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki))and ksiazkowe_modul["NazwaArtykułuKsiążki"]() or "") or ksiazkowe_modul["NazwaArtykułuKsiążki"]());
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.ZbieranieInformacjiPudelek(self,tabela_parametrow_szablonu)
if((not tabela_parametrow_szablonu["nazwa przestrzeni nazw"])and(not tabela_parametrow_szablonu["nazwa jednostki"]))then return;end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_jednostki=(tabela_parametrow_szablonu["nazwa jednostki"]
and mw.ustring.gsub(tabela_parametrow_szablonu["nazwa jednostki"],"^([^#]*)#(.*)$","%1")
or nil
) or nazwy_modul["NAZWASTRONY"]();
local nazwa_przestrzeni=nazwy_modul.Np{nazwa=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwy_modul["NAZWAPRZESTRZENI"]()};
local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelna_nazwa_ksiazki);
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.LinkowanieOgolnie(self,tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,nazwa_obiektu, linkobiekt)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
uchwyt_obiektu=(uchwyt_obiektu)and parametry_modul["Odstępy"](uchwyt_obiektu) or nil;
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
nazwa_artykulu=require("Module:Parametry")["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](pelna_nazwa_ksiazki);
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
nazwa_ksiazki=nazwy_modul["NAZWASTRONY"](pelna_nazwa_ksiazki);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
end;
if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
elseif(nazwa_ksiazki=="")then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
p:LinkowanieNastepne(nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt);
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt)
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu])then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu]=0;
end;
end;
function p.LinkowanieDalszePrace(self,tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt,Funkcja_sprawdzania_parametrow_linkow)
local linkobiekttab=linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.LinkowanieNastepne(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not mw.ustring.match(nazwa_przestrzeni,"[|<>{}%[%]]")))or(nazwa_przestrzeni=="")))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not mw.ustring.match(nazwa_artykulu,"[|<>{}%[%]]")))or(nazwa_artykulu=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not mw.ustring.match(nazwa_ksiazki,"[|<>{}%[%]]"))))then
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false,tabela_listy_danych_analizy_ksiazki2);
if(tabela_listy_danych_analizy_ksiazki0)then
if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]=0;
end;
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
end;
else
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron==nil)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron=0;
else
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_stron_doloczanych_do_stron=0;
end;
end;
end;
end;
function p.SpreparowanyWikikodStrony(self,nazwa_modolu,dokumentacja)
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local nazwy_modul=require("Module:Nazwy");
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu);
if(nazwy_np_modul.Module==nazwa_przestrzeni)then
local techniczne_modul=require("Module:Techniczne");
nazwa_modolu=techniczne_modul["PełnaNazwaOpisuModułu"](nazwa_modolu);
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template~=nazwa_przestrzeni)then
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template==nazwa_przestrzeni)then
if(mw.ustring.match(nazwa_modolu,"^[^:]+:(.*/opis)%s*$"))then
local szablony_magiczne={};
return p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,dokumentacja);
else
local szablony_magiczne={};
local tekst_artykulu_caly=p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,false,nil,true);
if(not tekst_artykulu_caly)then return;end;
local iterator=mw.ustring.gmatch(tekst_artykulu_caly,"{{[^{}]-}}");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for wywolanie in iterator do
local function AnalizujDokumentacja(_,wywolanie)
local nazwa_strony2;
local dokumentacja=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*}}");
if(dokumentacja)then
local nazwa_strony2=nazwa_modolu.."/opis";
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,true);
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,"{{%s*[Dd]okumentacja%s*}}",tekst_artykulu2);
else
local dopasowanie=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*|");
if(dopasowanie)then
local tablica_parametrow_dokumentacja=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie)
local nazwa_strony2=tablica_parametrow_dokumentacja[1];
local zawartosc=tablica_parametrow_dokumentacja["zawartość"];
if((nazwa_strony2)and(not zawartosc))then
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,true,nazwa_modolu);
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,tekst_artykulu2);
elseif(zawartosc)then
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
zawartosc=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](zawartosc);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,zawartosc);
end;
end;
end;
end;
local function __Funkcja2(oznaczenie_szablonu,wywolanie,tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(not oznaczenie_szablonu)then return; end;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local wywolanie2,_=mw.ustring.gsub(wywolanie,stronicowyparser_potrzebne_modul.OgolnyWzor(oznaczenie_szablonu),stronicowyparser_potrzebne_modul.AnalizaSzablonu(oznaczenie_szablonu));
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
wywolanie2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wywolanie2);
tekst_artykulu_caly,_=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,wywolanie2);
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(wywolanie,AnalizujDokumentacja,__Funkcja2)
end;
return tekst_artykulu_caly;
end;
end;
end;
function p.LadujZawartoscStrony(self,nazwa_strony,czy_noinclude,szablony_magiczne,dokumentacja,nazwa_modolu_szablonu_opisu,szablon_nie_opis)
local czy_nazwa_strony_z_tylko_odstepami_lub_pusta=mw.ustring.match(nazwa_strony,"^%s*$");
local uchwyt_strony;
local tekst_artykulu;
local nazwa_strony_bez_kodow_html;
if(not czy_nazwa_strony_z_tylko_odstepami_lub_pusta)then
nazwa_strony_bez_kodow_html=require("Module:Html").TransformacjaKlasyZnakowej(nazwa_strony);
uchwyt_strony = mw.title.makeTitle('', nazwa_strony_bez_kodow_html);
tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
local czy_istnieje = tekst_artykulu or (uchwyt_strony and uchwyt_strony.exists or nil);
if(not czy_istnieje)then
if(self and self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje=0
end;
end;
return nil;
else
local czy_nie_istnieje_zawartosc=((uchwyt_strony)and(not tekst_artykulu));
if(czy_nie_istnieje_zawartosc)then
return nil;
end;
end;
else
return nil;
end;
if((czy_noinclude)and(not dokumentacja)and(szablon_nie_opis))then
local iterator=mw.ustring.gmatch(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->");
for dokumentacja_tekst in iterator do
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tekst=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(dokumentacja_tekst);
if(tekst~=dokumentacja_tekst)then
local techniczne_modul=require("Module:Techniczne");
dokumentacja_tekst=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](dokumentacja_tekst);
tekst=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->"..dokumentacja_tekst.."<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->",tekst);
end;
end;
end;
if(czy_noinclude)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","%1");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->.-<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","");
else
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->.-<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->(.-)<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","%1");
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>(.-)</[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<!--(.-)-->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->.-<%s-/%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Pp][Rr][Ee]%s->.-<%s-/%s-[Pp][Rr][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<%s-[mM][aA][tT][hH]%s->.-<%s-/%s-[mM][aA][tT][hH]%s->)","");
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{NAMESPACE}}"]=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{PAGENAME}}"]=nazwy_modul["NAZWASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{FULLPAGENAME}}"]=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
end;
if(szablony_magiczne)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"{{[^{}]+}}",szablony_magiczne);
local ramka_modul=require("Module:Ramka");
tekst_artykulu=ramka_modul.InstrukcjeWarunkowe(tekst_artykulu);
end;
if(not szablon_nie_opis)then
if(not dokumentacja)then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
tekst_artykulu=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(tekst_artykulu);
end;
end;
return tekst_artykulu;
end;
function p.ZbieranieInformacji(self,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, czy_artukul_korzystany,tabela_listy_danych_analizy_ksiazki2,linkobiekt)
if(not czy_artukul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki and self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
return 0;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_ksiazki,"^[^/]+/(.-)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_ksiazki,"^%s*[Bb]rudnopis/[^/]+/(.-)$")))
)then
p:DodawanieElementowDoTablicy("strony_poza_zakresem_obslugiwanym",nil,nazwa_przestrzeni,nazwa_ksiazki)
end;
local parametry_modul=require("Module:Parametry");
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_ksiazka=tabela_przestrzeni[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_artykolow;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local uchwyty_i_numeracje=tabela_artykul.uchwyty_i_numeracje;
if(uchwyty_i_numeracje)then
return 0;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
if(czy_artukul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=nazwa_artykulu;
end;
end;
local nazwa_modolu=(nazwa_przestrzeni=="")and ((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu)
or nazwa_przestrzeni..":"..((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu);
local tekst_rozwiniety_calego_artykulu=p:SpreparowanyWikikodStrony(nazwa_modolu);
if(not czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
-- przydzielanie tablicy
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.lista_artykolow)then tablica_ksiazki.lista_artykolow={};end;
if(not tablica_ksiazki.lista_artykolow[nazwa_artykulu])then tablica_ksiazki.lista_artykolow[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_artykolow[nazwa_artykulu];
local tablica_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
if(czy_artukul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tabela_listy_danych_analizy_ksiazki2)then tabela_listy_danych_analizy_ksiazki2={};end;
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=element_w_tablicy_obiekt[1];
tabela_listy_danych_analizy_ksiazki2[wartosc]={};
if(czy_artukul_korzystany)then linkobiekt[wartosc]={};end;
end;
local strona;
if(czy_artukul_korzystany)then
strona="";
else
strona=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki..((nazwa_artykulu~="")and "/"..nazwa_artykulu or "")
end;
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if((self.tabela_listy_danych_analizy_ksiazki.zastepczy) or (not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki))))then
if((nazwa_przestrzeni)and(nazwa_ksiazki))then
local czy_ksiazka_istnieje_w_tablicy=false;
local tabela_ksiazek=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_ksiazek)then
for nazwa_ksiazki_i,tablica_spisu in pairs(tabela_ksiazek) do
if(nazwa_ksiazki_i==nazwa_ksiazki)then
if(tablica_spisu.spis)then
czy_ksiazka_istnieje_w_tablicy=true;
break;
end;
end;
end;
end;
if(not czy_ksiazka_istnieje_w_tablicy)then
local tabela_wstepnych_informacji;
local normalna_nazwa_przestrzeni;local normalna_nazwa_ksiazki;
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
else
normalna_nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni;
normalna_nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki;
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki,czy_artukul_korzystany);
end;
if(tabela_wstepnych_informacji==0)then
if(czy_artukul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.problemy.korzystane_strona_glowna_nie_istnieje=0;
else
p:DodawanieElementowDoTablicy("doloczone_strony_glowne_nie_istnieja",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
else
if(tabela_wstepnych_informacji)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tablica_ksiazki.spis=tabela_wstepnych_informacji[1];
tablica_ksiazki.licencja=tabela_wstepnych_informacji[2];
else
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni]={};
end;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki]={};
end;
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].spis=tabela_wstepnych_informacji[1];
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].licencja=tabela_wstepnych_informacji[2];
end;
if(not tabela_wstepnych_informacji[1])then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych)then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=""))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych=0;
end;
end;
end;
else
tablica_ksiazki.spis=tabela_wstepnych_informacji;
end;
else
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
else
p:DodawanieElementowDoTablicy("brak_spisow_tresci_do_doloczonych_ksiazek_na_ich_stronach_glownych",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
end;
function StronaZbiorcza()
if(czy_artukul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
return stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,nil,TakFun,NieFun,nil);
end;
return nil;
end;
InneInformacjePrzebneDoAnalizowanejKsiazki();
local strona_zbiorcza=StronaZbiorcza();
if(strona_zbiorcza)then
if((tablica_ksiazki.spis_tresci)and(tablica_ksiazki.spis_tresci.tekst)and(tablica_ksiazki.spis_tresci.wywolanie)
and(tablica_ksiazki.spis_tresci.wywolanie[1])and(tablica_ksiazki.spis_tresci.wywolanie[2]))then
local pelny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1])
if(pelny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1],tablica_ksiazki.spis_tresci.tekst);
else
local wzgledny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2])
if(wzgledny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2],tablica_ksiazki.spis_tresci.tekst);
end;
end;
end;
end;
if(czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local toc;
if((not czy_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone))then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(czy_artukul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(obiekty_modul.strona_start[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
return;
elseif(obiekty_modul.strona_start_inne[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif(obiekty_modul.strona_start_analiza_spis_tresci[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
end;
end;
local plik=mw.ustring.match(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"^{{:([^:|{}]-)}}$");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=mw.ustring.match(tabela_parametrow_szablonu[0],"^[wW]ypowiedzenie$");
local linkobiekt2;
local link;
if(czy_wypowiedzenie)then
linkobiekt2=false;
link=false;
else
linkobiekt2=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]inkObiekt$");
if(linkobiekt2)then
link=true;
else
link=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]ink");
end;
end;
local czy_obsluzone=true;
local funkcja_aliasow=function(nazwa_szablonu,elementy_w_tablicy_obiekty)
local wzor_nazwy_szablonu1=mw.ustring.gsub(elementy_w_tablicy_obiekty[1],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[2])then
if(type(elementy_w_tablicy_obiekty[2])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[2])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[2],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
end;
end;
end;
return czy_aliasy;
end;
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow_bez_obiektu_nienazwanego)do
local wartosc_elementu=elementy_w_tablicy_obiekty[1];
if(not link)then
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
czy_aliasy=czy_wypowiedzenie or funkcja_aliasow(tabela_parametrow_szablonu[0],elementy_w_tablicy_obiekty);
if(czy_aliasy)then
if((not czy_wypowiedzenie)
or((czy_wypowiedzenie)and(
(tabela_parametrow_szablonu["rodzaj"]==wartosc_elementu)
))
)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artukul_korzystany,elementy_w_tablicy_obiekty[5]);
czy_obsluzone=false;
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu= tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
if(uchwyt_obiektu and not mw.ustring.match(uchwyt_obiektu,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
break;
end;
end;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
elseif(czy_artukul_korzystany)then
if(link)then
local funkcja_aliasow_2=function(zmienna)
if(wartosc_elementu~=zmienna)then return false;end;
local wzor_nazwy_szablonu1="[Ll]ink"..wartosc_elementu;
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
local szablon;
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[3])then
if(type(elementy_w_tablicy_obiekty[3])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[3])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
szablon=alias
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[3],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then szablon=elementy_w_tablicy_obiekty[3];end;
end;
end;
else
szablon="Link"..wartosc_elementu;
end;
return czy_aliasy,szablon;
end;
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
local typ=mw.getContentLanguage():lcfirst(wartosc_elementu);
local alias,szablon=funkcja_aliasow_2(wartosc_elementu);
if((alias)or((linkobiekt2)and(tabela_parametrow_szablonu["typ"]==typ)))then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,wartosc_elementu, linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=((alias)and szablon or "LinkObiekt")..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
czy_obsluzone=false;
break;
end;
else
local alias,szablon=funkcja_aliasow_2("Śródtytuł");
if(alias)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Śródtytuł", linkobiekt);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
czy_obsluzone=false;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=szablon..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
break;
end;
end;
end;
end;
end;
if(czy_obsluzone)then
if(czy_wypowiedzenie)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artukul_korzystany,obiekty_modul.obiekty[5]);
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[obiekty_modul.obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt"..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
elseif(czy_artukul_korzystany)then
if(linkobiekt2)then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Obiekt", linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[1]] or tabela_parametrow_szablonu["uchwyt"];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
else
for wartosc_elementu,_ in pairs(obiekty_modul.bez_uchwytow_spis_tresci)do
local wzor_artykolow_ksiazek=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_artykolow_ksiazek.."$"))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:ZbieranieInformacjiArtykolowKsiazek(tabela_parametrow_szablonu);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="ArtykułKsiążki:"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
end;
for wartosc_elementu,_ in pairs(obiekty_modul.szablony_pudelka)do
local wzor_szablonu_pudelka=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_szablonu_pudelka.."$"))then
p:ZbieranieInformacjiPudelek(tabela_parametrow_szablonu);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=tabela_parametrow_szablonu[0]..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,AnalizaParametrowSzablonuISzablonu);
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].uchwyty_i_numeracje=tabela_listy_danych_analizy_ksiazki2;
if(czy_artukul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu);
mw.log('To jest strona zbiorcza.')
end;
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
mw.log("Liczę spis treści artykułów korzystanych.");
end;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykolu=tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].TOC=toc;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzLinki(self,tabela_listy_danych_analizy_ksiazki2,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if((not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2])or(nazwa_artykulu==""))then
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
local czy_uchwyty_nie_sa_ponumerowane=true;
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then
czy_uchwyty_nie_sa_ponumerowane=false;
break;
end;
end;
end;
if(czy_uchwyty_nie_sa_ponumerowane)then
local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
if(czy_tylko_ze_znakami_odstepu_lub_puste)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]) then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]=0;
end;
return;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]=0;
return;
end;
end;
end;
end;
end;
function p.PrzetworzMozliweWszystkieRodzajeObiektow(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
for _,element_w_podtablicy_kategorii_bledow in pairs(obiekty_modul.tablica_obiektow)do
local element_obiekty=element_w_podtablicy_kategorii_bledow[1];
tabela_listy_danych_analizy_ksiazki=p:Sprawdzanie_i_numerowanie(dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja);
end;
end;
function p.PrzetworzZebraneInformacje(self,tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2)
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
for nazwa_przestrzeni,tablica_nazw_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)do
for nazwa_ksiazki,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do
local prosto=true;
if(self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
if((nazwa_przestrzeni==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni)
and(nazwa_ksiazki==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki))then
prosto=false;
end;
end;
if(prosto)then
local nazwa_przestrzeni_nazw_strony=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_ksiazki);
for nazwa_artykulu, dane_artykulu in pairs(tablica_nazw_artykulow.lista_artykolow) do
local biezacy_artykul=dane_artykulu.artykul_biezacy;
local numer_obiektu_w_ksiazce=1;local czy_da_sie_numerowac_obiekty_ze_spisem_tresci =false;
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
else
local tab_ksiazki=tablica_nazw_artykulow.spis;
if(tab_ksiazki)then
for _,tab_rozdzialu in pairs(tab_ksiazki)do
if(tab_rozdzialu[2])then
for _,nazwa_artykulu1 in ipairs(tab_rozdzialu[2])do
if(nazwa_artykulu1[1]~=nazwa_artykulu)then
numer_obiektu_w_ksiazce=numer_obiektu_w_ksiazce+1;
else
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;break;
end;
end;
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then break;end;
end;
end;
end;
local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu)
p:DodawanieElementowDoTablicy("bledy_uchwytow_doloczonych_stron",nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki);
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
elseif(not czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
else
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
end;
end;
end;
end;
for _,obiekt in pairs(obiekty_modul.tablica_obiektow)do
local obiekt2=obiekt[1];
p:SprawdzLinki(tabela_listy_danych_analizy_ksiazki2,linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2);
end;
return tabela_listy_danych_analizy_ksiazki;
end;
function p.Sprawdzanie_i_numerowanie(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
local parametry_modul=require("Module:Parametry");
local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu];
if(obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[nazwa_obiektu])then
return tabela_listy_danych_analizy_ksiazki;
end;
for licznik,element_obiektu in pairs(tabela_obiektu)do
local czy_numerowac=true;
for licznik2=1, licznik-1,1 do
if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then
if(biezacy_artykul)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu])then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu]=0;
end;
else
__Funkcja(nazwa_obiektu);
end;
tabela_obiektu[licznik2][1]=nil;
czy_numerowac=false;
end;
end;
if(czy_numerowac)then
if(numer_artykulu_w_ksiazce>0)then
element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
elseif(numer_artykulu_w_ksiazce==0)then
element_obiektu[2]=licznik
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0
end;
end;
end;
return tabela_listy_danych_analizy_ksiazki;
end;
return p;
0g1d5iane3lx3exb3h6rs35drtcdl3m
438602
438601
2022-08-23T18:12:51Z
Persino
2851
Scribunto
text/plain
local p={};
function p.ZaczynajAnalizowacArtykulyKsiazek(self)
self.tabela_listy_danych_analizy_ksiazki={};
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu={};
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
self.tabela_listy_danych_analizy_ksiazki.problemy={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_doloczonych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu={};
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych={};
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=elementy_w_tablicy_obiekty[1];
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[wartosc]={};
end;
self.tabela_listy_danych_analizy_ksiazki.licencja={};
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe")
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"]();
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"]();
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"]();
local pelna_nazwa_ksiazki="Szablon:Podręcznik/Ustawienia/"..((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki;
local techniczne_modul=require("Module:Techniczne");
local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki.."/config",};
if(ile>0)then
local frame=mw.getCurrentFrame();
local nazwa_szablonu=techniczne_modul.NazwaSzablonu(pelna_nazwa_ksiazki);
local zastepczy=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępczy",}};
if(not mw.ustring.match(zastepczy,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.zastepczy=true;
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka zastępcza",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł zastępczy",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
local ksiazka_normalna=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul_normalny=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka_normalna,"^%s*$"))then
local strona=ksiazka_normalna..((artykul_normalny~="") and ("/"..artykul_normalny) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
else
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
local tabela_listy_danych_analizy_ksiazki2={};
local linkobiekt={};
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, true,tabela_listy_danych_analizy_ksiazki2,linkobiekt);
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki,})then
p:PrzetworzZebraneInformacje(tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.DodawanieElementowDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki)
local tabela_listy_danych_analizy_ksiazki=self.tabela_listy_danych_analizy_ksiazki.problemy;
if(not tabela_listy_danych_analizy_ksiazki[element_tablicy])then
tabela_listy_danych_analizy_ksiazki[element_tablicy]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[element_tablicy];
if(nazwa_obiektu)then
if(not tabela_listy_danych_analizy_ksiazki[nazwa_obiektu])then
tabela_listy_danych_analizy_ksiazki[nazwa_obiektu]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_obiektu];
end;
if(not tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni])then
tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni];
tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki]=true;
end;
function p.SpisTresciWstep(self,tekst_artykulu,nazwa_strony,obiekty,nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany)
nazwa_strony=nazwa_strony and mw.ustring.gsub(nazwa_strony,"(|)",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end) or nil;
local tablica_spisu_tresci=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local uzyskany_w_wyniku_parsowania;
local tablica_powtarzajacych_sie_elementow={};
local elementy_linku=nil;
local frame=mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tab_szablony=mw.loadData("Module:StronicowyParser/obiekty").szablony_stronicowego_parsera;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu);
local numeracja;
local function SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
local wywolanie_naglowek_iterator=mw.ustring.match(naglowek,"{{%s*Śródtytuł%s*}}") or mw.ustring.gmatch(naglowek,"{{%s*Śródtytuł%s*|[^{}]*}}");
local powtorka=0;
for wywolanie_naglowek in wywolanie_naglowek_iterator do
wywolanie_naglowek=mw.ustring.gsub(wywolanie_naglowek,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie_naglowek);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(powtorka>=1)then
if(self.tabela_listy_danych_analizy_ksiazki)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("powtorka_naglowek_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
break;
end;
powtorka=powtorka+1;
end;
end;
local function SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu)
local jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*}}") or mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*|[^{}]*}}");
if(jest_naglowkuj_w_tekscie_rozdzialu)then
jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.gsub(jest_naglowkuj_w_tekscie_rozdzialu,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](jest_naglowkuj_w_tekscie_rozdzialu);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("naglowek_w_tekscie_rozdzialu_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
end;
for naglowek,text_rozdzialu,poziom_rozdzialu in iterator do
numeracja=nil;
if(self)then
SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu);
end;
local function SzablonyWywolywane(wywolanie)
local parametry_wywolania_szablonu=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie);
if(tab_szablony[parametry_wywolania_szablonu[0]])then return "";end;
return wywolanie;
end;
naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywane);
naglowek=frame:preprocess(naglowek);
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[:?([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+|([^{}%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%s*%S+%s+([^%[%]]*)%]","%1");
naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
local linki_modul=require("Module:Linki");
local nazwa_rozdzialu_w_artykule=linki_modul["UsuńZnaczniki"](naglowek);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"<[^<>]+>","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[<>]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"_"," ");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";");
local numer_tego_samego_naglowka=1;
local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule);
local numer_tego_samego_naglowka=1;
for s=1,#tablica_powtarzajacych_sie_elementow,1 do
local element=tablica_powtarzajacych_sie_elementow[s];
if(element==nazwa_rozdzialu_w_artykule)then
numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
end;
end;
if(numer_tego_samego_naglowka==1)then
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule,naglowek};
else
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek};
end;
if((obiekty)and(numeracja))then
obiekty[#obiekty+1]={numeracja,{elementy_linku[1], elementy_linku[2]}};
end;
if((poziom_rozdzialu or 0)>0)then
local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu);
tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule;
if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={};end;
tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony};
end;
end;
if(self)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
if((linia_poczatkowa)and(mw.ustring.match(linia_poczatkowa,"^=+.+=+%s*")))then
return tablica_spisu_tresci;
end;
local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=+[^=]+=+") or tekst_artykulu;
SzablonNaglowkujWTekscieRozdzialu(tekst_zerowy);
end;
end;
end;
return tablica_spisu_tresci;
end;
function p.ZbierajJakieSaArtykulyIInformacjeOLicencji(self,nazwa_przestrzeni,nazwa_ksiazki,czy_artykul_korzystany)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_ksiazki))then return 0;end;
local nazwa_modolu=(parametry_modul.CzyTak(nazwa_przestrzeni)and parametry_modul.CzyTak(nazwa_ksiazki))and nazwa_przestrzeni..":"..nazwa_ksiazki or nazwa_ksiazki;
local tekst_rozwiniety_calego_artykulu=p.SpreparowanyWikikodStrony(nil,nazwa_modolu,true);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
----
local techniczne_modul=require("Module:Techniczne");
local wywolanie_spis_tresci="{{%s*"..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or ":")
..techniczne_modul["WzórNazwyStrony"](nazwa_ksiazki).."(/[Ss]pis[%s_]+treści)%s*}}";
local wywolanie_spis_tresci2="{{%s*(/[Ss]pis[%s_]+treści)%s*}}";
local strona_ze_spisem_tresci=mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci)
local strona_ze_spisem_tresci2=(not strona_ze_spisem_tresci) and mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci2) or nil;
if(strona_ze_spisem_tresci or strona_ze_spisem_tresci2)then
local tekst_rozwiniety_calego_spisu_tresci=p.SpreparowanyWikikodStrony(nil,nazwa_modolu..strona_ze_spisem_tresci,true);
if(tekst_rozwiniety_calego_spisu_tresci)then
tekst_rozwiniety_calego_spisu_tresci=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_rozwiniety_calego_spisu_tresci);
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
tablica_ksiazki.spis_tresci.tekst=tekst_rozwiniety_calego_spisu_tresci;
if(not tablica_ksiazki.spis_tresci.wywolanie)then tablica_ksiazki.spis_tresci.wywolanie={};end;
tablica_ksiazki.spis_tresci.wywolanie[1]=wywolanie_spis_tresci;
tablica_ksiazki.spis_tresci.wywolanie[2]=wywolanie_spis_tresci2;
----
local wywolanie=strona_ze_spisem_tresci and wywolanie_spis_tresci or wywolanie_spis_tresci2;
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,wywolanie,tekst_rozwiniety_calego_spisu_tresci);
end;
end;
----
local wyzyskane_wywolanie_szablonu_spis_tresci="";
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_modul=require("Module:StronicowyParser");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_ksiazki,true);
local html_modul=require("Module:Html");
local _1=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!}}");
local _2=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!((}}");
local _3=html_modul["KodyHTMLZnakówWikiCiągu"]("{{))!}}");
local mikroszablony={
["{{!}}"]=_1,
["{{!((}}"]=_2,
["{{))!}}"]=_3,
};
local mikroszablony_odwrotne={
[_1]="|",
[_2]="[[",
[_3]="]]",
};
local stronicowyparser_informacje=mw.loadData("Module:StronicowyParser/obiekty");
local jakie_nie_rozdzialy=stronicowyparser_informacje.tab_rozdzialow_pomijanych_w_rozwazaniach_na_stronach_glownych_ksiazek;
local jakie_spisy_tresci=stronicowyparser_informacje.tab_rozdzialow_glownych_spisow_tresci_ksiazek;
local wyrazenie_regularne="({{[&#;!%(%)]+}})";
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local function AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja)
rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
if((poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[rozdzial]))then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if(poziom_spisu_tresci<poziom_rozdzialu)then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
repeat
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._3.."%4}}");
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._1.."%4".._3.."%5}}");
until((not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}") )
and (not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}")));
text,_=mw.ustring.gsub(text,"{{[^{}]+}}",mikroszablony);
if(not tabela_artykulow)then tabela_artykulow={};end;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_artykulow[numer_rozdzialu_w_ksiazce][1]={rozdzial,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,},};
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([^{}%[%]\n]*)[^%S\n]*([^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
czy_rozdzial=true;
if((poziom_rozdzialu or 0)>0)then
return "","",rozdzial,true;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek and wyzyskane_wywolanie_szablonu_spis_tresci)then
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=iter();
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
----
local function LiniaArtykolow(linia)
repeat
linia,_=mw.ustring.gsub(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])", function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
linia,_=mw.ustring.gsub(linia,"({{[^{}]*)(,)([^{}]*}})",function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
until not mw.ustring.match(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])") and not mw.ustring.match(linia,"({{[^{}]*)(,)([^{}]*}})");
if(mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]Książka[%s_]*|[^{}]*}})")
)then
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})","%1,%2");
else
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
end;
local tabela_linii_artykolow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykolow,1 do
tabela_linii_artykolow[i],_=mw.ustring.gsub(tabela_linii_artykolow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykolow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local tab_linia=LiniaArtykolow(linia)
for k=1,#tab_linia,1 do
local iterator2=mw.ustring.gmatch(tab_linia[k],"([%[{][%[{][^{}]-[%]}][%]}])");
for wyzyskane_wywolanie_szablonu_spis_tresci in iterator2 do
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci2,wyrazenie_regularne,mikroszablony_odwrotne);
wyzyskane_wywolanie_szablonu_spis_tresci2=parametry_modul["Odstępy"]{[1]=wyzyskane_wywolanie_szablonu_spis_tresci2,[2]="tak",};
if(mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci2,"^%[%[([^%[%]]+)%]%]$"))then
wyzyskane_wywolanie_szablonu_spis_tresci=wyzyskane_wywolanie_szablonu_spis_tresci2;
end;
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom;
if(wliczaj_artykuly_tego_rozdzialu)then
tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_ksiazki);
--Rozdzialy początek
local znaki_niedozwolone;
if((tab_pozycja_artykulu)and(tab_pozycja_artykulu[1]))then
tab_pozycja_artykulu[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_artykulu[1],[2]="tak",}
--pozycja_artykulu=mw.getContentLanguage():ucfirst(pozycja_artykulu);
tab_pozycja_artykulu[1]=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](tab_pozycja_artykulu[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_artykulu[1],"[|<>{}%[%]]");
if(znaki_niedozwolone)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci)then
self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci=0;
end;
end;
tab_pozycja_artykulu[1]=html_modul["PoprawAdresNagłówkaStronyAdresu"](tab_pozycja_artykulu[1]);
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][2])then tabela_artykulow[numer_rozdzialu_w_ksiazce][2]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local strona=stronicowyparser_modul.PrzekierowanieDoStrony(nazwa_ksiazki..((tab_pozycja_artykulu[1]~="") and ("/"..tab_pozycja_artykulu[1]) or ""));
if(strona)then
tab_pozycja_artykulu[1]=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
local tab_stare={((tab_pozycja_artykulu[2]) and ({tab_pozycja_artykulu[1],tab_pozycja_artykulu[2],}) or tab_pozycja_artykulu[1]),{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][2],tab_stare);
break;
elseif((tab_pozycja_artykulu_inne)and(tab_pozycja_artykulu_inne[1]))then
local wiki_modul=require("Module:Wiki");
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][3])then tabela_artykulow[numer_rozdzialu_w_ksiazce][3]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local tab_stare={((tab_pozycja_artykulu_inne[1])and((tab_pozycja_artykulu_inne[2])or(tab_pozycja_artykulu_inne[3])or(tab_pozycja_artykulu_inne[4])))and({tab_pozycja_artykulu_inne[1],tab_pozycja_artykulu_inne[2],tab_pozycja_artykulu_inne[3],tab_pozycja_artykulu_inne[4],}) or tab_pozycja_artykulu_inne[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,#(tabela_artykulow[numer_rozdzialu_w_ksiazce][2] or {}),};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][3],tab_stare);
end;
else
link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"({{[^{}]+}})");
end;
if(((not tab_pozycja_artykulu)or(not tab_pozycja_artykulu[1]))and(link_szablon)and(czy_artykul_korzystany)and(licencja_z_autorem))then
local wywolanie_spisu_tresci=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^{{[Ll]icencja|([^{}]-)}}$");
if(wywolanie_spisu_tresci)then
wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"(%[%[[^|%[%]]-)(|)([^|%[%]]-%]%])","%1&#"..tostring(mw.ustring.byte('|'))..";%3");
local tabela_parametrow=techniczne_modul["ParsujWywołanieSzablonu"](wyzyskane_wywolanie_szablonu_spis_tresci);
if(tabela_parametrow)then
local autor=tabela_parametrow["Autor"];
local szkoly=tabela_parametrow["Ukończone szkoły"];
local email=tabela_parametrow["Email"];
local dotyczy=tabela_parametrow["Dotyczy"];
local licencjonowanie=tabela_parametrow["Licencjonowanie"];
local umowa_prawna=tabela_parametrow["Umowa prawna"];
local konsekwencje=tabela_parametrow["Konsekwencje"];
if(autor~=nil)then
autor,_=mw.ustring.gsub(autor,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(szkoly~=nil)then
szkoly,_=mw.ustring.gsub(szkoly,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(email~=nil)then
email,_=mw.ustring.gsub(email,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(dotyczy~=nil)then
dotyczy,_=mw.ustring.gsub(dotyczy,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(licencjonowanie~=nil)then
licencjonowanie,_=mw.ustring.gsub(licencjonowanie,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(umowa_prawna~=nil)then
umowa_prawna,_=mw.ustring.gsub(umowa_prawna,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(konsekwencje~=nil)then
konsekwencje,_=mw.ustring.gsub(konsekwencje,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
break;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end
end;
end;
end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end
local parsuj_rozdzialami=nil;
for rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja in iterator do
AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",tekst_rozwiniety_calego_artykulu,1,nil,nil);
end;
if(czy_artykul_korzystany)then tabelalisty2={tabela_artykulow, tabela_licencji_spisu_tresci,};else tabelalisty2=tabela_artykulow;end;
return tabelalisty2;
end;
function p.ObslugaSzczegolnaElementu(self,kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany)
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
function p.ObsluzSzablonWzor(self,tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji)
local kod_uchwytu=nil;
if(tabela_parametrow_szablonu["uchwyt"])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu["uchwyt"]);
elseif(tabela_parametrow_szablonu[numer_numeracji])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu[numer_numeracji]);
end;
if(kod_uchwytu and not mw.ustring.match(kod_uchwytu,"^%s*$"))then
p:ObslugaSzczegolnaElementu(kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany);
end;
end;
function p.Czy_jest_taki_element_w_tabeli_wynikow(self,element, nazwa_przestrzeni, nazwa_ksiazki)
local parametry_modul=require("Module:Parametry");
local tabela_problemow=self.tabela_listy_danych_analizy_ksiazki.problemy[element];
return (parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow,nazwa_przestrzeni)
and parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow[nazwa_przestrzeni],nazwa_ksiazki));
end;
function p.SprawdzCzyJestDostepnySpisTresci(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if(nazwa_przestrzeni)then
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu;
if(tablica_przestrzeni)then
local tabela_ksiazek=tablica_przestrzeni[nazwa_przestrzeni];
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki~=nazwa_ksiazki)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=nazwa_artykulu))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:DodawanieElementowDoTablicy("brak_spisy_tresci_do_doloczanych_stron",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron)then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron=0;
end;
end;
end;
end;
end;
end;
function p.PusteParametryLinkow(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and mw.ustring.match(nazwa_ksiazki,"^%s*$") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and mw.ustring.match(nazwa_artykulu,"^%s*$") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and mw.ustring.match(uchwyt_obiektu,"^%s*$") or nil;
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1]=0;
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2]=0;
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3]=0;
end;
end;
end;
function p.ZbieranieInformacjiArtykolowKsiazek(self,tabela_parametrow_szablonu)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=nazwa_artykulu or (pelna_nazwa_ksiazki and (((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki))and ksiazkowe_modul["NazwaArtykułuKsiążki"]() or "") or ksiazkowe_modul["NazwaArtykułuKsiążki"]());
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.ZbieranieInformacjiPudelek(self,tabela_parametrow_szablonu)
if((not tabela_parametrow_szablonu["nazwa przestrzeni nazw"])and(not tabela_parametrow_szablonu["nazwa jednostki"]))then return;end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_jednostki=(tabela_parametrow_szablonu["nazwa jednostki"]
and mw.ustring.gsub(tabela_parametrow_szablonu["nazwa jednostki"],"^([^#]*)#(.*)$","%1")
or nil
) or nazwy_modul["NAZWASTRONY"]();
local nazwa_przestrzeni=nazwy_modul.Np{nazwa=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwy_modul["NAZWAPRZESTRZENI"]()};
local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelna_nazwa_ksiazki);
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.LinkowanieOgolnie(self,tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,nazwa_obiektu, linkobiekt)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
uchwyt_obiektu=(uchwyt_obiektu)and parametry_modul["Odstępy"](uchwyt_obiektu) or nil;
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
nazwa_artykulu=require("Module:Parametry")["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](pelna_nazwa_ksiazki);
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
nazwa_ksiazki=nazwy_modul["NAZWASTRONY"](pelna_nazwa_ksiazki);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
end;
if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
elseif(nazwa_ksiazki=="")then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
p:LinkowanieNastepne(nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt);
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt)
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu])then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu]=0;
end;
end;
function p.LinkowanieDalszePrace(self,tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt,Funkcja_sprawdzania_parametrow_linkow)
local linkobiekttab=linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.LinkowanieNastepne(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not mw.ustring.match(nazwa_przestrzeni,"[|<>{}%[%]]")))or(nazwa_przestrzeni=="")))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not mw.ustring.match(nazwa_artykulu,"[|<>{}%[%]]")))or(nazwa_artykulu=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not mw.ustring.match(nazwa_ksiazki,"[|<>{}%[%]]"))))then
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false,tabela_listy_danych_analizy_ksiazki2);
if(tabela_listy_danych_analizy_ksiazki0)then
if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]=0;
end;
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
end;
else
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron==nil)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron=0;
else
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_stron_doloczanych_do_stron=0;
end;
end;
end;
end;
function p.SpreparowanyWikikodStrony(self,nazwa_modolu,dokumentacja)
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local nazwy_modul=require("Module:Nazwy");
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu);
if(nazwy_np_modul.Module==nazwa_przestrzeni)then
local techniczne_modul=require("Module:Techniczne");
nazwa_modolu=techniczne_modul["PełnaNazwaOpisuModułu"](nazwa_modolu);
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template~=nazwa_przestrzeni)then
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template==nazwa_przestrzeni)then
if(mw.ustring.match(nazwa_modolu,"^[^:]+:(.*/opis)%s*$"))then
local szablony_magiczne={};
return p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,dokumentacja);
else
local szablony_magiczne={};
local tekst_artykulu_caly=p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,false,nil,true);
if(not tekst_artykulu_caly)then return;end;
local iterator=mw.ustring.gmatch(tekst_artykulu_caly,"{{[^{}]-}}");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for wywolanie in iterator do
local function AnalizujDokumentacja(_,wywolanie)
local nazwa_strony2;
local dokumentacja_szablonu=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*}}");
if(dokumentacja_szablonu)then
local nazwa_strony2=nazwa_modolu.."/opis";
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja);
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,"{{%s*[Dd]okumentacja%s*}}",tekst_artykulu2);
else
local dopasowanie=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*|");
if(dopasowanie)then
local tablica_parametrow_dokumentacja=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie)
local nazwa_strony2=tablica_parametrow_dokumentacja[1];
local zawartosc=tablica_parametrow_dokumentacja["zawartość"];
if((nazwa_strony2)and(not zawartosc))then
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja,nazwa_modolu);
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,tekst_artykulu2);
elseif(zawartosc)then
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
zawartosc=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](zawartosc);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,zawartosc);
end;
end;
end;
end;
local function __Funkcja2(oznaczenie_szablonu,wywolanie,tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(not oznaczenie_szablonu)then return; end;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local wywolanie2,_=mw.ustring.gsub(wywolanie,stronicowyparser_potrzebne_modul.OgolnyWzor(oznaczenie_szablonu),stronicowyparser_potrzebne_modul.AnalizaSzablonu(oznaczenie_szablonu));
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
wywolanie2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wywolanie2);
tekst_artykulu_caly,_=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,wywolanie2);
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(wywolanie,AnalizujDokumentacja,__Funkcja2)
end;
return tekst_artykulu_caly;
end;
end;
end;
function p.LadujZawartoscStrony(self,nazwa_strony,czy_noinclude,szablony_magiczne,dokumentacja,nazwa_modolu_szablonu_opisu,szablon_nie_opis)
local czy_nazwa_strony_z_tylko_odstepami_lub_pusta=mw.ustring.match(nazwa_strony,"^%s*$");
local uchwyt_strony;
local tekst_artykulu;
local nazwa_strony_bez_kodow_html;
if(not czy_nazwa_strony_z_tylko_odstepami_lub_pusta)then
nazwa_strony_bez_kodow_html=require("Module:Html").TransformacjaKlasyZnakowej(nazwa_strony);
uchwyt_strony = mw.title.makeTitle('', nazwa_strony_bez_kodow_html);
tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
local czy_istnieje = tekst_artykulu or (uchwyt_strony and uchwyt_strony.exists or nil);
if(not czy_istnieje)then
if(self and self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje=0
end;
end;
return nil;
else
local czy_nie_istnieje_zawartosc=((uchwyt_strony)and(not tekst_artykulu));
if(czy_nie_istnieje_zawartosc)then
return nil;
end;
end;
else
return nil;
end;
if((czy_noinclude)and(not dokumentacja)and(szablon_nie_opis))then
local iterator=mw.ustring.gmatch(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->");
for dokumentacja_tekst in iterator do
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tekst=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(dokumentacja_tekst);
if(tekst~=dokumentacja_tekst)then
local techniczne_modul=require("Module:Techniczne");
dokumentacja_tekst=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](dokumentacja_tekst);
tekst=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->"..dokumentacja_tekst.."<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->",tekst);
end;
end;
end;
if(czy_noinclude)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","%1");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->.-<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","");
else
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->.-<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->(.-)<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","%1");
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>(.-)</[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<!--(.-)-->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->.-<%s-/%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Pp][Rr][Ee]%s->.-<%s-/%s-[Pp][Rr][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<%s-[mM][aA][tT][hH]%s->.-<%s-/%s-[mM][aA][tT][hH]%s->)","");
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{NAMESPACE}}"]=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{PAGENAME}}"]=nazwy_modul["NAZWASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{FULLPAGENAME}}"]=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
end;
if(szablony_magiczne)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"{{[^{}]+}}",szablony_magiczne);
local ramka_modul=require("Module:Ramka");
tekst_artykulu=ramka_modul.InstrukcjeWarunkowe(tekst_artykulu);
end;
if(not szablon_nie_opis)then
if(not dokumentacja)then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
tekst_artykulu=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(tekst_artykulu);
end;
end;
return tekst_artykulu;
end;
function p.ZbieranieInformacji(self,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, czy_artukul_korzystany,tabela_listy_danych_analizy_ksiazki2,linkobiekt)
if(not czy_artukul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki and self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
return 0;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_ksiazki,"^[^/]+/(.-)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_ksiazki,"^%s*[Bb]rudnopis/[^/]+/(.-)$")))
)then
p:DodawanieElementowDoTablicy("strony_poza_zakresem_obslugiwanym",nil,nazwa_przestrzeni,nazwa_ksiazki)
end;
local parametry_modul=require("Module:Parametry");
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_ksiazka=tabela_przestrzeni[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_artykolow;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local uchwyty_i_numeracje=tabela_artykul.uchwyty_i_numeracje;
if(uchwyty_i_numeracje)then
return 0;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
if(czy_artukul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=nazwa_artykulu;
end;
end;
local nazwa_modolu=(nazwa_przestrzeni=="")and ((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu)
or nazwa_przestrzeni..":"..((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu);
local tekst_rozwiniety_calego_artykulu=p:SpreparowanyWikikodStrony(nazwa_modolu);
if(not czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
-- przydzielanie tablicy
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.lista_artykolow)then tablica_ksiazki.lista_artykolow={};end;
if(not tablica_ksiazki.lista_artykolow[nazwa_artykulu])then tablica_ksiazki.lista_artykolow[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_artykolow[nazwa_artykulu];
local tablica_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
if(czy_artukul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tabela_listy_danych_analizy_ksiazki2)then tabela_listy_danych_analizy_ksiazki2={};end;
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=element_w_tablicy_obiekt[1];
tabela_listy_danych_analizy_ksiazki2[wartosc]={};
if(czy_artukul_korzystany)then linkobiekt[wartosc]={};end;
end;
local strona;
if(czy_artukul_korzystany)then
strona="";
else
strona=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki..((nazwa_artykulu~="")and "/"..nazwa_artykulu or "")
end;
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if((self.tabela_listy_danych_analizy_ksiazki.zastepczy) or (not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki))))then
if((nazwa_przestrzeni)and(nazwa_ksiazki))then
local czy_ksiazka_istnieje_w_tablicy=false;
local tabela_ksiazek=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_ksiazek)then
for nazwa_ksiazki_i,tablica_spisu in pairs(tabela_ksiazek) do
if(nazwa_ksiazki_i==nazwa_ksiazki)then
if(tablica_spisu.spis)then
czy_ksiazka_istnieje_w_tablicy=true;
break;
end;
end;
end;
end;
if(not czy_ksiazka_istnieje_w_tablicy)then
local tabela_wstepnych_informacji;
local normalna_nazwa_przestrzeni;local normalna_nazwa_ksiazki;
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
else
normalna_nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni;
normalna_nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki;
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki,czy_artukul_korzystany);
end;
if(tabela_wstepnych_informacji==0)then
if(czy_artukul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.problemy.korzystane_strona_glowna_nie_istnieje=0;
else
p:DodawanieElementowDoTablicy("doloczone_strony_glowne_nie_istnieja",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
else
if(tabela_wstepnych_informacji)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tablica_ksiazki.spis=tabela_wstepnych_informacji[1];
tablica_ksiazki.licencja=tabela_wstepnych_informacji[2];
else
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni]={};
end;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki]={};
end;
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].spis=tabela_wstepnych_informacji[1];
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].licencja=tabela_wstepnych_informacji[2];
end;
if(not tabela_wstepnych_informacji[1])then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych)then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=""))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych=0;
end;
end;
end;
else
tablica_ksiazki.spis=tabela_wstepnych_informacji;
end;
else
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
else
p:DodawanieElementowDoTablicy("brak_spisow_tresci_do_doloczonych_ksiazek_na_ich_stronach_glownych",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
end;
function StronaZbiorcza()
if(czy_artukul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
return stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,nil,TakFun,NieFun,nil);
end;
return nil;
end;
InneInformacjePrzebneDoAnalizowanejKsiazki();
local strona_zbiorcza=StronaZbiorcza();
if(strona_zbiorcza)then
if((tablica_ksiazki.spis_tresci)and(tablica_ksiazki.spis_tresci.tekst)and(tablica_ksiazki.spis_tresci.wywolanie)
and(tablica_ksiazki.spis_tresci.wywolanie[1])and(tablica_ksiazki.spis_tresci.wywolanie[2]))then
local pelny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1])
if(pelny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1],tablica_ksiazki.spis_tresci.tekst);
else
local wzgledny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2])
if(wzgledny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2],tablica_ksiazki.spis_tresci.tekst);
end;
end;
end;
end;
if(czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local toc;
if((not czy_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone))then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(czy_artukul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(obiekty_modul.strona_start[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
return;
elseif(obiekty_modul.strona_start_inne[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif(obiekty_modul.strona_start_analiza_spis_tresci[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
end;
end;
local plik=mw.ustring.match(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"^{{:([^:|{}]-)}}$");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=mw.ustring.match(tabela_parametrow_szablonu[0],"^[wW]ypowiedzenie$");
local linkobiekt2;
local link;
if(czy_wypowiedzenie)then
linkobiekt2=false;
link=false;
else
linkobiekt2=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]inkObiekt$");
if(linkobiekt2)then
link=true;
else
link=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]ink");
end;
end;
local czy_obsluzone=true;
local funkcja_aliasow=function(nazwa_szablonu,elementy_w_tablicy_obiekty)
local wzor_nazwy_szablonu1=mw.ustring.gsub(elementy_w_tablicy_obiekty[1],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[2])then
if(type(elementy_w_tablicy_obiekty[2])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[2])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[2],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
end;
end;
end;
return czy_aliasy;
end;
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow_bez_obiektu_nienazwanego)do
local wartosc_elementu=elementy_w_tablicy_obiekty[1];
if(not link)then
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
czy_aliasy=czy_wypowiedzenie or funkcja_aliasow(tabela_parametrow_szablonu[0],elementy_w_tablicy_obiekty);
if(czy_aliasy)then
if((not czy_wypowiedzenie)
or((czy_wypowiedzenie)and(
(tabela_parametrow_szablonu["rodzaj"]==wartosc_elementu)
))
)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artukul_korzystany,elementy_w_tablicy_obiekty[5]);
czy_obsluzone=false;
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu= tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
if(uchwyt_obiektu and not mw.ustring.match(uchwyt_obiektu,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
break;
end;
end;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
elseif(czy_artukul_korzystany)then
if(link)then
local funkcja_aliasow_2=function(zmienna)
if(wartosc_elementu~=zmienna)then return false;end;
local wzor_nazwy_szablonu1="[Ll]ink"..wartosc_elementu;
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
local szablon;
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[3])then
if(type(elementy_w_tablicy_obiekty[3])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[3])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
szablon=alias
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[3],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then szablon=elementy_w_tablicy_obiekty[3];end;
end;
end;
else
szablon="Link"..wartosc_elementu;
end;
return czy_aliasy,szablon;
end;
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
local typ=mw.getContentLanguage():lcfirst(wartosc_elementu);
local alias,szablon=funkcja_aliasow_2(wartosc_elementu);
if((alias)or((linkobiekt2)and(tabela_parametrow_szablonu["typ"]==typ)))then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,wartosc_elementu, linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=((alias)and szablon or "LinkObiekt")..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
czy_obsluzone=false;
break;
end;
else
local alias,szablon=funkcja_aliasow_2("Śródtytuł");
if(alias)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Śródtytuł", linkobiekt);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
czy_obsluzone=false;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=szablon..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
break;
end;
end;
end;
end;
end;
if(czy_obsluzone)then
if(czy_wypowiedzenie)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artukul_korzystany,obiekty_modul.obiekty[5]);
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[obiekty_modul.obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt"..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
elseif(czy_artukul_korzystany)then
if(linkobiekt2)then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Obiekt", linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[1]] or tabela_parametrow_szablonu["uchwyt"];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
else
for wartosc_elementu,_ in pairs(obiekty_modul.bez_uchwytow_spis_tresci)do
local wzor_artykolow_ksiazek=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_artykolow_ksiazek.."$"))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:ZbieranieInformacjiArtykolowKsiazek(tabela_parametrow_szablonu);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="ArtykułKsiążki:"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
end;
for wartosc_elementu,_ in pairs(obiekty_modul.szablony_pudelka)do
local wzor_szablonu_pudelka=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_szablonu_pudelka.."$"))then
p:ZbieranieInformacjiPudelek(tabela_parametrow_szablonu);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=tabela_parametrow_szablonu[0]..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,AnalizaParametrowSzablonuISzablonu);
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].uchwyty_i_numeracje=tabela_listy_danych_analizy_ksiazki2;
if(czy_artukul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu);
mw.log('To jest strona zbiorcza.')
end;
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
mw.log("Liczę spis treści artykułów korzystanych.");
end;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykolu=tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].TOC=toc;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzLinki(self,tabela_listy_danych_analizy_ksiazki2,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if((not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2])or(nazwa_artykulu==""))then
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
local czy_uchwyty_nie_sa_ponumerowane=true;
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then
czy_uchwyty_nie_sa_ponumerowane=false;
break;
end;
end;
end;
if(czy_uchwyty_nie_sa_ponumerowane)then
local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
if(czy_tylko_ze_znakami_odstepu_lub_puste)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]) then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]=0;
end;
return;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]=0;
return;
end;
end;
end;
end;
end;
function p.PrzetworzMozliweWszystkieRodzajeObiektow(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
for _,element_w_podtablicy_kategorii_bledow in pairs(obiekty_modul.tablica_obiektow)do
local element_obiekty=element_w_podtablicy_kategorii_bledow[1];
tabela_listy_danych_analizy_ksiazki=p:Sprawdzanie_i_numerowanie(dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja);
end;
end;
function p.PrzetworzZebraneInformacje(self,tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2)
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
for nazwa_przestrzeni,tablica_nazw_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)do
for nazwa_ksiazki,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do
local prosto=true;
if(self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
if((nazwa_przestrzeni==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni)
and(nazwa_ksiazki==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki))then
prosto=false;
end;
end;
if(prosto)then
local nazwa_przestrzeni_nazw_strony=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_ksiazki);
for nazwa_artykulu, dane_artykulu in pairs(tablica_nazw_artykulow.lista_artykolow) do
local biezacy_artykul=dane_artykulu.artykul_biezacy;
local numer_obiektu_w_ksiazce=1;local czy_da_sie_numerowac_obiekty_ze_spisem_tresci =false;
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
else
local tab_ksiazki=tablica_nazw_artykulow.spis;
if(tab_ksiazki)then
for _,tab_rozdzialu in pairs(tab_ksiazki)do
if(tab_rozdzialu[2])then
for _,nazwa_artykulu1 in ipairs(tab_rozdzialu[2])do
if(nazwa_artykulu1[1]~=nazwa_artykulu)then
numer_obiektu_w_ksiazce=numer_obiektu_w_ksiazce+1;
else
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;break;
end;
end;
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then break;end;
end;
end;
end;
local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu)
p:DodawanieElementowDoTablicy("bledy_uchwytow_doloczonych_stron",nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki);
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
elseif(not czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
else
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
end;
end;
end;
end;
for _,obiekt in pairs(obiekty_modul.tablica_obiektow)do
local obiekt2=obiekt[1];
p:SprawdzLinki(tabela_listy_danych_analizy_ksiazki2,linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2);
end;
return tabela_listy_danych_analizy_ksiazki;
end;
function p.Sprawdzanie_i_numerowanie(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
local parametry_modul=require("Module:Parametry");
local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu];
if(obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[nazwa_obiektu])then
return tabela_listy_danych_analizy_ksiazki;
end;
for licznik,element_obiektu in pairs(tabela_obiektu)do
local czy_numerowac=true;
for licznik2=1, licznik-1,1 do
if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then
if(biezacy_artykul)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu])then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu]=0;
end;
else
__Funkcja(nazwa_obiektu);
end;
tabela_obiektu[licznik2][1]=nil;
czy_numerowac=false;
end;
end;
if(czy_numerowac)then
if(numer_artykulu_w_ksiazce>0)then
element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
elseif(numer_artykulu_w_ksiazce==0)then
element_obiektu[2]=licznik
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0
end;
end;
end;
return tabela_listy_danych_analizy_ksiazki;
end;
return p;
qov5vq91ww0k2oaoz5vzwtp4lpm4sv3
438603
438602
2022-08-23T18:36:21Z
Persino
2851
Scribunto
text/plain
local p={};
function p.ZaczynajAnalizowacArtykulyKsiazek(self)
self.tabela_listy_danych_analizy_ksiazki={};
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu={};
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
self.tabela_listy_danych_analizy_ksiazki.problemy={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_doloczonych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu={};
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych={};
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=elementy_w_tablicy_obiekty[1];
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[wartosc]={};
end;
self.tabela_listy_danych_analizy_ksiazki.licencja={};
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe")
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"]();
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"]();
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"]();
local pelna_nazwa_ksiazki="Szablon:Podręcznik/Ustawienia/"..((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki;
local techniczne_modul=require("Module:Techniczne");
local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki.."/config",};
if(ile>0)then
local frame=mw.getCurrentFrame();
local nazwa_szablonu=techniczne_modul.NazwaSzablonu(pelna_nazwa_ksiazki);
local zastepczy=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępczy",}};
if(not mw.ustring.match(zastepczy,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.zastepczy=true;
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka zastępcza",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł zastępczy",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
local ksiazka_normalna=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul_normalny=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka_normalna,"^%s*$"))then
local strona=ksiazka_normalna..((artykul_normalny~="") and ("/"..artykul_normalny) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
else
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
local tabela_listy_danych_analizy_ksiazki2={};
local linkobiekt={};
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, true,tabela_listy_danych_analizy_ksiazki2,linkobiekt);
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki,})then
p:PrzetworzZebraneInformacje(tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.DodawanieElementowDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki)
local tabela_listy_danych_analizy_ksiazki=self.tabela_listy_danych_analizy_ksiazki.problemy;
if(not tabela_listy_danych_analizy_ksiazki[element_tablicy])then
tabela_listy_danych_analizy_ksiazki[element_tablicy]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[element_tablicy];
if(nazwa_obiektu)then
if(not tabela_listy_danych_analizy_ksiazki[nazwa_obiektu])then
tabela_listy_danych_analizy_ksiazki[nazwa_obiektu]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_obiektu];
end;
if(not tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni])then
tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni];
tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki]=true;
end;
function p.SpisTresciWstep(self,tekst_artykulu,nazwa_strony,obiekty,nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany)
nazwa_strony=nazwa_strony and mw.ustring.gsub(nazwa_strony,"(|)",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end) or nil;
local tablica_spisu_tresci=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local uzyskany_w_wyniku_parsowania;
local tablica_powtarzajacych_sie_elementow={};
local elementy_linku=nil;
local frame=mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tab_szablony=mw.loadData("Module:StronicowyParser/obiekty").szablony_stronicowego_parsera;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu);
local numeracja;
local function SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
local wywolanie_naglowek_iterator=mw.ustring.match(naglowek,"{{%s*Śródtytuł%s*}}") or mw.ustring.gmatch(naglowek,"{{%s*Śródtytuł%s*|[^{}]*}}");
local powtorka=0;
for wywolanie_naglowek in wywolanie_naglowek_iterator do
wywolanie_naglowek=mw.ustring.gsub(wywolanie_naglowek,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie_naglowek);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(powtorka>=1)then
if(self.tabela_listy_danych_analizy_ksiazki)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("powtorka_naglowek_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
break;
end;
powtorka=powtorka+1;
end;
end;
local function SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu)
local jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*}}") or mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*|[^{}]*}}");
if(jest_naglowkuj_w_tekscie_rozdzialu)then
jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.gsub(jest_naglowkuj_w_tekscie_rozdzialu,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](jest_naglowkuj_w_tekscie_rozdzialu);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("naglowek_w_tekscie_rozdzialu_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
end;
for naglowek,text_rozdzialu,poziom_rozdzialu in iterator do
numeracja=nil;
if(self)then
SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu);
end;
local function SzablonyWywolywane(wywolanie)
local parametry_wywolania_szablonu=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie);
if(tab_szablony[parametry_wywolania_szablonu[0]])then return "";end;
return wywolanie;
end;
naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywane);
naglowek=frame:preprocess(naglowek);
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[:?([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+|([^{}%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%s*%S+%s+([^%[%]]*)%]","%1");
naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
local linki_modul=require("Module:Linki");
local nazwa_rozdzialu_w_artykule=linki_modul["UsuńZnaczniki"](naglowek);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"<[^<>]+>","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[<>]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"_"," ");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";");
local numer_tego_samego_naglowka=1;
local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule);
local numer_tego_samego_naglowka=1;
for s=1,#tablica_powtarzajacych_sie_elementow,1 do
local element=tablica_powtarzajacych_sie_elementow[s];
if(element==nazwa_rozdzialu_w_artykule)then
numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
end;
end;
if(numer_tego_samego_naglowka==1)then
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule,naglowek};
else
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek};
end;
if((obiekty)and(numeracja))then
obiekty[#obiekty+1]={numeracja,{elementy_linku[1], elementy_linku[2]}};
end;
if((poziom_rozdzialu or 0)>0)then
local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu);
tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule;
if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={};end;
tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony};
end;
end;
if(self)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
if((linia_poczatkowa)and(mw.ustring.match(linia_poczatkowa,"^=+.+=+%s*")))then
return tablica_spisu_tresci;
end;
local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=+[^=]+=+") or tekst_artykulu;
SzablonNaglowkujWTekscieRozdzialu(tekst_zerowy);
end;
end;
end;
return tablica_spisu_tresci;
end;
function p.ZbierajJakieSaArtykulyIInformacjeOLicencji(self,nazwa_przestrzeni,nazwa_ksiazki,czy_artykul_korzystany)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_ksiazki))then return 0;end;
local nazwa_modolu=(parametry_modul.CzyTak(nazwa_przestrzeni)and parametry_modul.CzyTak(nazwa_ksiazki))and nazwa_przestrzeni..":"..nazwa_ksiazki or nazwa_ksiazki;
local tekst_rozwiniety_calego_artykulu=p.SpreparowanyWikikodStrony(nil,nazwa_modolu,true);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
----
local techniczne_modul=require("Module:Techniczne");
local wywolanie_spis_tresci="{{%s*"..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or ":")
..techniczne_modul["WzórNazwyStrony"](nazwa_ksiazki).."(/[Ss]pis[%s_]+treści)%s*}}";
local wywolanie_spis_tresci2="{{%s*(/[Ss]pis[%s_]+treści)%s*}}";
local strona_ze_spisem_tresci=mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci)
local strona_ze_spisem_tresci2=(not strona_ze_spisem_tresci) and mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci2) or nil;
if(strona_ze_spisem_tresci or strona_ze_spisem_tresci2)then
local tekst_rozwiniety_calego_spisu_tresci=p.SpreparowanyWikikodStrony(nil,nazwa_modolu..strona_ze_spisem_tresci,true);
if(tekst_rozwiniety_calego_spisu_tresci)then
tekst_rozwiniety_calego_spisu_tresci=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_rozwiniety_calego_spisu_tresci);
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
tablica_ksiazki.spis_tresci.tekst=tekst_rozwiniety_calego_spisu_tresci;
if(not tablica_ksiazki.spis_tresci.wywolanie)then tablica_ksiazki.spis_tresci.wywolanie={};end;
tablica_ksiazki.spis_tresci.wywolanie[1]=wywolanie_spis_tresci;
tablica_ksiazki.spis_tresci.wywolanie[2]=wywolanie_spis_tresci2;
----
local wywolanie=strona_ze_spisem_tresci and wywolanie_spis_tresci or wywolanie_spis_tresci2;
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,wywolanie,tekst_rozwiniety_calego_spisu_tresci);
end;
end;
----
local wyzyskane_wywolanie_szablonu_spis_tresci="";
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_modul=require("Module:StronicowyParser");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_ksiazki,true);
local html_modul=require("Module:Html");
local _1=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!}}");
local _2=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!((}}");
local _3=html_modul["KodyHTMLZnakówWikiCiągu"]("{{))!}}");
local mikroszablony={
["{{!}}"]=_1,
["{{!((}}"]=_2,
["{{))!}}"]=_3,
};
local mikroszablony_odwrotne={
[_1]="|",
[_2]="[[",
[_3]="]]",
};
local stronicowyparser_informacje=mw.loadData("Module:StronicowyParser/obiekty");
local jakie_nie_rozdzialy=stronicowyparser_informacje.tab_rozdzialow_pomijanych_w_rozwazaniach_na_stronach_glownych_ksiazek;
local jakie_spisy_tresci=stronicowyparser_informacje.tab_rozdzialow_glownych_spisow_tresci_ksiazek;
local wyrazenie_regularne="({{[&#;!%(%)]+}})";
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local function AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja)
rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
if((poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[rozdzial]))then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if(poziom_spisu_tresci<poziom_rozdzialu)then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
repeat
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._3.."%4}}");
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._1.."%4".._3.."%5}}");
until((not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}") )
and (not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}")));
text,_=mw.ustring.gsub(text,"{{[^{}]+}}",mikroszablony);
if(not tabela_artykulow)then tabela_artykulow={};end;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_artykulow[numer_rozdzialu_w_ksiazce][1]={rozdzial,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,},};
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([^{}%[%]\n]*)[^%S\n]*([^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
czy_rozdzial=true;
if((poziom_rozdzialu or 0)>0)then
return "","",rozdzial,true;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek and wyzyskane_wywolanie_szablonu_spis_tresci)then
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=iter();
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
----
local function LiniaArtykolow(linia)
repeat
linia,_=mw.ustring.gsub(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])", function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
linia,_=mw.ustring.gsub(linia,"({{[^{}]*)(,)([^{}]*}})",function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
until not mw.ustring.match(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])") and not mw.ustring.match(linia,"({{[^{}]*)(,)([^{}]*}})");
if(mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]Książka[%s_]*|[^{}]*}})")
)then
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})","%1,%2");
else
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
end;
local tabela_linii_artykolow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykolow,1 do
tabela_linii_artykolow[i],_=mw.ustring.gsub(tabela_linii_artykolow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykolow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local tab_linia=LiniaArtykolow(linia)
for k=1,#tab_linia,1 do
local iterator2=mw.ustring.gmatch(tab_linia[k],"([%[{][%[{][^{}]-[%]}][%]}])");
for wyzyskane_wywolanie_szablonu_spis_tresci in iterator2 do
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci2,wyrazenie_regularne,mikroszablony_odwrotne);
wyzyskane_wywolanie_szablonu_spis_tresci2=parametry_modul["Odstępy"]{[1]=wyzyskane_wywolanie_szablonu_spis_tresci2,[2]="tak",};
if(mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci2,"^%[%[([^%[%]]+)%]%]$"))then
wyzyskane_wywolanie_szablonu_spis_tresci=wyzyskane_wywolanie_szablonu_spis_tresci2;
end;
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom;
if(wliczaj_artykuly_tego_rozdzialu)then
tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_ksiazki);
--Rozdzialy początek
local znaki_niedozwolone;
if((tab_pozycja_artykulu)and(tab_pozycja_artykulu[1]))then
tab_pozycja_artykulu[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_artykulu[1],[2]="tak",}
--pozycja_artykulu=mw.getContentLanguage():ucfirst(pozycja_artykulu);
tab_pozycja_artykulu[1]=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](tab_pozycja_artykulu[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_artykulu[1],"[|<>{}%[%]]");
if(znaki_niedozwolone)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci)then
self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci=0;
end;
end;
tab_pozycja_artykulu[1]=html_modul["PoprawAdresNagłówkaStronyAdresu"](tab_pozycja_artykulu[1]);
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][2])then tabela_artykulow[numer_rozdzialu_w_ksiazce][2]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local strona=stronicowyparser_modul.PrzekierowanieDoStrony(nazwa_ksiazki..((tab_pozycja_artykulu[1]~="") and ("/"..tab_pozycja_artykulu[1]) or ""));
if(strona)then
tab_pozycja_artykulu[1]=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
local tab_stare={((tab_pozycja_artykulu[2]) and ({tab_pozycja_artykulu[1],tab_pozycja_artykulu[2],}) or tab_pozycja_artykulu[1]),{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][2],tab_stare);
break;
elseif((tab_pozycja_artykulu_inne)and(tab_pozycja_artykulu_inne[1]))then
local wiki_modul=require("Module:Wiki");
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][3])then tabela_artykulow[numer_rozdzialu_w_ksiazce][3]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local tab_stare={((tab_pozycja_artykulu_inne[1])and((tab_pozycja_artykulu_inne[2])or(tab_pozycja_artykulu_inne[3])or(tab_pozycja_artykulu_inne[4])))and({tab_pozycja_artykulu_inne[1],tab_pozycja_artykulu_inne[2],tab_pozycja_artykulu_inne[3],tab_pozycja_artykulu_inne[4],}) or tab_pozycja_artykulu_inne[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,#(tabela_artykulow[numer_rozdzialu_w_ksiazce][2] or {}),};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][3],tab_stare);
end;
else
link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"({{[^{}]+}})");
end;
if(((not tab_pozycja_artykulu)or(not tab_pozycja_artykulu[1]))and(link_szablon)and(czy_artykul_korzystany)and(licencja_z_autorem))then
local wywolanie_spisu_tresci=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^{{[Ll]icencja|([^{}]-)}}$");
if(wywolanie_spisu_tresci)then
wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"(%[%[[^|%[%]]-)(|)([^|%[%]]-%]%])","%1&#"..tostring(mw.ustring.byte('|'))..";%3");
local tabela_parametrow=techniczne_modul["ParsujWywołanieSzablonu"](wyzyskane_wywolanie_szablonu_spis_tresci);
if(tabela_parametrow)then
local autor=tabela_parametrow["Autor"];
local szkoly=tabela_parametrow["Ukończone szkoły"];
local email=tabela_parametrow["Email"];
local dotyczy=tabela_parametrow["Dotyczy"];
local licencjonowanie=tabela_parametrow["Licencjonowanie"];
local umowa_prawna=tabela_parametrow["Umowa prawna"];
local konsekwencje=tabela_parametrow["Konsekwencje"];
if(autor~=nil)then
autor,_=mw.ustring.gsub(autor,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(szkoly~=nil)then
szkoly,_=mw.ustring.gsub(szkoly,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(email~=nil)then
email,_=mw.ustring.gsub(email,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(dotyczy~=nil)then
dotyczy,_=mw.ustring.gsub(dotyczy,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(licencjonowanie~=nil)then
licencjonowanie,_=mw.ustring.gsub(licencjonowanie,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(umowa_prawna~=nil)then
umowa_prawna,_=mw.ustring.gsub(umowa_prawna,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(konsekwencje~=nil)then
konsekwencje,_=mw.ustring.gsub(konsekwencje,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
break;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end
end;
end;
end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end
local parsuj_rozdzialami=nil;
for rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja in iterator do
AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",tekst_rozwiniety_calego_artykulu,1,nil,nil);
end;
if(czy_artykul_korzystany)then tabelalisty2={tabela_artykulow, tabela_licencji_spisu_tresci,};else tabelalisty2=tabela_artykulow;end;
return tabelalisty2;
end;
function p.ObslugaSzczegolnaElementu(self,kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany)
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
function p.ObsluzSzablonWzor(self,tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji)
local kod_uchwytu=nil;
if(tabela_parametrow_szablonu["uchwyt"])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu["uchwyt"]);
elseif(tabela_parametrow_szablonu[numer_numeracji])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu[numer_numeracji]);
end;
if(kod_uchwytu and not mw.ustring.match(kod_uchwytu,"^%s*$"))then
p:ObslugaSzczegolnaElementu(kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany);
end;
end;
function p.Czy_jest_taki_element_w_tabeli_wynikow(self,element, nazwa_przestrzeni, nazwa_ksiazki)
local parametry_modul=require("Module:Parametry");
local tabela_problemow=self.tabela_listy_danych_analizy_ksiazki.problemy[element];
return (parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow,nazwa_przestrzeni)
and parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow[nazwa_przestrzeni],nazwa_ksiazki));
end;
function p.SprawdzCzyJestDostepnySpisTresci(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if(nazwa_przestrzeni)then
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu;
if(tablica_przestrzeni)then
local tabela_ksiazek=tablica_przestrzeni[nazwa_przestrzeni];
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki~=nazwa_ksiazki)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=nazwa_artykulu))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:DodawanieElementowDoTablicy("brak_spisy_tresci_do_doloczanych_stron",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron)then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron=0;
end;
end;
end;
end;
end;
end;
function p.PusteParametryLinkow(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and mw.ustring.match(nazwa_ksiazki,"^%s*$") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and mw.ustring.match(nazwa_artykulu,"^%s*$") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and mw.ustring.match(uchwyt_obiektu,"^%s*$") or nil;
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1]=0;
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2]=0;
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3]=0;
end;
end;
end;
function p.ZbieranieInformacjiArtykolowKsiazek(self,tabela_parametrow_szablonu)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=nazwa_artykulu or (pelna_nazwa_ksiazki and (((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki))and ksiazkowe_modul["NazwaArtykułuKsiążki"]() or "") or ksiazkowe_modul["NazwaArtykułuKsiążki"]());
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.ZbieranieInformacjiPudelek(self,tabela_parametrow_szablonu)
if((not tabela_parametrow_szablonu["nazwa przestrzeni nazw"])and(not tabela_parametrow_szablonu["nazwa jednostki"]))then return;end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_jednostki=(tabela_parametrow_szablonu["nazwa jednostki"]
and mw.ustring.gsub(tabela_parametrow_szablonu["nazwa jednostki"],"^([^#]*)#(.*)$","%1")
or nil
) or nazwy_modul["NAZWASTRONY"]();
local nazwa_przestrzeni=nazwy_modul.Np{nazwa=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwy_modul["NAZWAPRZESTRZENI"]()};
local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelna_nazwa_ksiazki);
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.LinkowanieOgolnie(self,tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,nazwa_obiektu, linkobiekt)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
uchwyt_obiektu=(uchwyt_obiektu)and parametry_modul["Odstępy"](uchwyt_obiektu) or nil;
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
nazwa_artykulu=require("Module:Parametry")["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](pelna_nazwa_ksiazki);
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
nazwa_ksiazki=nazwy_modul["NAZWASTRONY"](pelna_nazwa_ksiazki);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
end;
if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
elseif(nazwa_ksiazki=="")then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
p:LinkowanieNastepne(nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt);
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt)
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu])then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu]=0;
end;
end;
function p.LinkowanieDalszePrace(self,tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt,Funkcja_sprawdzania_parametrow_linkow)
local linkobiekttab=linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.LinkowanieNastepne(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not mw.ustring.match(nazwa_przestrzeni,"[|<>{}%[%]]")))or(nazwa_przestrzeni=="")))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not mw.ustring.match(nazwa_artykulu,"[|<>{}%[%]]")))or(nazwa_artykulu=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not mw.ustring.match(nazwa_ksiazki,"[|<>{}%[%]]"))))then
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false,tabela_listy_danych_analizy_ksiazki2);
if(tabela_listy_danych_analizy_ksiazki0)then
if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]=0;
end;
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
end;
else
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron==nil)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron=0;
else
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_stron_doloczanych_do_stron=0;
end;
end;
end;
end;
function p.SpreparowanyWikikodStrony(self,nazwa_modolu,dokumentacja)
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local nazwy_modul=require("Module:Nazwy");
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu);
if(nazwy_np_modul.Module==nazwa_przestrzeni)then
local techniczne_modul=require("Module:Techniczne");
nazwa_modolu=techniczne_modul["PełnaNazwaOpisuModułu"](nazwa_modolu);
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template~=nazwa_przestrzeni)then
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template==nazwa_przestrzeni)then
if(mw.ustring.match(nazwa_modolu,"^[^:]+:(.*/opis)%s*$"))then
local szablony_magiczne={};
return p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,dokumentacja);
else
local szablony_magiczne={};
local tekst_artykulu_caly=p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,false,nil,true);
if(not tekst_artykulu_caly)then return;end;
local iterator=mw.ustring.gmatch(tekst_artykulu_caly,"{{[^{}]-}}");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for wywolanie in iterator do
local function AnalizujDokumentacja(_,wywolanie)
local nazwa_strony2;
local dokumentacja_szablonu=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*}}");
if(dokumentacja_szablonu)then
local nazwa_strony2=nazwa_modolu.."/opis";
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja);
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,"{{%s*[Dd]okumentacja%s*}}",tekst_artykulu2);
else
local dopasowanie=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*|");
if(dopasowanie)then
local tablica_parametrow_dokumentacja=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie)
local nazwa_strony2=tablica_parametrow_dokumentacja[1];
local zawartosc=tablica_parametrow_dokumentacja["zawartość"];
if((nazwa_strony2)and(not zawartosc))then
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja,nazwa_modolu);
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,tekst_artykulu2);
elseif(zawartosc)then
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
zawartosc=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](zawartosc);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,zawartosc);
end;
end;
end;
end;
--[[local function __Funkcja2(oznaczenie_szablonu,wywolanie,tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(not oznaczenie_szablonu)then return; end;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local wywolanie2,_=mw.ustring.gsub(wywolanie,stronicowyparser_potrzebne_modul.OgolnyWzor(oznaczenie_szablonu),stronicowyparser_potrzebne_modul.AnalizaSzablonu(oznaczenie_szablonu));
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
wywolanie2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wywolanie2);
tekst_artykulu_caly,_=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,wywolanie2);
end;]]
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(wywolanie,AnalizujDokumentacja--[[,__Funkcja2]])
end;
return tekst_artykulu_caly;
end;
end;
end;
function p.LadujZawartoscStrony(self,nazwa_strony,czy_noinclude,szablony_magiczne,dokumentacja,nazwa_modolu_szablonu_opisu,szablon_nie_opis)
local czy_nazwa_strony_z_tylko_odstepami_lub_pusta=mw.ustring.match(nazwa_strony,"^%s*$");
local uchwyt_strony;
local tekst_artykulu;
local nazwa_strony_bez_kodow_html;
if(not czy_nazwa_strony_z_tylko_odstepami_lub_pusta)then
nazwa_strony_bez_kodow_html=require("Module:Html").TransformacjaKlasyZnakowej(nazwa_strony);
uchwyt_strony = mw.title.makeTitle('', nazwa_strony_bez_kodow_html);
tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
local czy_istnieje = tekst_artykulu or (uchwyt_strony and uchwyt_strony.exists or nil);
if(not czy_istnieje)then
if(self and self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje=0
end;
end;
return nil;
else
local czy_nie_istnieje_zawartosc=((uchwyt_strony)and(not tekst_artykulu));
if(czy_nie_istnieje_zawartosc)then
return nil;
end;
end;
else
return nil;
end;
if((czy_noinclude)and(not dokumentacja)and(szablon_nie_opis))then
local iterator=mw.ustring.gmatch(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->");
for dokumentacja_tekst in iterator do
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tekst=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(dokumentacja_tekst);
if(tekst~=dokumentacja_tekst)then
local techniczne_modul=require("Module:Techniczne");
dokumentacja_tekst=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](dokumentacja_tekst);
tekst=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->"..dokumentacja_tekst.."<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->",tekst);
end;
end;
end;
if(czy_noinclude)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","%1");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->.-<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","");
else
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->.-<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->(.-)<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","%1");
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>(.-)</[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<!--(.-)-->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->.-<%s-/%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Pp][Rr][Ee]%s->.-<%s-/%s-[Pp][Rr][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<%s-[mM][aA][tT][hH]%s->.-<%s-/%s-[mM][aA][tT][hH]%s->)","");
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{NAMESPACE}}"]=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{PAGENAME}}"]=nazwy_modul["NAZWASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{FULLPAGENAME}}"]=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
end;
if(szablony_magiczne)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"{{[^{}]+}}",szablony_magiczne);
local ramka_modul=require("Module:Ramka");
tekst_artykulu=ramka_modul.InstrukcjeWarunkowe(tekst_artykulu);
end;
if(not szablon_nie_opis)then
if(not dokumentacja)then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
tekst_artykulu=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(tekst_artykulu);
end;
end;
return tekst_artykulu;
end;
function p.ZbieranieInformacji(self,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, czy_artukul_korzystany,tabela_listy_danych_analizy_ksiazki2,linkobiekt)
if(not czy_artukul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki and self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
return 0;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_ksiazki,"^[^/]+/(.-)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_ksiazki,"^%s*[Bb]rudnopis/[^/]+/(.-)$")))
)then
p:DodawanieElementowDoTablicy("strony_poza_zakresem_obslugiwanym",nil,nazwa_przestrzeni,nazwa_ksiazki)
end;
local parametry_modul=require("Module:Parametry");
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_ksiazka=tabela_przestrzeni[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_artykolow;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local uchwyty_i_numeracje=tabela_artykul.uchwyty_i_numeracje;
if(uchwyty_i_numeracje)then
return 0;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
if(czy_artukul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=nazwa_artykulu;
end;
end;
local nazwa_modolu=(nazwa_przestrzeni=="")and ((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu)
or nazwa_przestrzeni..":"..((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu);
local tekst_rozwiniety_calego_artykulu=p:SpreparowanyWikikodStrony(nazwa_modolu);
if(not czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
-- przydzielanie tablicy
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.lista_artykolow)then tablica_ksiazki.lista_artykolow={};end;
if(not tablica_ksiazki.lista_artykolow[nazwa_artykulu])then tablica_ksiazki.lista_artykolow[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_artykolow[nazwa_artykulu];
local tablica_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
if(czy_artukul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tabela_listy_danych_analizy_ksiazki2)then tabela_listy_danych_analizy_ksiazki2={};end;
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=element_w_tablicy_obiekt[1];
tabela_listy_danych_analizy_ksiazki2[wartosc]={};
if(czy_artukul_korzystany)then linkobiekt[wartosc]={};end;
end;
local strona;
if(czy_artukul_korzystany)then
strona="";
else
strona=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki..((nazwa_artykulu~="")and "/"..nazwa_artykulu or "")
end;
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if((self.tabela_listy_danych_analizy_ksiazki.zastepczy) or (not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki))))then
if((nazwa_przestrzeni)and(nazwa_ksiazki))then
local czy_ksiazka_istnieje_w_tablicy=false;
local tabela_ksiazek=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_ksiazek)then
for nazwa_ksiazki_i,tablica_spisu in pairs(tabela_ksiazek) do
if(nazwa_ksiazki_i==nazwa_ksiazki)then
if(tablica_spisu.spis)then
czy_ksiazka_istnieje_w_tablicy=true;
break;
end;
end;
end;
end;
if(not czy_ksiazka_istnieje_w_tablicy)then
local tabela_wstepnych_informacji;
local normalna_nazwa_przestrzeni;local normalna_nazwa_ksiazki;
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
else
normalna_nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni;
normalna_nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki;
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki,czy_artukul_korzystany);
end;
if(tabela_wstepnych_informacji==0)then
if(czy_artukul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.problemy.korzystane_strona_glowna_nie_istnieje=0;
else
p:DodawanieElementowDoTablicy("doloczone_strony_glowne_nie_istnieja",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
else
if(tabela_wstepnych_informacji)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tablica_ksiazki.spis=tabela_wstepnych_informacji[1];
tablica_ksiazki.licencja=tabela_wstepnych_informacji[2];
else
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni]={};
end;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki]={};
end;
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].spis=tabela_wstepnych_informacji[1];
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].licencja=tabela_wstepnych_informacji[2];
end;
if(not tabela_wstepnych_informacji[1])then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych)then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=""))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych=0;
end;
end;
end;
else
tablica_ksiazki.spis=tabela_wstepnych_informacji;
end;
else
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
else
p:DodawanieElementowDoTablicy("brak_spisow_tresci_do_doloczonych_ksiazek_na_ich_stronach_glownych",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
end;
function StronaZbiorcza()
if(czy_artukul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
return stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,nil,TakFun,NieFun,nil);
end;
return nil;
end;
InneInformacjePrzebneDoAnalizowanejKsiazki();
local strona_zbiorcza=StronaZbiorcza();
if(strona_zbiorcza)then
if((tablica_ksiazki.spis_tresci)and(tablica_ksiazki.spis_tresci.tekst)and(tablica_ksiazki.spis_tresci.wywolanie)
and(tablica_ksiazki.spis_tresci.wywolanie[1])and(tablica_ksiazki.spis_tresci.wywolanie[2]))then
local pelny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1])
if(pelny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1],tablica_ksiazki.spis_tresci.tekst);
else
local wzgledny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2])
if(wzgledny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2],tablica_ksiazki.spis_tresci.tekst);
end;
end;
end;
end;
if(czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local toc;
if((not czy_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone))then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(czy_artukul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(obiekty_modul.strona_start[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
return;
elseif(obiekty_modul.strona_start_inne[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif(obiekty_modul.strona_start_analiza_spis_tresci[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
end;
end;
local plik=mw.ustring.match(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"^{{:([^:|{}]-)}}$");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=mw.ustring.match(tabela_parametrow_szablonu[0],"^[wW]ypowiedzenie$");
local linkobiekt2;
local link;
if(czy_wypowiedzenie)then
linkobiekt2=false;
link=false;
else
linkobiekt2=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]inkObiekt$");
if(linkobiekt2)then
link=true;
else
link=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]ink");
end;
end;
local czy_obsluzone=true;
local funkcja_aliasow=function(nazwa_szablonu,elementy_w_tablicy_obiekty)
local wzor_nazwy_szablonu1=mw.ustring.gsub(elementy_w_tablicy_obiekty[1],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[2])then
if(type(elementy_w_tablicy_obiekty[2])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[2])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[2],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
end;
end;
end;
return czy_aliasy;
end;
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow_bez_obiektu_nienazwanego)do
local wartosc_elementu=elementy_w_tablicy_obiekty[1];
if(not link)then
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
czy_aliasy=czy_wypowiedzenie or funkcja_aliasow(tabela_parametrow_szablonu[0],elementy_w_tablicy_obiekty);
if(czy_aliasy)then
if((not czy_wypowiedzenie)
or((czy_wypowiedzenie)and(
(tabela_parametrow_szablonu["rodzaj"]==wartosc_elementu)
))
)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artukul_korzystany,elementy_w_tablicy_obiekty[5]);
czy_obsluzone=false;
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu= tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
if(uchwyt_obiektu and not mw.ustring.match(uchwyt_obiektu,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
break;
end;
end;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
elseif(czy_artukul_korzystany)then
if(link)then
local funkcja_aliasow_2=function(zmienna)
if(wartosc_elementu~=zmienna)then return false;end;
local wzor_nazwy_szablonu1="[Ll]ink"..wartosc_elementu;
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
local szablon;
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[3])then
if(type(elementy_w_tablicy_obiekty[3])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[3])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
szablon=alias
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[3],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then szablon=elementy_w_tablicy_obiekty[3];end;
end;
end;
else
szablon="Link"..wartosc_elementu;
end;
return czy_aliasy,szablon;
end;
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
local typ=mw.getContentLanguage():lcfirst(wartosc_elementu);
local alias,szablon=funkcja_aliasow_2(wartosc_elementu);
if((alias)or((linkobiekt2)and(tabela_parametrow_szablonu["typ"]==typ)))then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,wartosc_elementu, linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=((alias)and szablon or "LinkObiekt")..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
czy_obsluzone=false;
break;
end;
else
local alias,szablon=funkcja_aliasow_2("Śródtytuł");
if(alias)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Śródtytuł", linkobiekt);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
czy_obsluzone=false;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=szablon..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
break;
end;
end;
end;
end;
end;
if(czy_obsluzone)then
if(czy_wypowiedzenie)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artukul_korzystany,obiekty_modul.obiekty[5]);
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[obiekty_modul.obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt"..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
elseif(czy_artukul_korzystany)then
if(linkobiekt2)then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Obiekt", linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[1]] or tabela_parametrow_szablonu["uchwyt"];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
else
for wartosc_elementu,_ in pairs(obiekty_modul.bez_uchwytow_spis_tresci)do
local wzor_artykolow_ksiazek=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_artykolow_ksiazek.."$"))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:ZbieranieInformacjiArtykolowKsiazek(tabela_parametrow_szablonu);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="ArtykułKsiążki:"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
end;
for wartosc_elementu,_ in pairs(obiekty_modul.szablony_pudelka)do
local wzor_szablonu_pudelka=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_szablonu_pudelka.."$"))then
p:ZbieranieInformacjiPudelek(tabela_parametrow_szablonu);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=tabela_parametrow_szablonu[0]..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,AnalizaParametrowSzablonuISzablonu);
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].uchwyty_i_numeracje=tabela_listy_danych_analizy_ksiazki2;
if(czy_artukul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu);
mw.log('To jest strona zbiorcza.')
end;
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
mw.log("Liczę spis treści artykułów korzystanych.");
end;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykolu=tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].TOC=toc;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzLinki(self,tabela_listy_danych_analizy_ksiazki2,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if((not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2])or(nazwa_artykulu==""))then
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
local czy_uchwyty_nie_sa_ponumerowane=true;
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then
czy_uchwyty_nie_sa_ponumerowane=false;
break;
end;
end;
end;
if(czy_uchwyty_nie_sa_ponumerowane)then
local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
if(czy_tylko_ze_znakami_odstepu_lub_puste)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]) then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]=0;
end;
return;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]=0;
return;
end;
end;
end;
end;
end;
function p.PrzetworzMozliweWszystkieRodzajeObiektow(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
for _,element_w_podtablicy_kategorii_bledow in pairs(obiekty_modul.tablica_obiektow)do
local element_obiekty=element_w_podtablicy_kategorii_bledow[1];
tabela_listy_danych_analizy_ksiazki=p:Sprawdzanie_i_numerowanie(dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja);
end;
end;
function p.PrzetworzZebraneInformacje(self,tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2)
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
for nazwa_przestrzeni,tablica_nazw_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)do
for nazwa_ksiazki,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do
local prosto=true;
if(self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
if((nazwa_przestrzeni==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni)
and(nazwa_ksiazki==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki))then
prosto=false;
end;
end;
if(prosto)then
local nazwa_przestrzeni_nazw_strony=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_ksiazki);
for nazwa_artykulu, dane_artykulu in pairs(tablica_nazw_artykulow.lista_artykolow) do
local biezacy_artykul=dane_artykulu.artykul_biezacy;
local numer_obiektu_w_ksiazce=1;local czy_da_sie_numerowac_obiekty_ze_spisem_tresci =false;
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
else
local tab_ksiazki=tablica_nazw_artykulow.spis;
if(tab_ksiazki)then
for _,tab_rozdzialu in pairs(tab_ksiazki)do
if(tab_rozdzialu[2])then
for _,nazwa_artykulu1 in ipairs(tab_rozdzialu[2])do
if(nazwa_artykulu1[1]~=nazwa_artykulu)then
numer_obiektu_w_ksiazce=numer_obiektu_w_ksiazce+1;
else
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;break;
end;
end;
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then break;end;
end;
end;
end;
local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu)
p:DodawanieElementowDoTablicy("bledy_uchwytow_doloczonych_stron",nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki);
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
elseif(not czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
else
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
end;
end;
end;
end;
for _,obiekt in pairs(obiekty_modul.tablica_obiektow)do
local obiekt2=obiekt[1];
p:SprawdzLinki(tabela_listy_danych_analizy_ksiazki2,linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2);
end;
return tabela_listy_danych_analizy_ksiazki;
end;
function p.Sprawdzanie_i_numerowanie(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
local parametry_modul=require("Module:Parametry");
local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu];
if(obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[nazwa_obiektu])then
return tabela_listy_danych_analizy_ksiazki;
end;
for licznik,element_obiektu in pairs(tabela_obiektu)do
local czy_numerowac=true;
for licznik2=1, licznik-1,1 do
if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then
if(biezacy_artykul)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu])then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu]=0;
end;
else
__Funkcja(nazwa_obiektu);
end;
tabela_obiektu[licznik2][1]=nil;
czy_numerowac=false;
end;
end;
if(czy_numerowac)then
if(numer_artykulu_w_ksiazce>0)then
element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
elseif(numer_artykulu_w_ksiazce==0)then
element_obiektu[2]=licznik
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0
end;
end;
end;
return tabela_listy_danych_analizy_ksiazki;
end;
return p;
n1hquvusniuyd587ww6irzxdqawifk6
438604
438603
2022-08-23T18:39:06Z
Persino
2851
Scribunto
text/plain
local p={};
function p.ZaczynajAnalizowacArtykulyKsiazek(self)
self.tabela_listy_danych_analizy_ksiazki={};
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu={};
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
self.tabela_listy_danych_analizy_ksiazki.problemy={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_doloczonych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu={};
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych={};
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=elementy_w_tablicy_obiekty[1];
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[wartosc]={};
end;
self.tabela_listy_danych_analizy_ksiazki.licencja={};
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe")
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"]();
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"]();
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"]();
local pelna_nazwa_ksiazki="Szablon:Podręcznik/Ustawienia/"..((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki;
local techniczne_modul=require("Module:Techniczne");
local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki.."/config",};
if(ile>0)then
local frame=mw.getCurrentFrame();
local nazwa_szablonu=techniczne_modul.NazwaSzablonu(pelna_nazwa_ksiazki);
local zastepczy=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępczy",}};
if(not mw.ustring.match(zastepczy,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.zastepczy=true;
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka zastępcza",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł zastępczy",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
local ksiazka_normalna=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul_normalny=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka_normalna,"^%s*$"))then
local strona=ksiazka_normalna..((artykul_normalny~="") and ("/"..artykul_normalny) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
else
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
local tabela_listy_danych_analizy_ksiazki2={};
local linkobiekt={};
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, true,tabela_listy_danych_analizy_ksiazki2,linkobiekt);
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki,})then
p:PrzetworzZebraneInformacje(tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.DodawanieElementowDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki)
local tabela_listy_danych_analizy_ksiazki=self.tabela_listy_danych_analizy_ksiazki.problemy;
if(not tabela_listy_danych_analizy_ksiazki[element_tablicy])then
tabela_listy_danych_analizy_ksiazki[element_tablicy]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[element_tablicy];
if(nazwa_obiektu)then
if(not tabela_listy_danych_analizy_ksiazki[nazwa_obiektu])then
tabela_listy_danych_analizy_ksiazki[nazwa_obiektu]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_obiektu];
end;
if(not tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni])then
tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni];
tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki]=true;
end;
function p.SpisTresciWstep(self,tekst_artykulu,nazwa_strony,obiekty,nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany)
nazwa_strony=nazwa_strony and mw.ustring.gsub(nazwa_strony,"(|)",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end) or nil;
local tablica_spisu_tresci=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local uzyskany_w_wyniku_parsowania;
local tablica_powtarzajacych_sie_elementow={};
local elementy_linku=nil;
local frame=mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tab_szablony=mw.loadData("Module:StronicowyParser/obiekty").szablony_stronicowego_parsera;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu);
local numeracja;
local function SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
local wywolanie_naglowek_iterator=mw.ustring.match(naglowek,"{{%s*Śródtytuł%s*}}") or mw.ustring.gmatch(naglowek,"{{%s*Śródtytuł%s*|[^{}]*}}");
local powtorka=0;
for wywolanie_naglowek in wywolanie_naglowek_iterator do
wywolanie_naglowek=mw.ustring.gsub(wywolanie_naglowek,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie_naglowek);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(powtorka>=1)then
if(self.tabela_listy_danych_analizy_ksiazki)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("powtorka_naglowek_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
break;
end;
powtorka=powtorka+1;
end;
end;
local function SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu)
local jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*}}") or mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*|[^{}]*}}");
if(jest_naglowkuj_w_tekscie_rozdzialu)then
jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.gsub(jest_naglowkuj_w_tekscie_rozdzialu,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](jest_naglowkuj_w_tekscie_rozdzialu);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("naglowek_w_tekscie_rozdzialu_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
end;
for naglowek,text_rozdzialu,poziom_rozdzialu in iterator do
numeracja=nil;
if(self)then
SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu);
end;
local function SzablonyWywolywane(wywolanie)
local parametry_wywolania_szablonu=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie);
if(tab_szablony[parametry_wywolania_szablonu[0]])then return "";end;
return wywolanie;
end;
naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywane);
naglowek=frame:preprocess(naglowek);
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[:?([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+|([^{}%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%s*%S+%s+([^%[%]]*)%]","%1");
naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
local linki_modul=require("Module:Linki");
local nazwa_rozdzialu_w_artykule=linki_modul["UsuńZnaczniki"](naglowek);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"<[^<>]+>","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[<>]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"_"," ");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";");
local numer_tego_samego_naglowka=1;
local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule);
local numer_tego_samego_naglowka=1;
for s=1,#tablica_powtarzajacych_sie_elementow,1 do
local element=tablica_powtarzajacych_sie_elementow[s];
if(element==nazwa_rozdzialu_w_artykule)then
numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
end;
end;
if(numer_tego_samego_naglowka==1)then
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule,naglowek};
else
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek};
end;
if((obiekty)and(numeracja))then
obiekty[#obiekty+1]={numeracja,{elementy_linku[1], elementy_linku[2]}};
end;
if((poziom_rozdzialu or 0)>0)then
local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu);
tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule;
if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={};end;
tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony};
end;
end;
if(self)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
if((linia_poczatkowa)and(mw.ustring.match(linia_poczatkowa,"^=+.+=+%s*")))then
return tablica_spisu_tresci;
end;
local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=+[^=]+=+") or tekst_artykulu;
SzablonNaglowkujWTekscieRozdzialu(tekst_zerowy);
end;
end;
end;
return tablica_spisu_tresci;
end;
function p.ZbierajJakieSaArtykulyIInformacjeOLicencji(self,nazwa_przestrzeni,nazwa_ksiazki,czy_artykul_korzystany)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_ksiazki))then return 0;end;
local nazwa_modolu=(parametry_modul.CzyTak(nazwa_przestrzeni)and parametry_modul.CzyTak(nazwa_ksiazki))and nazwa_przestrzeni..":"..nazwa_ksiazki or nazwa_ksiazki;
local tekst_rozwiniety_calego_artykulu=p.SpreparowanyWikikodStrony(nil,nazwa_modolu,true);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
----
local techniczne_modul=require("Module:Techniczne");
local wywolanie_spis_tresci="{{%s*"..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or ":")
..techniczne_modul["WzórNazwyStrony"](nazwa_ksiazki).."(/[Ss]pis[%s_]+treści)%s*}}";
local wywolanie_spis_tresci2="{{%s*(/[Ss]pis[%s_]+treści)%s*}}";
local strona_ze_spisem_tresci=mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci)
local strona_ze_spisem_tresci2=(not strona_ze_spisem_tresci) and mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci2) or nil;
if(strona_ze_spisem_tresci or strona_ze_spisem_tresci2)then
local tekst_rozwiniety_calego_spisu_tresci=p.SpreparowanyWikikodStrony(nil,nazwa_modolu..strona_ze_spisem_tresci,true);
if(tekst_rozwiniety_calego_spisu_tresci)then
tekst_rozwiniety_calego_spisu_tresci=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_rozwiniety_calego_spisu_tresci);
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
tablica_ksiazki.spis_tresci.tekst=tekst_rozwiniety_calego_spisu_tresci;
if(not tablica_ksiazki.spis_tresci.wywolanie)then tablica_ksiazki.spis_tresci.wywolanie={};end;
tablica_ksiazki.spis_tresci.wywolanie[1]=wywolanie_spis_tresci;
tablica_ksiazki.spis_tresci.wywolanie[2]=wywolanie_spis_tresci2;
----
local wywolanie=strona_ze_spisem_tresci and wywolanie_spis_tresci or wywolanie_spis_tresci2;
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,wywolanie,tekst_rozwiniety_calego_spisu_tresci);
end;
end;
----
local wyzyskane_wywolanie_szablonu_spis_tresci="";
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_modul=require("Module:StronicowyParser");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_ksiazki,true);
local html_modul=require("Module:Html");
local _1=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!}}");
local _2=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!((}}");
local _3=html_modul["KodyHTMLZnakówWikiCiągu"]("{{))!}}");
local mikroszablony={
["{{!}}"]=_1,
["{{!((}}"]=_2,
["{{))!}}"]=_3,
};
local mikroszablony_odwrotne={
[_1]="|",
[_2]="[[",
[_3]="]]",
};
local stronicowyparser_informacje=mw.loadData("Module:StronicowyParser/obiekty");
local jakie_nie_rozdzialy=stronicowyparser_informacje.tab_rozdzialow_pomijanych_w_rozwazaniach_na_stronach_glownych_ksiazek;
local jakie_spisy_tresci=stronicowyparser_informacje.tab_rozdzialow_glownych_spisow_tresci_ksiazek;
local wyrazenie_regularne="({{[&#;!%(%)]+}})";
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local function AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja)
rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
if((poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[rozdzial]))then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if(poziom_spisu_tresci<poziom_rozdzialu)then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
repeat
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._3.."%4}}");
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._1.."%4".._3.."%5}}");
until((not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}") )
and (not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}")));
text,_=mw.ustring.gsub(text,"{{[^{}]+}}",mikroszablony);
if(not tabela_artykulow)then tabela_artykulow={};end;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_artykulow[numer_rozdzialu_w_ksiazce][1]={rozdzial,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,},};
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([^{}%[%]\n]*)[^%S\n]*([^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
czy_rozdzial=true;
if((poziom_rozdzialu or 0)>0)then
return "","",rozdzial,true;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek and wyzyskane_wywolanie_szablonu_spis_tresci)then
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=iter();
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
----
local function LiniaArtykolow(linia)
repeat
linia,_=mw.ustring.gsub(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])", function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
linia,_=mw.ustring.gsub(linia,"({{[^{}]*)(,)([^{}]*}})",function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
until not mw.ustring.match(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])") and not mw.ustring.match(linia,"({{[^{}]*)(,)([^{}]*}})");
if(mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]Książka[%s_]*|[^{}]*}})")
)then
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})","%1,%2");
else
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
end;
local tabela_linii_artykolow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykolow,1 do
tabela_linii_artykolow[i],_=mw.ustring.gsub(tabela_linii_artykolow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykolow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local tab_linia=LiniaArtykolow(linia)
for k=1,#tab_linia,1 do
local iterator2=mw.ustring.gmatch(tab_linia[k],"([%[{][%[{][^{}]-[%]}][%]}])");
for wyzyskane_wywolanie_szablonu_spis_tresci in iterator2 do
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci2,wyrazenie_regularne,mikroszablony_odwrotne);
wyzyskane_wywolanie_szablonu_spis_tresci2=parametry_modul["Odstępy"]{[1]=wyzyskane_wywolanie_szablonu_spis_tresci2,[2]="tak",};
if(mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci2,"^%[%[([^%[%]]+)%]%]$"))then
wyzyskane_wywolanie_szablonu_spis_tresci=wyzyskane_wywolanie_szablonu_spis_tresci2;
end;
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom;
if(wliczaj_artykuly_tego_rozdzialu)then
tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_ksiazki);
--Rozdzialy początek
local znaki_niedozwolone;
if((tab_pozycja_artykulu)and(tab_pozycja_artykulu[1]))then
tab_pozycja_artykulu[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_artykulu[1],[2]="tak",}
--pozycja_artykulu=mw.getContentLanguage():ucfirst(pozycja_artykulu);
tab_pozycja_artykulu[1]=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](tab_pozycja_artykulu[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_artykulu[1],"[|<>{}%[%]]");
if(znaki_niedozwolone)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci)then
self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci=0;
end;
end;
tab_pozycja_artykulu[1]=html_modul["PoprawAdresNagłówkaStronyAdresu"](tab_pozycja_artykulu[1]);
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][2])then tabela_artykulow[numer_rozdzialu_w_ksiazce][2]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local strona=stronicowyparser_modul.PrzekierowanieDoStrony(nazwa_ksiazki..((tab_pozycja_artykulu[1]~="") and ("/"..tab_pozycja_artykulu[1]) or ""));
if(strona)then
tab_pozycja_artykulu[1]=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
local tab_stare={((tab_pozycja_artykulu[2]) and ({tab_pozycja_artykulu[1],tab_pozycja_artykulu[2],}) or tab_pozycja_artykulu[1]),{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][2],tab_stare);
break;
elseif((tab_pozycja_artykulu_inne)and(tab_pozycja_artykulu_inne[1]))then
local wiki_modul=require("Module:Wiki");
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][3])then tabela_artykulow[numer_rozdzialu_w_ksiazce][3]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local tab_stare={((tab_pozycja_artykulu_inne[1])and((tab_pozycja_artykulu_inne[2])or(tab_pozycja_artykulu_inne[3])or(tab_pozycja_artykulu_inne[4])))and({tab_pozycja_artykulu_inne[1],tab_pozycja_artykulu_inne[2],tab_pozycja_artykulu_inne[3],tab_pozycja_artykulu_inne[4],}) or tab_pozycja_artykulu_inne[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,#(tabela_artykulow[numer_rozdzialu_w_ksiazce][2] or {}),};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][3],tab_stare);
end;
else
link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"({{[^{}]+}})");
end;
if(((not tab_pozycja_artykulu)or(not tab_pozycja_artykulu[1]))and(link_szablon)and(czy_artykul_korzystany)and(licencja_z_autorem))then
local wywolanie_spisu_tresci=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^{{[Ll]icencja|([^{}]-)}}$");
if(wywolanie_spisu_tresci)then
wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"(%[%[[^|%[%]]-)(|)([^|%[%]]-%]%])","%1&#"..tostring(mw.ustring.byte('|'))..";%3");
local tabela_parametrow=techniczne_modul["ParsujWywołanieSzablonu"](wyzyskane_wywolanie_szablonu_spis_tresci);
if(tabela_parametrow)then
local autor=tabela_parametrow["Autor"];
local szkoly=tabela_parametrow["Ukończone szkoły"];
local email=tabela_parametrow["Email"];
local dotyczy=tabela_parametrow["Dotyczy"];
local licencjonowanie=tabela_parametrow["Licencjonowanie"];
local umowa_prawna=tabela_parametrow["Umowa prawna"];
local konsekwencje=tabela_parametrow["Konsekwencje"];
if(autor~=nil)then
autor,_=mw.ustring.gsub(autor,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(szkoly~=nil)then
szkoly,_=mw.ustring.gsub(szkoly,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(email~=nil)then
email,_=mw.ustring.gsub(email,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(dotyczy~=nil)then
dotyczy,_=mw.ustring.gsub(dotyczy,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(licencjonowanie~=nil)then
licencjonowanie,_=mw.ustring.gsub(licencjonowanie,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(umowa_prawna~=nil)then
umowa_prawna,_=mw.ustring.gsub(umowa_prawna,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(konsekwencje~=nil)then
konsekwencje,_=mw.ustring.gsub(konsekwencje,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
break;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end
end;
end;
end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end
local parsuj_rozdzialami=nil;
for rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja in iterator do
AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",tekst_rozwiniety_calego_artykulu,1,nil,nil);
end;
if(czy_artykul_korzystany)then tabelalisty2={tabela_artykulow, tabela_licencji_spisu_tresci,};else tabelalisty2=tabela_artykulow;end;
return tabelalisty2;
end;
function p.ObslugaSzczegolnaElementu(self,kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany)
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
function p.ObsluzSzablonWzor(self,tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji)
local kod_uchwytu=nil;
if(tabela_parametrow_szablonu["uchwyt"])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu["uchwyt"]);
elseif(tabela_parametrow_szablonu[numer_numeracji])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu[numer_numeracji]);
end;
if(kod_uchwytu and not mw.ustring.match(kod_uchwytu,"^%s*$"))then
p:ObslugaSzczegolnaElementu(kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany);
end;
end;
function p.Czy_jest_taki_element_w_tabeli_wynikow(self,element, nazwa_przestrzeni, nazwa_ksiazki)
local parametry_modul=require("Module:Parametry");
local tabela_problemow=self.tabela_listy_danych_analizy_ksiazki.problemy[element];
return (parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow,nazwa_przestrzeni)
and parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow[nazwa_przestrzeni],nazwa_ksiazki));
end;
function p.SprawdzCzyJestDostepnySpisTresci(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if(nazwa_przestrzeni)then
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu;
if(tablica_przestrzeni)then
local tabela_ksiazek=tablica_przestrzeni[nazwa_przestrzeni];
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki~=nazwa_ksiazki)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=nazwa_artykulu))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:DodawanieElementowDoTablicy("brak_spisy_tresci_do_doloczanych_stron",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron)then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron=0;
end;
end;
end;
end;
end;
end;
function p.PusteParametryLinkow(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and mw.ustring.match(nazwa_ksiazki,"^%s*$") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and mw.ustring.match(nazwa_artykulu,"^%s*$") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and mw.ustring.match(uchwyt_obiektu,"^%s*$") or nil;
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1]=0;
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2]=0;
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3]=0;
end;
end;
end;
function p.ZbieranieInformacjiArtykolowKsiazek(self,tabela_parametrow_szablonu)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=nazwa_artykulu or (pelna_nazwa_ksiazki and (((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki))and ksiazkowe_modul["NazwaArtykułuKsiążki"]() or "") or ksiazkowe_modul["NazwaArtykułuKsiążki"]());
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.ZbieranieInformacjiPudelek(self,tabela_parametrow_szablonu)
if((not tabela_parametrow_szablonu["nazwa przestrzeni nazw"])and(not tabela_parametrow_szablonu["nazwa jednostki"]))then return;end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_jednostki=(tabela_parametrow_szablonu["nazwa jednostki"]
and mw.ustring.gsub(tabela_parametrow_szablonu["nazwa jednostki"],"^([^#]*)#(.*)$","%1")
or nil
) or nazwy_modul["NAZWASTRONY"]();
local nazwa_przestrzeni=nazwy_modul.Np{nazwa=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwy_modul["NAZWAPRZESTRZENI"]()};
local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelna_nazwa_ksiazki);
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.LinkowanieOgolnie(self,tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,nazwa_obiektu, linkobiekt)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
uchwyt_obiektu=(uchwyt_obiektu)and parametry_modul["Odstępy"](uchwyt_obiektu) or nil;
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
nazwa_artykulu=require("Module:Parametry")["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](pelna_nazwa_ksiazki);
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
nazwa_ksiazki=nazwy_modul["NAZWASTRONY"](pelna_nazwa_ksiazki);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
end;
if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
elseif(nazwa_ksiazki=="")then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
p:LinkowanieNastepne(nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt);
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt)
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu])then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu]=0;
end;
end;
function p.LinkowanieDalszePrace(self,tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt,Funkcja_sprawdzania_parametrow_linkow)
local linkobiekttab=linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.LinkowanieNastepne(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not mw.ustring.match(nazwa_przestrzeni,"[|<>{}%[%]]")))or(nazwa_przestrzeni=="")))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not mw.ustring.match(nazwa_artykulu,"[|<>{}%[%]]")))or(nazwa_artykulu=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not mw.ustring.match(nazwa_ksiazki,"[|<>{}%[%]]"))))then
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false,tabela_listy_danych_analizy_ksiazki2);
if(tabela_listy_danych_analizy_ksiazki0)then
if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]=0;
end;
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
end;
else
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron==nil)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron=0;
else
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_stron_doloczanych_do_stron=0;
end;
end;
end;
end;
function p.SpreparowanyWikikodStrony(self,nazwa_modolu,dokumentacja)
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local nazwy_modul=require("Module:Nazwy");
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu);
if(nazwy_np_modul.Module==nazwa_przestrzeni)then
local techniczne_modul=require("Module:Techniczne");
nazwa_modolu=techniczne_modul["PełnaNazwaOpisuModułu"](nazwa_modolu);
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template~=nazwa_przestrzeni)then
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template==nazwa_przestrzeni)then
if(mw.ustring.match(nazwa_modolu,"^[^:]+:(.*/opis)%s*$"))then
local szablony_magiczne={};
return p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,dokumentacja);
else
local szablony_magiczne={};
local tekst_artykulu_caly=p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,false,nil,true);
if(not tekst_artykulu_caly)then return;end;
local iterator=mw.ustring.gmatch(tekst_artykulu_caly,"{{[^{}]-}}");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for wywolanie in iterator do
local function AnalizujDokumentacja(_,wywolanie)
local nazwa_strony2;
local dokumentacja_szablonu=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*}}");
if(dokumentacja_szablonu)then
local nazwa_strony2=nazwa_modolu.."/opis";
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja);
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,"{{%s*[Dd]okumentacja%s*}}",tekst_artykulu2);
else
local dopasowanie=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*|");
if(dopasowanie)then
local tablica_parametrow_dokumentacja=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie)
local nazwa_strony2=tablica_parametrow_dokumentacja[1];
local zawartosc=tablica_parametrow_dokumentacja["zawartość"];
if((nazwa_strony2)and(not zawartosc))then
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja,nazwa_modolu);
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,tekst_artykulu2);
elseif(zawartosc)then
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
zawartosc=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](zawartosc);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,zawartosc);
end;
end;
end;
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(wywolanie,AnalizujDokumentacja)
end;
return tekst_artykulu_caly;
end;
end;
end;
function p.LadujZawartoscStrony(self,nazwa_strony,czy_noinclude,szablony_magiczne,dokumentacja,nazwa_modolu_szablonu_opisu,szablon_nie_opis)
local czy_nazwa_strony_z_tylko_odstepami_lub_pusta=mw.ustring.match(nazwa_strony,"^%s*$");
local uchwyt_strony;
local tekst_artykulu;
local nazwa_strony_bez_kodow_html;
if(not czy_nazwa_strony_z_tylko_odstepami_lub_pusta)then
nazwa_strony_bez_kodow_html=require("Module:Html").TransformacjaKlasyZnakowej(nazwa_strony);
uchwyt_strony = mw.title.makeTitle('', nazwa_strony_bez_kodow_html);
tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
local czy_istnieje = tekst_artykulu or (uchwyt_strony and uchwyt_strony.exists or nil);
if(not czy_istnieje)then
if(self and self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje=0
end;
end;
return nil;
else
local czy_nie_istnieje_zawartosc=((uchwyt_strony)and(not tekst_artykulu));
if(czy_nie_istnieje_zawartosc)then
return nil;
end;
end;
else
return nil;
end;
if((czy_noinclude)and(not dokumentacja)and(szablon_nie_opis))then
local iterator=mw.ustring.gmatch(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->");
for dokumentacja_tekst in iterator do
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tekst=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(dokumentacja_tekst);
if(tekst~=dokumentacja_tekst)then
local techniczne_modul=require("Module:Techniczne");
dokumentacja_tekst=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](dokumentacja_tekst);
tekst=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->"..dokumentacja_tekst.."<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->",tekst);
end;
end;
end;
if(czy_noinclude)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","%1");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->.-<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","");
else
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->.-<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->(.-)<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","%1");
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>(.-)</[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<!--(.-)-->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->.-<%s-/%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Pp][Rr][Ee]%s->.-<%s-/%s-[Pp][Rr][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<%s-[mM][aA][tT][hH]%s->.-<%s-/%s-[mM][aA][tT][hH]%s->)","");
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{NAMESPACE}}"]=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{PAGENAME}}"]=nazwy_modul["NAZWASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{FULLPAGENAME}}"]=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
end;
if(szablony_magiczne)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"{{[^{}]+}}",szablony_magiczne);
local ramka_modul=require("Module:Ramka");
tekst_artykulu=ramka_modul.InstrukcjeWarunkowe(tekst_artykulu);
end;
if(not szablon_nie_opis)then
if(not dokumentacja)then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
tekst_artykulu=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(tekst_artykulu);
end;
end;
return tekst_artykulu;
end;
function p.ZbieranieInformacji(self,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, czy_artukul_korzystany,tabela_listy_danych_analizy_ksiazki2,linkobiekt)
if(not czy_artukul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki and self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
return 0;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_ksiazki,"^[^/]+/(.-)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_ksiazki,"^%s*[Bb]rudnopis/[^/]+/(.-)$")))
)then
p:DodawanieElementowDoTablicy("strony_poza_zakresem_obslugiwanym",nil,nazwa_przestrzeni,nazwa_ksiazki)
end;
local parametry_modul=require("Module:Parametry");
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_ksiazka=tabela_przestrzeni[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_artykolow;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local uchwyty_i_numeracje=tabela_artykul.uchwyty_i_numeracje;
if(uchwyty_i_numeracje)then
return 0;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
if(czy_artukul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=nazwa_artykulu;
end;
end;
local nazwa_modolu=(nazwa_przestrzeni=="")and ((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu)
or nazwa_przestrzeni..":"..((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu);
local tekst_rozwiniety_calego_artykulu=p:SpreparowanyWikikodStrony(nazwa_modolu);
if(not czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
-- przydzielanie tablicy
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.lista_artykolow)then tablica_ksiazki.lista_artykolow={};end;
if(not tablica_ksiazki.lista_artykolow[nazwa_artykulu])then tablica_ksiazki.lista_artykolow[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_artykolow[nazwa_artykulu];
local tablica_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
if(czy_artukul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tabela_listy_danych_analizy_ksiazki2)then tabela_listy_danych_analizy_ksiazki2={};end;
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=element_w_tablicy_obiekt[1];
tabela_listy_danych_analizy_ksiazki2[wartosc]={};
if(czy_artukul_korzystany)then linkobiekt[wartosc]={};end;
end;
local strona;
if(czy_artukul_korzystany)then
strona="";
else
strona=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki..((nazwa_artykulu~="")and "/"..nazwa_artykulu or "")
end;
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if((self.tabela_listy_danych_analizy_ksiazki.zastepczy) or (not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki))))then
if((nazwa_przestrzeni)and(nazwa_ksiazki))then
local czy_ksiazka_istnieje_w_tablicy=false;
local tabela_ksiazek=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_ksiazek)then
for nazwa_ksiazki_i,tablica_spisu in pairs(tabela_ksiazek) do
if(nazwa_ksiazki_i==nazwa_ksiazki)then
if(tablica_spisu.spis)then
czy_ksiazka_istnieje_w_tablicy=true;
break;
end;
end;
end;
end;
if(not czy_ksiazka_istnieje_w_tablicy)then
local tabela_wstepnych_informacji;
local normalna_nazwa_przestrzeni;local normalna_nazwa_ksiazki;
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
else
normalna_nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni;
normalna_nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki;
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki,czy_artukul_korzystany);
end;
if(tabela_wstepnych_informacji==0)then
if(czy_artukul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.problemy.korzystane_strona_glowna_nie_istnieje=0;
else
p:DodawanieElementowDoTablicy("doloczone_strony_glowne_nie_istnieja",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
else
if(tabela_wstepnych_informacji)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tablica_ksiazki.spis=tabela_wstepnych_informacji[1];
tablica_ksiazki.licencja=tabela_wstepnych_informacji[2];
else
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni]={};
end;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki]={};
end;
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].spis=tabela_wstepnych_informacji[1];
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].licencja=tabela_wstepnych_informacji[2];
end;
if(not tabela_wstepnych_informacji[1])then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych)then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=""))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych=0;
end;
end;
end;
else
tablica_ksiazki.spis=tabela_wstepnych_informacji;
end;
else
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
else
p:DodawanieElementowDoTablicy("brak_spisow_tresci_do_doloczonych_ksiazek_na_ich_stronach_glownych",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
end;
function StronaZbiorcza()
if(czy_artukul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
return stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,nil,TakFun,NieFun,nil);
end;
return nil;
end;
InneInformacjePrzebneDoAnalizowanejKsiazki();
local strona_zbiorcza=StronaZbiorcza();
if(strona_zbiorcza)then
if((tablica_ksiazki.spis_tresci)and(tablica_ksiazki.spis_tresci.tekst)and(tablica_ksiazki.spis_tresci.wywolanie)
and(tablica_ksiazki.spis_tresci.wywolanie[1])and(tablica_ksiazki.spis_tresci.wywolanie[2]))then
local pelny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1])
if(pelny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1],tablica_ksiazki.spis_tresci.tekst);
else
local wzgledny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2])
if(wzgledny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2],tablica_ksiazki.spis_tresci.tekst);
end;
end;
end;
end;
if(czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local toc;
if((not czy_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone))then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(czy_artukul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(obiekty_modul.strona_start[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
return;
elseif(obiekty_modul.strona_start_inne[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif(obiekty_modul.strona_start_analiza_spis_tresci[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
end;
end;
local plik=mw.ustring.match(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"^{{:([^:|{}]-)}}$");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=mw.ustring.match(tabela_parametrow_szablonu[0],"^[wW]ypowiedzenie$");
local linkobiekt2;
local link;
if(czy_wypowiedzenie)then
linkobiekt2=false;
link=false;
else
linkobiekt2=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]inkObiekt$");
if(linkobiekt2)then
link=true;
else
link=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]ink");
end;
end;
local czy_obsluzone=true;
local funkcja_aliasow=function(nazwa_szablonu,elementy_w_tablicy_obiekty)
local wzor_nazwy_szablonu1=mw.ustring.gsub(elementy_w_tablicy_obiekty[1],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[2])then
if(type(elementy_w_tablicy_obiekty[2])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[2])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[2],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
end;
end;
end;
return czy_aliasy;
end;
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow_bez_obiektu_nienazwanego)do
local wartosc_elementu=elementy_w_tablicy_obiekty[1];
if(not link)then
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
czy_aliasy=czy_wypowiedzenie or funkcja_aliasow(tabela_parametrow_szablonu[0],elementy_w_tablicy_obiekty);
if(czy_aliasy)then
if((not czy_wypowiedzenie)
or((czy_wypowiedzenie)and(
(tabela_parametrow_szablonu["rodzaj"]==wartosc_elementu)
))
)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artukul_korzystany,elementy_w_tablicy_obiekty[5]);
czy_obsluzone=false;
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu= tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
if(uchwyt_obiektu and not mw.ustring.match(uchwyt_obiektu,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
break;
end;
end;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
elseif(czy_artukul_korzystany)then
if(link)then
local funkcja_aliasow_2=function(zmienna)
if(wartosc_elementu~=zmienna)then return false;end;
local wzor_nazwy_szablonu1="[Ll]ink"..wartosc_elementu;
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
local szablon;
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[3])then
if(type(elementy_w_tablicy_obiekty[3])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[3])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
szablon=alias
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[3],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then szablon=elementy_w_tablicy_obiekty[3];end;
end;
end;
else
szablon="Link"..wartosc_elementu;
end;
return czy_aliasy,szablon;
end;
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
local typ=mw.getContentLanguage():lcfirst(wartosc_elementu);
local alias,szablon=funkcja_aliasow_2(wartosc_elementu);
if((alias)or((linkobiekt2)and(tabela_parametrow_szablonu["typ"]==typ)))then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,wartosc_elementu, linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=((alias)and szablon or "LinkObiekt")..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
czy_obsluzone=false;
break;
end;
else
local alias,szablon=funkcja_aliasow_2("Śródtytuł");
if(alias)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Śródtytuł", linkobiekt);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
czy_obsluzone=false;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=szablon..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
break;
end;
end;
end;
end;
end;
if(czy_obsluzone)then
if(czy_wypowiedzenie)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artukul_korzystany,obiekty_modul.obiekty[5]);
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[obiekty_modul.obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt"..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
elseif(czy_artukul_korzystany)then
if(linkobiekt2)then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Obiekt", linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[1]] or tabela_parametrow_szablonu["uchwyt"];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
else
for wartosc_elementu,_ in pairs(obiekty_modul.bez_uchwytow_spis_tresci)do
local wzor_artykolow_ksiazek=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_artykolow_ksiazek.."$"))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:ZbieranieInformacjiArtykolowKsiazek(tabela_parametrow_szablonu);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="ArtykułKsiążki:"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
end;
for wartosc_elementu,_ in pairs(obiekty_modul.szablony_pudelka)do
local wzor_szablonu_pudelka=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_szablonu_pudelka.."$"))then
p:ZbieranieInformacjiPudelek(tabela_parametrow_szablonu);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=tabela_parametrow_szablonu[0]..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,AnalizaParametrowSzablonuISzablonu);
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].uchwyty_i_numeracje=tabela_listy_danych_analizy_ksiazki2;
if(czy_artukul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu);
mw.log('To jest strona zbiorcza.')
end;
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
mw.log("Liczę spis treści artykułów korzystanych.");
end;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykolu=tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].TOC=toc;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzLinki(self,tabela_listy_danych_analizy_ksiazki2,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if((not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2])or(nazwa_artykulu==""))then
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
local czy_uchwyty_nie_sa_ponumerowane=true;
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then
czy_uchwyty_nie_sa_ponumerowane=false;
break;
end;
end;
end;
if(czy_uchwyty_nie_sa_ponumerowane)then
local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
if(czy_tylko_ze_znakami_odstepu_lub_puste)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]) then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]=0;
end;
return;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]=0;
return;
end;
end;
end;
end;
end;
function p.PrzetworzMozliweWszystkieRodzajeObiektow(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
for _,element_w_podtablicy_kategorii_bledow in pairs(obiekty_modul.tablica_obiektow)do
local element_obiekty=element_w_podtablicy_kategorii_bledow[1];
tabela_listy_danych_analizy_ksiazki=p:Sprawdzanie_i_numerowanie(dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja);
end;
end;
function p.PrzetworzZebraneInformacje(self,tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2)
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
for nazwa_przestrzeni,tablica_nazw_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)do
for nazwa_ksiazki,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do
local prosto=true;
if(self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
if((nazwa_przestrzeni==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni)
and(nazwa_ksiazki==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki))then
prosto=false;
end;
end;
if(prosto)then
local nazwa_przestrzeni_nazw_strony=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_ksiazki);
for nazwa_artykulu, dane_artykulu in pairs(tablica_nazw_artykulow.lista_artykolow) do
local biezacy_artykul=dane_artykulu.artykul_biezacy;
local numer_obiektu_w_ksiazce=1;local czy_da_sie_numerowac_obiekty_ze_spisem_tresci =false;
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
else
local tab_ksiazki=tablica_nazw_artykulow.spis;
if(tab_ksiazki)then
for _,tab_rozdzialu in pairs(tab_ksiazki)do
if(tab_rozdzialu[2])then
for _,nazwa_artykulu1 in ipairs(tab_rozdzialu[2])do
if(nazwa_artykulu1[1]~=nazwa_artykulu)then
numer_obiektu_w_ksiazce=numer_obiektu_w_ksiazce+1;
else
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;break;
end;
end;
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then break;end;
end;
end;
end;
local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu)
p:DodawanieElementowDoTablicy("bledy_uchwytow_doloczonych_stron",nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki);
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
elseif(not czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
else
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
end;
end;
end;
end;
for _,obiekt in pairs(obiekty_modul.tablica_obiektow)do
local obiekt2=obiekt[1];
p:SprawdzLinki(tabela_listy_danych_analizy_ksiazki2,linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2);
end;
return tabela_listy_danych_analizy_ksiazki;
end;
function p.Sprawdzanie_i_numerowanie(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
local parametry_modul=require("Module:Parametry");
local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu];
if(obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[nazwa_obiektu])then
return tabela_listy_danych_analizy_ksiazki;
end;
for licznik,element_obiektu in pairs(tabela_obiektu)do
local czy_numerowac=true;
for licznik2=1, licznik-1,1 do
if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then
if(biezacy_artykul)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu])then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu]=0;
end;
else
__Funkcja(nazwa_obiektu);
end;
tabela_obiektu[licznik2][1]=nil;
czy_numerowac=false;
end;
end;
if(czy_numerowac)then
if(numer_artykulu_w_ksiazce>0)then
element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
elseif(numer_artykulu_w_ksiazce==0)then
element_obiektu[2]=licznik
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0
end;
end;
end;
return tabela_listy_danych_analizy_ksiazki;
end;
return p;
amomqkwoiabeyye33ivp1wbflu1aiy3
438605
438604
2022-08-23T19:13:50Z
Persino
2851
Scribunto
text/plain
local p={};
function p.ZaczynajAnalizowacArtykulyKsiazek(self)
self.tabela_listy_danych_analizy_ksiazki={};
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu={};
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
self.tabela_listy_danych_analizy_ksiazki.problemy={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_doloczonych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu={};
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych={};
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=elementy_w_tablicy_obiekty[1];
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[wartosc]={};
end;
self.tabela_listy_danych_analizy_ksiazki.licencja={};
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe")
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"]();
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"]();
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"]();
local pelna_nazwa_ksiazki="Szablon:Podręcznik/Ustawienia/"..((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki;
local techniczne_modul=require("Module:Techniczne");
local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki.."/config",};
if(ile>0)then
local frame=mw.getCurrentFrame();
local nazwa_szablonu=techniczne_modul.NazwaSzablonu(pelna_nazwa_ksiazki);
local zastepczy=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępczy",}};
if(not mw.ustring.match(zastepczy,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.zastepczy=true;
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka zastępcza",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł zastępczy",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
local ksiazka_normalna=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul_normalny=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka_normalna,"^%s*$"))then
local strona=ksiazka_normalna..((artykul_normalny~="") and ("/"..artykul_normalny) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
else
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
local tabela_listy_danych_analizy_ksiazki2={};
local linkobiekt={};
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, true,tabela_listy_danych_analizy_ksiazki2,linkobiekt);
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki,})then
p:PrzetworzZebraneInformacje(tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.DodawanieElementowDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki)
local tabela_listy_danych_analizy_ksiazki=self.tabela_listy_danych_analizy_ksiazki.problemy;
if(not tabela_listy_danych_analizy_ksiazki[element_tablicy])then
tabela_listy_danych_analizy_ksiazki[element_tablicy]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[element_tablicy];
if(nazwa_obiektu)then
if(not tabela_listy_danych_analizy_ksiazki[nazwa_obiektu])then
tabela_listy_danych_analizy_ksiazki[nazwa_obiektu]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_obiektu];
end;
if(not tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni])then
tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni];
tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki]=true;
end;
function p.SpisTresciWstep(self,tekst_artykulu,nazwa_strony,obiekty,nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany)
nazwa_strony=nazwa_strony and mw.ustring.gsub(nazwa_strony,"(|)",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end) or nil;
local tablica_spisu_tresci=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local uzyskany_w_wyniku_parsowania;
local tablica_powtarzajacych_sie_elementow={};
local elementy_linku=nil;
local frame=mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tab_szablony=mw.loadData("Module:StronicowyParser/obiekty").szablony_stronicowego_parsera;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu);
local numeracja;
local function SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
local wywolanie_naglowek_iterator=mw.ustring.match(naglowek,"{{%s*Śródtytuł%s*}}") or mw.ustring.gmatch(naglowek,"{{%s*Śródtytuł%s*|[^{}]*}}");
local powtorka=0;
for wywolanie_naglowek in wywolanie_naglowek_iterator do
wywolanie_naglowek=mw.ustring.gsub(wywolanie_naglowek,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie_naglowek);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(powtorka>=1)then
if(self.tabela_listy_danych_analizy_ksiazki)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("powtorka_naglowek_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
break;
end;
powtorka=powtorka+1;
end;
end;
local function SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu)
local jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*}}") or mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*|[^{}]*}}");
if(jest_naglowkuj_w_tekscie_rozdzialu)then
jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.gsub(jest_naglowkuj_w_tekscie_rozdzialu,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](jest_naglowkuj_w_tekscie_rozdzialu);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("naglowek_w_tekscie_rozdzialu_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
end;
for naglowek,text_rozdzialu,poziom_rozdzialu in iterator do
numeracja=nil;
if(self)then
SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu);
end;
local function SzablonyWywolywane(wywolanie)
local parametry_wywolania_szablonu=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie);
if(tab_szablony[parametry_wywolania_szablonu[0]])then return "";end;
return wywolanie;
end;
naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywane);
naglowek=frame:preprocess(naglowek);
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[:?([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+|([^{}%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%s*%S+%s+([^%[%]]*)%]","%1");
naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
local linki_modul=require("Module:Linki");
local nazwa_rozdzialu_w_artykule=linki_modul["UsuńZnaczniki"](naglowek);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"<[^<>]+>","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[<>]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"_"," ");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";");
local numer_tego_samego_naglowka=1;
local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule);
local numer_tego_samego_naglowka=1;
for s=1,#tablica_powtarzajacych_sie_elementow,1 do
local element=tablica_powtarzajacych_sie_elementow[s];
if(element==nazwa_rozdzialu_w_artykule)then
numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
end;
end;
if(numer_tego_samego_naglowka==1)then
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule,naglowek};
else
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek};
end;
if((obiekty)and(numeracja))then
obiekty[#obiekty+1]={numeracja,{elementy_linku[1], elementy_linku[2]}};
end;
if((poziom_rozdzialu or 0)>0)then
local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu);
tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule;
if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={};end;
tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony};
end;
end;
if(self)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
if((linia_poczatkowa)and(mw.ustring.match(linia_poczatkowa,"^=+.+=+%s*")))then
return tablica_spisu_tresci;
end;
local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=+[^=]+=+") or tekst_artykulu;
SzablonNaglowkujWTekscieRozdzialu(tekst_zerowy);
end;
end;
end;
return tablica_spisu_tresci;
end;
function p.ZbierajJakieSaArtykulyIInformacjeOLicencji(self,nazwa_przestrzeni,nazwa_ksiazki,czy_artykul_korzystany)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_ksiazki))then return 0;end;
local nazwa_modolu=(parametry_modul.CzyTak(nazwa_przestrzeni)and parametry_modul.CzyTak(nazwa_ksiazki))and nazwa_przestrzeni..":"..nazwa_ksiazki or nazwa_ksiazki;
local tekst_rozwiniety_calego_artykulu=p.SpreparowanyWikikodStrony(nil,nazwa_modolu,true);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
----
local techniczne_modul=require("Module:Techniczne");
local wywolanie_spis_tresci="{{%s*"..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or ":")
..techniczne_modul["WzórNazwyStrony"](nazwa_ksiazki).."(/[Ss]pis[%s_]+treści)%s*}}";
local wywolanie_spis_tresci2="{{%s*(/[Ss]pis[%s_]+treści)%s*}}";
local strona_ze_spisem_tresci=mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci)
local strona_ze_spisem_tresci2=(not strona_ze_spisem_tresci) and mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci2) or nil;
if(strona_ze_spisem_tresci or strona_ze_spisem_tresci2)then
local tekst_rozwiniety_calego_spisu_tresci=p.SpreparowanyWikikodStrony(nil,nazwa_modolu..strona_ze_spisem_tresci,true);
if(tekst_rozwiniety_calego_spisu_tresci)then
tekst_rozwiniety_calego_spisu_tresci=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_rozwiniety_calego_spisu_tresci);
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
tablica_ksiazki.spis_tresci.tekst=tekst_rozwiniety_calego_spisu_tresci;
if(not tablica_ksiazki.spis_tresci.wywolanie)then tablica_ksiazki.spis_tresci.wywolanie={};end;
tablica_ksiazki.spis_tresci.wywolanie[1]=wywolanie_spis_tresci;
tablica_ksiazki.spis_tresci.wywolanie[2]=wywolanie_spis_tresci2;
----
local wywolanie=strona_ze_spisem_tresci and wywolanie_spis_tresci or wywolanie_spis_tresci2;
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,wywolanie,tekst_rozwiniety_calego_spisu_tresci);
end;
end;
----
local wyzyskane_wywolanie_szablonu_spis_tresci="";
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_modul=require("Module:StronicowyParser");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_ksiazki,true);
local html_modul=require("Module:Html");
local _1=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!}}");
local _2=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!((}}");
local _3=html_modul["KodyHTMLZnakówWikiCiągu"]("{{))!}}");
local mikroszablony={
["{{!}}"]=_1,
["{{!((}}"]=_2,
["{{))!}}"]=_3,
};
local mikroszablony_odwrotne={
[_1]="|",
[_2]="[[",
[_3]="]]",
};
local stronicowyparser_informacje=mw.loadData("Module:StronicowyParser/obiekty");
local jakie_nie_rozdzialy=stronicowyparser_informacje.tab_rozdzialow_pomijanych_w_rozwazaniach_na_stronach_glownych_ksiazek;
local jakie_spisy_tresci=stronicowyparser_informacje.tab_rozdzialow_glownych_spisow_tresci_ksiazek;
local wyrazenie_regularne="({{[&#;!%(%)]+}})";
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local function AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja)
rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
if((poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[rozdzial]))then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if(poziom_spisu_tresci<poziom_rozdzialu)then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
repeat
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._3.."%4}}");
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._1.."%4".._3.."%5}}");
until((not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}") )
and (not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}")));
text,_=mw.ustring.gsub(text,"{{[^{}]+}}",mikroszablony);
if(not tabela_artykulow)then tabela_artykulow={};end;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_artykulow[numer_rozdzialu_w_ksiazce][1]={rozdzial,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,},};
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([^{}%[%]\n]*)[^%S\n]*([^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
czy_rozdzial=true;
if((poziom_rozdzialu or 0)>0)then
return "","",rozdzial,true;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek and wyzyskane_wywolanie_szablonu_spis_tresci)then
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=iter();
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
----
local function LiniaArtykolow(linia)
repeat
linia,_=mw.ustring.gsub(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])", function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
linia,_=mw.ustring.gsub(linia,"({{[^{}]*)(,)([^{}]*}})",function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
until not mw.ustring.match(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])") and not mw.ustring.match(linia,"({{[^{}]*)(,)([^{}]*}})");
if(mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]Książka[%s_]*|[^{}]*}})")
)then
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})","%1,%2");
else
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
end;
local tabela_linii_artykolow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykolow,1 do
tabela_linii_artykolow[i],_=mw.ustring.gsub(tabela_linii_artykolow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykolow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local tab_linia=LiniaArtykolow(linia)
for k=1,#tab_linia,1 do
local iterator2=mw.ustring.gmatch(tab_linia[k],"([%[{][%[{][^{}]-[%]}][%]}])");
for wyzyskane_wywolanie_szablonu_spis_tresci in iterator2 do
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci2,wyrazenie_regularne,mikroszablony_odwrotne);
wyzyskane_wywolanie_szablonu_spis_tresci2=parametry_modul["Odstępy"]{[1]=wyzyskane_wywolanie_szablonu_spis_tresci2,[2]="tak",};
if(mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci2,"^%[%[([^%[%]]+)%]%]$"))then
wyzyskane_wywolanie_szablonu_spis_tresci=wyzyskane_wywolanie_szablonu_spis_tresci2;
end;
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom;
if(wliczaj_artykuly_tego_rozdzialu)then
tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_ksiazki);
--Rozdzialy początek
local znaki_niedozwolone;
if((tab_pozycja_artykulu)and(tab_pozycja_artykulu[1]))then
tab_pozycja_artykulu[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_artykulu[1],[2]="tak",}
--pozycja_artykulu=mw.getContentLanguage():ucfirst(pozycja_artykulu);
tab_pozycja_artykulu[1]=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](tab_pozycja_artykulu[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_artykulu[1],"[|<>{}%[%]]");
if(znaki_niedozwolone)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci)then
self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci=0;
end;
end;
tab_pozycja_artykulu[1]=html_modul["PoprawAdresNagłówkaStronyAdresu"](tab_pozycja_artykulu[1]);
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][2])then tabela_artykulow[numer_rozdzialu_w_ksiazce][2]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local strona=stronicowyparser_modul.PrzekierowanieDoStrony(nazwa_ksiazki..((tab_pozycja_artykulu[1]~="") and ("/"..tab_pozycja_artykulu[1]) or ""));
if(strona)then
tab_pozycja_artykulu[1]=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
local tab_stare={((tab_pozycja_artykulu[2]) and ({tab_pozycja_artykulu[1],tab_pozycja_artykulu[2],}) or tab_pozycja_artykulu[1]),{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][2],tab_stare);
break;
elseif((tab_pozycja_artykulu_inne)and(tab_pozycja_artykulu_inne[1]))then
local wiki_modul=require("Module:Wiki");
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][3])then tabela_artykulow[numer_rozdzialu_w_ksiazce][3]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local tab_stare={((tab_pozycja_artykulu_inne[1])and((tab_pozycja_artykulu_inne[2])or(tab_pozycja_artykulu_inne[3])or(tab_pozycja_artykulu_inne[4])))and({tab_pozycja_artykulu_inne[1],tab_pozycja_artykulu_inne[2],tab_pozycja_artykulu_inne[3],tab_pozycja_artykulu_inne[4],}) or tab_pozycja_artykulu_inne[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,#(tabela_artykulow[numer_rozdzialu_w_ksiazce][2] or {}),};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][3],tab_stare);
end;
else
link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"({{[^{}]+}})");
end;
if(((not tab_pozycja_artykulu)or(not tab_pozycja_artykulu[1]))and(link_szablon)and(czy_artykul_korzystany)and(licencja_z_autorem))then
local wywolanie_spisu_tresci=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^{{[Ll]icencja|([^{}]-)}}$");
if(wywolanie_spisu_tresci)then
wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"(%[%[[^|%[%]]-)(|)([^|%[%]]-%]%])","%1&#"..tostring(mw.ustring.byte('|'))..";%3");
local tabela_parametrow=techniczne_modul["ParsujWywołanieSzablonu"](wyzyskane_wywolanie_szablonu_spis_tresci);
if(tabela_parametrow)then
local autor=tabela_parametrow["Autor"];
local szkoly=tabela_parametrow["Ukończone szkoły"];
local email=tabela_parametrow["Email"];
local dotyczy=tabela_parametrow["Dotyczy"];
local licencjonowanie=tabela_parametrow["Licencjonowanie"];
local umowa_prawna=tabela_parametrow["Umowa prawna"];
local konsekwencje=tabela_parametrow["Konsekwencje"];
if(autor~=nil)then
autor,_=mw.ustring.gsub(autor,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(szkoly~=nil)then
szkoly,_=mw.ustring.gsub(szkoly,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(email~=nil)then
email,_=mw.ustring.gsub(email,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(dotyczy~=nil)then
dotyczy,_=mw.ustring.gsub(dotyczy,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(licencjonowanie~=nil)then
licencjonowanie,_=mw.ustring.gsub(licencjonowanie,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(umowa_prawna~=nil)then
umowa_prawna,_=mw.ustring.gsub(umowa_prawna,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(konsekwencje~=nil)then
konsekwencje,_=mw.ustring.gsub(konsekwencje,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
break;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end
end;
end;
end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end
local parsuj_rozdzialami=nil;
for rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja in iterator do
AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",tekst_rozwiniety_calego_artykulu,1,nil,nil);
end;
if(czy_artykul_korzystany)then tabelalisty2={tabela_artykulow, tabela_licencji_spisu_tresci,};else tabelalisty2=tabela_artykulow;end;
return tabelalisty2;
end;
function p.ObslugaSzczegolnaElementu(self,kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany)
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
function p.ObsluzSzablonWzor(self,tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji)
local kod_uchwytu=nil;
if(tabela_parametrow_szablonu["uchwyt"])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu["uchwyt"]);
elseif(tabela_parametrow_szablonu[numer_numeracji])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu[numer_numeracji]);
end;
if(kod_uchwytu and not mw.ustring.match(kod_uchwytu,"^%s*$"))then
p:ObslugaSzczegolnaElementu(kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany);
end;
end;
function p.Czy_jest_taki_element_w_tabeli_wynikow(self,element, nazwa_przestrzeni, nazwa_ksiazki)
local parametry_modul=require("Module:Parametry");
local tabela_problemow=self.tabela_listy_danych_analizy_ksiazki.problemy[element];
return (parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow,nazwa_przestrzeni)
and parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow[nazwa_przestrzeni],nazwa_ksiazki));
end;
function p.SprawdzCzyJestDostepnySpisTresci(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if(nazwa_przestrzeni)then
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu;
if(tablica_przestrzeni)then
local tabela_ksiazek=tablica_przestrzeni[nazwa_przestrzeni];
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki~=nazwa_ksiazki)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=nazwa_artykulu))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:DodawanieElementowDoTablicy("brak_spisy_tresci_do_doloczanych_stron",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron)then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron=0;
end;
end;
end;
end;
end;
end;
function p.PusteParametryLinkow(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and mw.ustring.match(nazwa_ksiazki,"^%s*$") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and mw.ustring.match(nazwa_artykulu,"^%s*$") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and mw.ustring.match(uchwyt_obiektu,"^%s*$") or nil;
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1]=0;
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2]=0;
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3]=0;
end;
end;
end;
function p.ZbieranieInformacjiArtykolowKsiazek(self,tabela_parametrow_szablonu)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=nazwa_artykulu or (pelna_nazwa_ksiazki and (((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki))and ksiazkowe_modul["NazwaArtykułuKsiążki"]() or "") or ksiazkowe_modul["NazwaArtykułuKsiążki"]());
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.ZbieranieInformacjiPudelek(self,tabela_parametrow_szablonu)
if((not tabela_parametrow_szablonu["nazwa przestrzeni nazw"])and(not tabela_parametrow_szablonu["nazwa jednostki"]))then return;end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_jednostki=(tabela_parametrow_szablonu["nazwa jednostki"]
and mw.ustring.gsub(tabela_parametrow_szablonu["nazwa jednostki"],"^([^#]*)#(.*)$","%1")
or nil
) or nazwy_modul["NAZWASTRONY"]();
local nazwa_przestrzeni=nazwy_modul.Np{nazwa=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwy_modul["NAZWAPRZESTRZENI"]()};
local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelna_nazwa_ksiazki);
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.LinkowanieOgolnie(self,tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,nazwa_obiektu, linkobiekt)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
uchwyt_obiektu=(uchwyt_obiektu)and parametry_modul["Odstępy"](uchwyt_obiektu) or nil;
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
nazwa_artykulu=require("Module:Parametry")["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](pelna_nazwa_ksiazki);
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
nazwa_ksiazki=nazwy_modul["NAZWASTRONY"](pelna_nazwa_ksiazki);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
end;
if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
elseif(nazwa_ksiazki=="")then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
p:LinkowanieNastepne(nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt);
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt)
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu])then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu]=0;
end;
end;
function p.LinkowanieDalszePrace(self,tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt,Funkcja_sprawdzania_parametrow_linkow)
local linkobiekttab=linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.LinkowanieNastepne(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not mw.ustring.match(nazwa_przestrzeni,"[|<>{}%[%]]")))or(nazwa_przestrzeni=="")))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not mw.ustring.match(nazwa_artykulu,"[|<>{}%[%]]")))or(nazwa_artykulu=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not mw.ustring.match(nazwa_ksiazki,"[|<>{}%[%]]"))))then
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false,tabela_listy_danych_analizy_ksiazki2);
if(tabela_listy_danych_analizy_ksiazki0)then
if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]=0;
end;
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
end;
else
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron==nil)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron=0;
else
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_stron_doloczanych_do_stron=0;
end;
end;
end;
end;
function p.SpreparowanyWikikodStrony(self,nazwa_modolu,dokumentacja)
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local nazwy_modul=require("Module:Nazwy");
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu);
if(nazwy_np_modul.Module==nazwa_przestrzeni)then
local techniczne_modul=require("Module:Techniczne");
nazwa_modolu=techniczne_modul["PełnaNazwaOpisuModułu"](nazwa_modolu);
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template~=nazwa_przestrzeni)then
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template==nazwa_przestrzeni)then
if(mw.ustring.match(nazwa_modolu,"^[^:]+:(.*/opis)%s*$"))then
local szablony_magiczne={};
return p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,dokumentacja);
else
local szablony_magiczne={};
local tekst_artykulu_caly=p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,false,nil,true);
if(not tekst_artykulu_caly)then return;end;
local iterator=mw.ustring.gmatch(tekst_artykulu_caly,"{{[^{}]-}}");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for wywolanie in iterator do
local function AnalizujDokumentacja(_,wywolanie)
local nazwa_strony2;
local dokumentacja_szablonu=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*}}");
if(dokumentacja_szablonu)then
local nazwa_strony2=nazwa_modolu.."/opis";
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja);
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,"{{%s*[Dd]okumentacja%s*}}",tekst_artykulu2);
else
local dopasowanie=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*|");
if(dopasowanie)then
local tablica_parametrow_dokumentacja=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie)
local nazwa_strony2=tablica_parametrow_dokumentacja[1];
local zawartosc=tablica_parametrow_dokumentacja["zawartość"];
if((nazwa_strony2)and(not zawartosc))then
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja,nazwa_modolu);
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,tekst_artykulu2);
elseif(zawartosc)then
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
zawartosc=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](zawartosc);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,zawartosc);
end;
end;
end;
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(wywolanie,AnalizujDokumentacja)
end;
return tekst_artykulu_caly;
end;
end;
end;
function p.LadujZawartoscStrony(self,nazwa_strony,czy_noinclude,szablony_magiczne,dokumentacja,nazwa_modolu_szablonu_opisu,szablon_nie_opis)
local czy_nazwa_strony_z_tylko_odstepami_lub_pusta=mw.ustring.match(nazwa_strony,"^%s*$");
local uchwyt_strony;
local tekst_artykulu;
local nazwa_strony_bez_kodow_html;
if(not czy_nazwa_strony_z_tylko_odstepami_lub_pusta)then
nazwa_strony_bez_kodow_html=require("Module:Html").TransformacjaKlasyZnakowej(nazwa_strony);
uchwyt_strony = mw.title.makeTitle('', nazwa_strony_bez_kodow_html);
tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
local czy_istnieje = tekst_artykulu or (uchwyt_strony and uchwyt_strony.exists or nil);
if(not czy_istnieje)then
if(self and self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje=0
end;
end;
return nil;
else
local czy_nie_istnieje_zawartosc=((uchwyt_strony)and(not tekst_artykulu));
if(czy_nie_istnieje_zawartosc)then
return nil;
end;
end;
else
return nil;
end;
if(czy_noinclude)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","%1");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->.-<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","");
else
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->.-<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->(.-)<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","%1");
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>(.-)</[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<!--(.-)-->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->.-<%s-/%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Pp][Rr][Ee]%s->.-<%s-/%s-[Pp][Rr][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<%s-[mM][aA][tT][hH]%s->.-<%s-/%s-[mM][aA][tT][hH]%s->)","");
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{NAMESPACE}}"]=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{PAGENAME}}"]=nazwy_modul["NAZWASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{FULLPAGENAME}}"]=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
end;
if(szablony_magiczne)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"{{[^{}]+}}",szablony_magiczne);
local ramka_modul=require("Module:Ramka");
tekst_artykulu=ramka_modul.InstrukcjeWarunkowe(tekst_artykulu);
end;
if(not szablon_nie_opis)then
if(not dokumentacja)then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
tekst_artykulu=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(tekst_artykulu);
end;
end;
return tekst_artykulu;
end;
function p.ZbieranieInformacji(self,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, czy_artukul_korzystany,tabela_listy_danych_analizy_ksiazki2,linkobiekt)
if(not czy_artukul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki and self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
return 0;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_ksiazki,"^[^/]+/(.-)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_ksiazki,"^%s*[Bb]rudnopis/[^/]+/(.-)$")))
)then
p:DodawanieElementowDoTablicy("strony_poza_zakresem_obslugiwanym",nil,nazwa_przestrzeni,nazwa_ksiazki)
end;
local parametry_modul=require("Module:Parametry");
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_ksiazka=tabela_przestrzeni[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_artykolow;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local uchwyty_i_numeracje=tabela_artykul.uchwyty_i_numeracje;
if(uchwyty_i_numeracje)then
return 0;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
if(czy_artukul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=nazwa_artykulu;
end;
end;
local nazwa_modolu=(nazwa_przestrzeni=="")and ((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu)
or nazwa_przestrzeni..":"..((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu);
local tekst_rozwiniety_calego_artykulu=p:SpreparowanyWikikodStrony(nazwa_modolu);
if(not czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
-- przydzielanie tablicy
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.lista_artykolow)then tablica_ksiazki.lista_artykolow={};end;
if(not tablica_ksiazki.lista_artykolow[nazwa_artykulu])then tablica_ksiazki.lista_artykolow[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_artykolow[nazwa_artykulu];
local tablica_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
if(czy_artukul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tabela_listy_danych_analizy_ksiazki2)then tabela_listy_danych_analizy_ksiazki2={};end;
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=element_w_tablicy_obiekt[1];
tabela_listy_danych_analizy_ksiazki2[wartosc]={};
if(czy_artukul_korzystany)then linkobiekt[wartosc]={};end;
end;
local strona;
if(czy_artukul_korzystany)then
strona="";
else
strona=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki..((nazwa_artykulu~="")and "/"..nazwa_artykulu or "")
end;
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if((self.tabela_listy_danych_analizy_ksiazki.zastepczy) or (not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki))))then
if((nazwa_przestrzeni)and(nazwa_ksiazki))then
local czy_ksiazka_istnieje_w_tablicy=false;
local tabela_ksiazek=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_ksiazek)then
for nazwa_ksiazki_i,tablica_spisu in pairs(tabela_ksiazek) do
if(nazwa_ksiazki_i==nazwa_ksiazki)then
if(tablica_spisu.spis)then
czy_ksiazka_istnieje_w_tablicy=true;
break;
end;
end;
end;
end;
if(not czy_ksiazka_istnieje_w_tablicy)then
local tabela_wstepnych_informacji;
local normalna_nazwa_przestrzeni;local normalna_nazwa_ksiazki;
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
else
normalna_nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni;
normalna_nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki;
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki,czy_artukul_korzystany);
end;
if(tabela_wstepnych_informacji==0)then
if(czy_artukul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.problemy.korzystane_strona_glowna_nie_istnieje=0;
else
p:DodawanieElementowDoTablicy("doloczone_strony_glowne_nie_istnieja",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
else
if(tabela_wstepnych_informacji)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tablica_ksiazki.spis=tabela_wstepnych_informacji[1];
tablica_ksiazki.licencja=tabela_wstepnych_informacji[2];
else
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni]={};
end;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki]={};
end;
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].spis=tabela_wstepnych_informacji[1];
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].licencja=tabela_wstepnych_informacji[2];
end;
if(not tabela_wstepnych_informacji[1])then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych)then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=""))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych=0;
end;
end;
end;
else
tablica_ksiazki.spis=tabela_wstepnych_informacji;
end;
else
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
else
p:DodawanieElementowDoTablicy("brak_spisow_tresci_do_doloczonych_ksiazek_na_ich_stronach_glownych",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
end;
function StronaZbiorcza()
if(czy_artukul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
return stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,nil,TakFun,NieFun,nil);
end;
return nil;
end;
InneInformacjePrzebneDoAnalizowanejKsiazki();
local strona_zbiorcza=StronaZbiorcza();
if(strona_zbiorcza)then
if((tablica_ksiazki.spis_tresci)and(tablica_ksiazki.spis_tresci.tekst)and(tablica_ksiazki.spis_tresci.wywolanie)
and(tablica_ksiazki.spis_tresci.wywolanie[1])and(tablica_ksiazki.spis_tresci.wywolanie[2]))then
local pelny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1])
if(pelny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1],tablica_ksiazki.spis_tresci.tekst);
else
local wzgledny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2])
if(wzgledny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2],tablica_ksiazki.spis_tresci.tekst);
end;
end;
end;
end;
if(czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local toc;
if((not czy_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone))then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(czy_artukul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(obiekty_modul.strona_start[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
return;
elseif(obiekty_modul.strona_start_inne[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif(obiekty_modul.strona_start_analiza_spis_tresci[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
end;
end;
local plik=mw.ustring.match(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"^{{:([^:|{}]-)}}$");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=mw.ustring.match(tabela_parametrow_szablonu[0],"^[wW]ypowiedzenie$");
local linkobiekt2;
local link;
if(czy_wypowiedzenie)then
linkobiekt2=false;
link=false;
else
linkobiekt2=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]inkObiekt$");
if(linkobiekt2)then
link=true;
else
link=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]ink");
end;
end;
local czy_obsluzone=true;
local funkcja_aliasow=function(nazwa_szablonu,elementy_w_tablicy_obiekty)
local wzor_nazwy_szablonu1=mw.ustring.gsub(elementy_w_tablicy_obiekty[1],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[2])then
if(type(elementy_w_tablicy_obiekty[2])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[2])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[2],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
end;
end;
end;
return czy_aliasy;
end;
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow_bez_obiektu_nienazwanego)do
local wartosc_elementu=elementy_w_tablicy_obiekty[1];
if(not link)then
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
czy_aliasy=czy_wypowiedzenie or funkcja_aliasow(tabela_parametrow_szablonu[0],elementy_w_tablicy_obiekty);
if(czy_aliasy)then
if((not czy_wypowiedzenie)
or((czy_wypowiedzenie)and(
(tabela_parametrow_szablonu["rodzaj"]==wartosc_elementu)
))
)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artukul_korzystany,elementy_w_tablicy_obiekty[5]);
czy_obsluzone=false;
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu= tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
if(uchwyt_obiektu and not mw.ustring.match(uchwyt_obiektu,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
break;
end;
end;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
elseif(czy_artukul_korzystany)then
if(link)then
local funkcja_aliasow_2=function(zmienna)
if(wartosc_elementu~=zmienna)then return false;end;
local wzor_nazwy_szablonu1="[Ll]ink"..wartosc_elementu;
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
local szablon;
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[3])then
if(type(elementy_w_tablicy_obiekty[3])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[3])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
szablon=alias
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[3],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then szablon=elementy_w_tablicy_obiekty[3];end;
end;
end;
else
szablon="Link"..wartosc_elementu;
end;
return czy_aliasy,szablon;
end;
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
local typ=mw.getContentLanguage():lcfirst(wartosc_elementu);
local alias,szablon=funkcja_aliasow_2(wartosc_elementu);
if((alias)or((linkobiekt2)and(tabela_parametrow_szablonu["typ"]==typ)))then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,wartosc_elementu, linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=((alias)and szablon or "LinkObiekt")..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
czy_obsluzone=false;
break;
end;
else
local alias,szablon=funkcja_aliasow_2("Śródtytuł");
if(alias)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Śródtytuł", linkobiekt);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
czy_obsluzone=false;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=szablon..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
break;
end;
end;
end;
end;
end;
if(czy_obsluzone)then
if(czy_wypowiedzenie)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artukul_korzystany,obiekty_modul.obiekty[5]);
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[obiekty_modul.obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt"..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
elseif(czy_artukul_korzystany)then
if(linkobiekt2)then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Obiekt", linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[1]] or tabela_parametrow_szablonu["uchwyt"];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
else
for wartosc_elementu,_ in pairs(obiekty_modul.bez_uchwytow_spis_tresci)do
local wzor_artykolow_ksiazek=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_artykolow_ksiazek.."$"))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:ZbieranieInformacjiArtykolowKsiazek(tabela_parametrow_szablonu);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="ArtykułKsiążki:"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
end;
for wartosc_elementu,_ in pairs(obiekty_modul.szablony_pudelka)do
local wzor_szablonu_pudelka=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_szablonu_pudelka.."$"))then
p:ZbieranieInformacjiPudelek(tabela_parametrow_szablonu);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=tabela_parametrow_szablonu[0]..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,AnalizaParametrowSzablonuISzablonu);
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].uchwyty_i_numeracje=tabela_listy_danych_analizy_ksiazki2;
if(czy_artukul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu);
mw.log('To jest strona zbiorcza.')
end;
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
mw.log("Liczę spis treści artykułów korzystanych.");
end;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykolu=tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].TOC=toc;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzLinki(self,tabela_listy_danych_analizy_ksiazki2,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if((not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2])or(nazwa_artykulu==""))then
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
local czy_uchwyty_nie_sa_ponumerowane=true;
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then
czy_uchwyty_nie_sa_ponumerowane=false;
break;
end;
end;
end;
if(czy_uchwyty_nie_sa_ponumerowane)then
local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
if(czy_tylko_ze_znakami_odstepu_lub_puste)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]) then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]=0;
end;
return;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]=0;
return;
end;
end;
end;
end;
end;
function p.PrzetworzMozliweWszystkieRodzajeObiektow(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
for _,element_w_podtablicy_kategorii_bledow in pairs(obiekty_modul.tablica_obiektow)do
local element_obiekty=element_w_podtablicy_kategorii_bledow[1];
tabela_listy_danych_analizy_ksiazki=p:Sprawdzanie_i_numerowanie(dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja);
end;
end;
function p.PrzetworzZebraneInformacje(self,tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2)
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
for nazwa_przestrzeni,tablica_nazw_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)do
for nazwa_ksiazki,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do
local prosto=true;
if(self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
if((nazwa_przestrzeni==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni)
and(nazwa_ksiazki==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki))then
prosto=false;
end;
end;
if(prosto)then
local nazwa_przestrzeni_nazw_strony=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_ksiazki);
for nazwa_artykulu, dane_artykulu in pairs(tablica_nazw_artykulow.lista_artykolow) do
local biezacy_artykul=dane_artykulu.artykul_biezacy;
local numer_obiektu_w_ksiazce=1;local czy_da_sie_numerowac_obiekty_ze_spisem_tresci =false;
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
else
local tab_ksiazki=tablica_nazw_artykulow.spis;
if(tab_ksiazki)then
for _,tab_rozdzialu in pairs(tab_ksiazki)do
if(tab_rozdzialu[2])then
for _,nazwa_artykulu1 in ipairs(tab_rozdzialu[2])do
if(nazwa_artykulu1[1]~=nazwa_artykulu)then
numer_obiektu_w_ksiazce=numer_obiektu_w_ksiazce+1;
else
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;break;
end;
end;
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then break;end;
end;
end;
end;
local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu)
p:DodawanieElementowDoTablicy("bledy_uchwytow_doloczonych_stron",nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki);
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
elseif(not czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
else
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
end;
end;
end;
end;
for _,obiekt in pairs(obiekty_modul.tablica_obiektow)do
local obiekt2=obiekt[1];
p:SprawdzLinki(tabela_listy_danych_analizy_ksiazki2,linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2);
end;
return tabela_listy_danych_analizy_ksiazki;
end;
function p.Sprawdzanie_i_numerowanie(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
local parametry_modul=require("Module:Parametry");
local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu];
if(obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[nazwa_obiektu])then
return tabela_listy_danych_analizy_ksiazki;
end;
for licznik,element_obiektu in pairs(tabela_obiektu)do
local czy_numerowac=true;
for licznik2=1, licznik-1,1 do
if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then
if(biezacy_artykul)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu])then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu]=0;
end;
else
__Funkcja(nazwa_obiektu);
end;
tabela_obiektu[licznik2][1]=nil;
czy_numerowac=false;
end;
end;
if(czy_numerowac)then
if(numer_artykulu_w_ksiazce>0)then
element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
elseif(numer_artykulu_w_ksiazce==0)then
element_obiektu[2]=licznik
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0
end;
end;
end;
return tabela_listy_danych_analizy_ksiazki;
end;
return p;
kzdmkyo611u6evrc21bwbzs09qseu8d
438606
438605
2022-08-23T19:49:44Z
Persino
2851
Scribunto
text/plain
local p={};
function p.ZaczynajAnalizowacArtykulyKsiazek(self)
self.tabela_listy_danych_analizy_ksiazki={};
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu={};
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
self.tabela_listy_danych_analizy_ksiazki.problemy={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_doloczonych_stron={};
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu={};
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych={};
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=elementy_w_tablicy_obiekty[1];
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[wartosc]={};
end;
self.tabela_listy_danych_analizy_ksiazki.licencja={};
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe")
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"]();
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"]();
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"]();
local pelna_nazwa_ksiazki="Szablon:Podręcznik/Ustawienia/"..((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki;
local techniczne_modul=require("Module:Techniczne");
local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki.."/config",};
if(ile>0)then
local frame=mw.getCurrentFrame();
local nazwa_szablonu=techniczne_modul.NazwaSzablonu(pelna_nazwa_ksiazki);
local zastepczy=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępczy",}};
if(not mw.ustring.match(zastepczy,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.zastepczy=true;
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka zastępcza",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł zastępczy",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
local ksiazka_normalna=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul_normalny=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka_normalna,"^%s*$"))then
local strona=ksiazka_normalna..((artykul_normalny~="") and ("/"..artykul_normalny) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
else
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
if(ile>0)then
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](strona);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](strona);
end;
end;
end;
end;
local tabela_listy_danych_analizy_ksiazki2={};
local linkobiekt={};
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, true,tabela_listy_danych_analizy_ksiazki2,linkobiekt);
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki,})then
p:PrzetworzZebraneInformacje(tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.DodawanieElementowDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki)
local tabela_listy_danych_analizy_ksiazki=self.tabela_listy_danych_analizy_ksiazki.problemy;
if(not tabela_listy_danych_analizy_ksiazki[element_tablicy])then
tabela_listy_danych_analizy_ksiazki[element_tablicy]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[element_tablicy];
if(nazwa_obiektu)then
if(not tabela_listy_danych_analizy_ksiazki[nazwa_obiektu])then
tabela_listy_danych_analizy_ksiazki[nazwa_obiektu]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_obiektu];
end;
if(not tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni])then
tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni]={};
end;
tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni];
tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki]=true;
end;
function p.SpisTresciWstep(self,tekst_artykulu,nazwa_strony,obiekty,nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany)
nazwa_strony=nazwa_strony and mw.ustring.gsub(nazwa_strony,"(|)",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end) or nil;
local tablica_spisu_tresci=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local uzyskany_w_wyniku_parsowania;
local tablica_powtarzajacych_sie_elementow={};
local elementy_linku=nil;
local frame=mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local tab_szablony=mw.loadData("Module:StronicowyParser/obiekty").szablony_stronicowego_parsera;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu);
local numeracja;
local function SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
local wywolanie_naglowek_iterator=mw.ustring.match(naglowek,"{{%s*Śródtytuł%s*}}") or mw.ustring.gmatch(naglowek,"{{%s*Śródtytuł%s*|[^{}]*}}");
local powtorka=0;
for wywolanie_naglowek in wywolanie_naglowek_iterator do
wywolanie_naglowek=mw.ustring.gsub(wywolanie_naglowek,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie_naglowek);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(powtorka>=1)then
if(self.tabela_listy_danych_analizy_ksiazki)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("powtorka_naglowek_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
break;
end;
powtorka=powtorka+1;
end;
end;
local function SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu)
local jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*}}") or mw.ustring.match(text_rozdzialu,"{{%s*Śródtytuł%s*|[^{}]*}}");
if(jest_naglowkuj_w_tekscie_rozdzialu)then
jest_naglowkuj_w_tekscie_rozdzialu=mw.ustring.gsub(jest_naglowkuj_w_tekscie_rozdzialu,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
local parametry_wywolania_szablonu_naglowek=techniczne_modul["ParsujWywołanieSzablonu"](jest_naglowkuj_w_tekscie_rozdzialu);
numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej=0;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
else
p:DodawanieElementowDoTablicy("naglowek_w_tekscie_rozdzialu_w_stronie_doloczonej",nil,nazwa_przestrzeni,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Śródtytuł:"..(numeracja or "");
end;
end;
end;
end;
for naglowek,text_rozdzialu,poziom_rozdzialu in iterator do
numeracja=nil;
if(self)then
SzablonNaglowkujWNaglowkuRozdzialu(naglowek)
SzablonNaglowkujWTekscieRozdzialu(text_rozdzialu);
end;
local function SzablonyWywolywane(wywolanie)
local parametry_wywolania_szablonu=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie);
if(tab_szablony[parametry_wywolania_szablonu[0]])then return "";end;
return wywolanie;
end;
naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywane);
naglowek=frame:preprocess(naglowek);
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+:([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[:?([^{}|%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%[[^{}|%[%]]+|([^{}%[%]]+)%]%]","%1");
naglowek=mw.ustring.gsub(naglowek,"%[%s*%S+%s+([^%[%]]*)%]","%1");
naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
local linki_modul=require("Module:Linki");
local nazwa_rozdzialu_w_artykule=linki_modul["UsuńZnaczniki"](naglowek);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"<[^<>]+>","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[<>]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"_"," ");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";");
local numer_tego_samego_naglowka=1;
local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule);
local numer_tego_samego_naglowka=1;
for s=1,#tablica_powtarzajacych_sie_elementow,1 do
local element=tablica_powtarzajacych_sie_elementow[s];
if(element==nazwa_rozdzialu_w_artykule)then
numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
end;
end;
if(numer_tego_samego_naglowka==1)then
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule,naglowek};
else
elementy_linku={(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "").."#"..nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek};
end;
if((obiekty)and(numeracja))then
obiekty[#obiekty+1]={numeracja,{elementy_linku[1], elementy_linku[2]}};
end;
if((poziom_rozdzialu or 0)>0)then
local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu);
tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule;
if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={};end;
tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony};
end;
end;
if(self)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
if((linia_poczatkowa)and(mw.ustring.match(linia_poczatkowa,"^=+.+=+%s*")))then
return tablica_spisu_tresci;
end;
local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=+[^=]+=+") or tekst_artykulu;
SzablonNaglowkujWTekscieRozdzialu(tekst_zerowy);
end;
end;
end;
return tablica_spisu_tresci;
end;
function p.ZbierajJakieSaArtykulyIInformacjeOLicencji(self,nazwa_przestrzeni,nazwa_ksiazki,czy_artykul_korzystany)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_ksiazki))then return 0;end;
local nazwa_modolu=(parametry_modul.CzyTak(nazwa_przestrzeni)and parametry_modul.CzyTak(nazwa_ksiazki))and nazwa_przestrzeni..":"..nazwa_ksiazki or nazwa_ksiazki;
local tekst_rozwiniety_calego_artykulu=p.SpreparowanyWikikodStrony(nil,nazwa_modolu,true);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
----
local techniczne_modul=require("Module:Techniczne");
local wywolanie_spis_tresci="{{%s*"..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or ":")
..techniczne_modul["WzórNazwyStrony"](nazwa_ksiazki).."(/[Ss]pis[%s_]+treści)%s*}}";
local wywolanie_spis_tresci2="{{%s*(/[Ss]pis[%s_]+treści)%s*}}";
local strona_ze_spisem_tresci=mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci)
local strona_ze_spisem_tresci2=(not strona_ze_spisem_tresci) and mw.ustring.match(tekst_rozwiniety_calego_artykulu,wywolanie_spis_tresci2) or nil;
if(strona_ze_spisem_tresci or strona_ze_spisem_tresci2)then
local tekst_rozwiniety_calego_spisu_tresci=p.SpreparowanyWikikodStrony(nil,nazwa_modolu..strona_ze_spisem_tresci,true);
if(tekst_rozwiniety_calego_spisu_tresci)then
tekst_rozwiniety_calego_spisu_tresci=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_rozwiniety_calego_spisu_tresci);
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
tablica_ksiazki.spis_tresci.tekst=tekst_rozwiniety_calego_spisu_tresci;
if(not tablica_ksiazki.spis_tresci.wywolanie)then tablica_ksiazki.spis_tresci.wywolanie={};end;
tablica_ksiazki.spis_tresci.wywolanie[1]=wywolanie_spis_tresci;
tablica_ksiazki.spis_tresci.wywolanie[2]=wywolanie_spis_tresci2;
----
local wywolanie=strona_ze_spisem_tresci and wywolanie_spis_tresci or wywolanie_spis_tresci2;
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,wywolanie,tekst_rozwiniety_calego_spisu_tresci);
end;
end;
----
local wyzyskane_wywolanie_szablonu_spis_tresci="";
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_modul=require("Module:StronicowyParser");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_ksiazki,true);
local html_modul=require("Module:Html");
local _1=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!}}");
local _2=html_modul["KodyHTMLZnakówWikiCiągu"]("{{!((}}");
local _3=html_modul["KodyHTMLZnakówWikiCiągu"]("{{))!}}");
local mikroszablony={
["{{!}}"]=_1,
["{{!((}}"]=_2,
["{{))!}}"]=_3,
};
local mikroszablony_odwrotne={
[_1]="|",
[_2]="[[",
[_3]="]]",
};
local stronicowyparser_informacje=mw.loadData("Module:StronicowyParser/obiekty");
local jakie_nie_rozdzialy=stronicowyparser_informacje.tab_rozdzialow_pomijanych_w_rozwazaniach_na_stronach_glownych_ksiazek;
local jakie_spisy_tresci=stronicowyparser_informacje.tab_rozdzialow_glownych_spisow_tresci_ksiazek;
local wyrazenie_regularne="({{[&#;!%(%)]+}})";
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local function AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja)
rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
if((poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[rozdzial]))then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if(poziom_spisu_tresci<poziom_rozdzialu)then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
repeat
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._3.."%4}}");
text,_=mw.ustring.gsub(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}","{{%1|%2".._2.."%3".._1.."%4".._3.."%5}}");
until((not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)%]%]([^{}]-)}}") )
and (not mw.ustring.match(text,"{{([%w_%s:]+)|([^{}]-)%[%[([^%[%]|{}]+)|([^%[%]|{}]+)%]%]([^{}]-)}}")));
text,_=mw.ustring.gsub(text,"{{[^{}]+}}",mikroszablony);
if(not tabela_artykulow)then tabela_artykulow={};end;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_artykulow[numer_rozdzialu_w_ksiazce][1]={rozdzial,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,},};
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([^{}%[%]\n]*)[^%S\n]*([^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
czy_rozdzial=true;
if((poziom_rozdzialu or 0)>0)then
return "","",rozdzial,true;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek and wyzyskane_wywolanie_szablonu_spis_tresci)then
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=iter();
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
end;
end;
----
local function LiniaArtykolow(linia)
repeat
linia,_=mw.ustring.gsub(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])", function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
linia,_=mw.ustring.gsub(linia,"({{[^{}]*)(,)([^{}]*}})",function(a,b,c) return a.."&#"..mw.ustring.byte(b)..";"..c;end);
until not mw.ustring.match(linia,"(%[%[[^%[%]]*)(,)([^%[%]]*%]%])") and not mw.ustring.match(linia,"({{[^{}]*)(,)([^{}]*}})");
if(mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})")
or mw.ustring.match(linia,"^[%s%w]*({{[%s_]*[Kk]Książka[%s_]*|[^{}]*}})")
)then
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})","%1,%2");
linia,_=mw.ustring.gsub(linia,"([%]}]+)%s*({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})","%1,%2");
else
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+krótka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]ompletność[%s_]+junior[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
linia,_=mw.ustring.gsub(linia,"({{[%s_]*[Kk]siążka[%s_]*|[^{}]*}})%s*([%[{]+)","%1,%2");
end;
local tabela_linii_artykolow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykolow,1 do
tabela_linii_artykolow[i],_=mw.ustring.gsub(tabela_linii_artykolow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykolow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local tab_linia=LiniaArtykolow(linia)
for k=1,#tab_linia,1 do
local iterator2=mw.ustring.gmatch(tab_linia[k],"([%[{][%[{][^{}]-[%]}][%]}])");
for wyzyskane_wywolanie_szablonu_spis_tresci in iterator2 do
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
wyzyskane_wywolanie_szablonu_spis_tresci2,_=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci2,wyrazenie_regularne,mikroszablony_odwrotne);
wyzyskane_wywolanie_szablonu_spis_tresci2=parametry_modul["Odstępy"]{[1]=wyzyskane_wywolanie_szablonu_spis_tresci2,[2]="tak",};
if(mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci2,"^%[%[([^%[%]]+)%]%]$"))then
wyzyskane_wywolanie_szablonu_spis_tresci=wyzyskane_wywolanie_szablonu_spis_tresci2;
end;
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom;
if(wliczaj_artykuly_tego_rozdzialu)then
tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_ksiazki);
--Rozdzialy początek
local znaki_niedozwolone;
if((tab_pozycja_artykulu)and(tab_pozycja_artykulu[1]))then
tab_pozycja_artykulu[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_artykulu[1],[2]="tak",}
--pozycja_artykulu=mw.getContentLanguage():ucfirst(pozycja_artykulu);
tab_pozycja_artykulu[1]=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](tab_pozycja_artykulu[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_artykulu[1],"[|<>{}%[%]]");
if(znaki_niedozwolone)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci)then
self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci=0;
end;
end;
tab_pozycja_artykulu[1]=html_modul["PoprawAdresNagłówkaStronyAdresu"](tab_pozycja_artykulu[1]);
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][2])then tabela_artykulow[numer_rozdzialu_w_ksiazce][2]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local strona=stronicowyparser_modul.PrzekierowanieDoStrony(nazwa_ksiazki..((tab_pozycja_artykulu[1]~="") and ("/"..tab_pozycja_artykulu[1]) or ""));
if(strona)then
tab_pozycja_artykulu[1]=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
local tab_stare={((tab_pozycja_artykulu[2]) and ({tab_pozycja_artykulu[1],tab_pozycja_artykulu[2],}) or tab_pozycja_artykulu[1]),{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][2],tab_stare);
break;
elseif((tab_pozycja_artykulu_inne)and(tab_pozycja_artykulu_inne[1]))then
local wiki_modul=require("Module:Wiki");
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][3])then tabela_artykulow[numer_rozdzialu_w_ksiazce][3]={};end;
local linia_artykokow=tab_linia[k];
linia_artykokow=mw.ustring.gsub(linia_artykokow,wyrazenie_regularne,mikroszablony_odwrotne);
local tab_stare={((tab_pozycja_artykulu_inne[1])and((tab_pozycja_artykulu_inne[2])or(tab_pozycja_artykulu_inne[3])or(tab_pozycja_artykulu_inne[4])))and({tab_pozycja_artykulu_inne[1],tab_pozycja_artykulu_inne[2],tab_pozycja_artykulu_inne[3],tab_pozycja_artykulu_inne[4],}) or tab_pozycja_artykulu_inne[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,#(tabela_artykulow[numer_rozdzialu_w_ksiazce][2] or {}),};
table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][3],tab_stare);
end;
else
link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"({{[^{}]+}})");
end;
if(((not tab_pozycja_artykulu)or(not tab_pozycja_artykulu[1]))and(link_szablon)and(czy_artykul_korzystany)and(licencja_z_autorem))then
local wywolanie_spisu_tresci=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^{{[Ll]icencja|([^{}]-)}}$");
if(wywolanie_spisu_tresci)then
wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"(%[%[[^|%[%]]-)(|)([^|%[%]]-%]%])","%1&#"..tostring(mw.ustring.byte('|'))..";%3");
local tabela_parametrow=techniczne_modul["ParsujWywołanieSzablonu"](wyzyskane_wywolanie_szablonu_spis_tresci);
if(tabela_parametrow)then
local autor=tabela_parametrow["Autor"];
local szkoly=tabela_parametrow["Ukończone szkoły"];
local email=tabela_parametrow["Email"];
local dotyczy=tabela_parametrow["Dotyczy"];
local licencjonowanie=tabela_parametrow["Licencjonowanie"];
local umowa_prawna=tabela_parametrow["Umowa prawna"];
local konsekwencje=tabela_parametrow["Konsekwencje"];
if(autor~=nil)then
autor,_=mw.ustring.gsub(autor,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(szkoly~=nil)then
szkoly,_=mw.ustring.gsub(szkoly,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(email~=nil)then
email,_=mw.ustring.gsub(email,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(dotyczy~=nil)then
dotyczy,_=mw.ustring.gsub(dotyczy,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(licencjonowanie~=nil)then
licencjonowanie,_=mw.ustring.gsub(licencjonowanie,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(umowa_prawna~=nil)then
umowa_prawna,_=mw.ustring.gsub(umowa_prawna,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(konsekwencje~=nil)then
konsekwencje,_=mw.ustring.gsub(konsekwencje,wyrazenie_regularne,mikroszablony_odwrotne);
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
break;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end
end;
end;
end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end
local parsuj_rozdzialami=nil;
for rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja in iterator do
AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",tekst_rozwiniety_calego_artykulu,1,nil,nil);
end;
if(czy_artykul_korzystany)then tabelalisty2={tabela_artykulow, tabela_licencji_spisu_tresci,};else tabelalisty2=tabela_artykulow;end;
return tabelalisty2;
end;
function p.ObslugaSzczegolnaElementu(self,kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany)
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
function p.ObsluzSzablonWzor(self,tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji)
local kod_uchwytu=nil;
if(tabela_parametrow_szablonu["uchwyt"])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu["uchwyt"]);
elseif(tabela_parametrow_szablonu[numer_numeracji])then
local parametry_modul=require("Module:Parametry");
kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu[numer_numeracji]);
end;
if(kod_uchwytu and not mw.ustring.match(kod_uchwytu,"^%s*$"))then
p:ObslugaSzczegolnaElementu(kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany);
end;
end;
function p.Czy_jest_taki_element_w_tabeli_wynikow(self,element, nazwa_przestrzeni, nazwa_ksiazki)
local parametry_modul=require("Module:Parametry");
local tabela_problemow=self.tabela_listy_danych_analizy_ksiazki.problemy[element];
return (parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow,nazwa_przestrzeni)
and parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow[nazwa_przestrzeni],nazwa_ksiazki));
end;
function p.SprawdzCzyJestDostepnySpisTresci(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if(nazwa_przestrzeni)then
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu;
if(tablica_przestrzeni)then
local tabela_ksiazek=tablica_przestrzeni[nazwa_przestrzeni];
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki~=nazwa_ksiazki)or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=nazwa_artykulu))then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:DodawanieElementowDoTablicy("brak_spisy_tresci_do_doloczanych_stron",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron)then
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron=0;
end;
end;
end;
end;
end;
end;
function p.PusteParametryLinkow(self,nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and mw.ustring.match(nazwa_ksiazki,"^%s*$") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and mw.ustring.match(nazwa_artykulu,"^%s*$") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and mw.ustring.match(uchwyt_obiektu,"^%s*$") or nil;
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1]=0;
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2]=0;
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3])then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3]=0;
end;
end;
end;
function p.ZbieranieInformacjiArtykolowKsiazek(self,tabela_parametrow_szablonu)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=nazwa_artykulu or (pelna_nazwa_ksiazki and (((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki))and ksiazkowe_modul["NazwaArtykułuKsiążki"]() or "") or ksiazkowe_modul["NazwaArtykułuKsiążki"]());
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.ZbieranieInformacjiPudelek(self,tabela_parametrow_szablonu)
if((not tabela_parametrow_szablonu["nazwa przestrzeni nazw"])and(not tabela_parametrow_szablonu["nazwa jednostki"]))then return;end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_jednostki=(tabela_parametrow_szablonu["nazwa jednostki"]
and mw.ustring.gsub(tabela_parametrow_szablonu["nazwa jednostki"],"^([^#]*)#(.*)$","%1")
or nil
) or nazwy_modul["NAZWASTRONY"]();
local nazwa_przestrzeni=nazwy_modul.Np{nazwa=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwy_modul["NAZWAPRZESTRZENI"]()};
local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
local nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](pelna_nazwa_ksiazki);
local nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelna_nazwa_ksiazki);
local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.LinkowanieOgolnie(self,tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,nazwa_obiektu, linkobiekt)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
local parametry_modul=require("Module:Parametry");
nazwa_artykulu=(nazwa_artykulu)and parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",} or nil;
pelna_nazwa_ksiazki=(pelna_nazwa_ksiazki)and parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",} or nil;
uchwyt_obiektu=(uchwyt_obiektu)and parametry_modul["Odstępy"](uchwyt_obiektu) or nil;
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
nazwa_artykulu=require("Module:Parametry")["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](pelna_nazwa_ksiazki);
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
nazwa_ksiazki=nazwy_modul["NAZWASTRONY"](pelna_nazwa_ksiazki);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
end;
if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
elseif(nazwa_ksiazki=="")then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
p:LinkowanieNastepne(nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt);
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt)
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu])then
p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu]=0;
end;
end;
function p.LinkowanieDalszePrace(self,tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt,Funkcja_sprawdzania_parametrow_linkow)
local linkobiekttab=linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki)))then
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu);
end;
tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.LinkowanieNastepne(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not mw.ustring.match(nazwa_przestrzeni,"[|<>{}%[%]]")))or(nazwa_przestrzeni=="")))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not mw.ustring.match(nazwa_artykulu,"[|<>{}%[%]]")))or(nazwa_artykulu=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not mw.ustring.match(nazwa_ksiazki,"[|<>{}%[%]]"))))then
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, false,tabela_listy_danych_analizy_ksiazki2);
if(tabela_listy_danych_analizy_ksiazki0)then
if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]=0;
end;
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
end;
else
p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron==nil)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron=0;
else
self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_stron_doloczanych_do_stron=0;
end;
end;
end;
end;
function p.SpreparowanyWikikodStrony(self,nazwa_modolu,dokumentacja)
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local nazwy_modul=require("Module:Nazwy");
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu);
if(nazwy_np_modul.Module==nazwa_przestrzeni)then
local techniczne_modul=require("Module:Techniczne");
nazwa_modolu=techniczne_modul["PełnaNazwaOpisuModułu"](nazwa_modolu);
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template~=nazwa_przestrzeni)then
return p.LadujZawartoscStrony(self,nazwa_modolu,true,nil,dokumentacja);
elseif(nazwy_np_modul.Template==nazwa_przestrzeni)then
if(mw.ustring.match(nazwa_modolu,"^[^:]+:(.*/opis)%s*$"))then
local szablony_magiczne={};
return p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,dokumentacja);
else
local szablony_magiczne={};
local tekst_artykulu_caly=p.LadujZawartoscStrony(self,nazwa_modolu,true,szablony_magiczne,false,nil,true);
if(not tekst_artykulu_caly)then return;end;
local iterator=mw.ustring.gmatch(tekst_artykulu_caly,"{{[^{}]-}}");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for wywolanie in iterator do
local function AnalizujDokumentacja(tablica_parametrow_dokumentacja,wywolanie)
local nazwa_strony2;
local dokumentacja_szablonu=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*}}");
if(dokumentacja_szablonu)then
local nazwa_strony2=nazwa_modolu.."/opis";
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja);
local techniczne_modul=require("Module:Techniczne");
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,"{{%s*[Dd]okumentacja%s*}}",tekst_artykulu2);
else
local dopasowanie=mw.ustring.match(wywolanie,"{{%s*[Dd]okumentacja%s*|");
if(dopasowanie)then
local nazwa_strony2=tablica_parametrow_dokumentacja[1];
local zawartosc=tablica_parametrow_dokumentacja["zawartość"];
if((nazwa_strony2)and(not zawartosc))then
local tekst_artykulu2=p.LadujZawartoscStrony(self,nazwa_strony2,false,szablony_magiczne,dokumentacja,nazwa_modolu);
tekst_artykulu2=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](tekst_artykulu2);
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,tekst_artykulu2);
elseif(zawartosc)then
wywolanie=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wywolanie);
zawartosc=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](zawartosc);
tekst_artykulu_caly=mw.ustring.gsub(tekst_artykulu_caly,wywolanie,zawartosc);
end;
end;
end;
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(wywolanie,AnalizujDokumentacja)
end;
return tekst_artykulu_caly;
end;
end;
end;
function p.LadujZawartoscStrony(self,nazwa_strony,czy_noinclude,szablony_magiczne,dokumentacja,nazwa_modolu_szablonu_opisu,szablon_nie_opis)
local czy_nazwa_strony_z_tylko_odstepami_lub_pusta=mw.ustring.match(nazwa_strony,"^%s*$");
local uchwyt_strony;
local tekst_artykulu;
local nazwa_strony_bez_kodow_html;
if(not czy_nazwa_strony_z_tylko_odstepami_lub_pusta)then
nazwa_strony_bez_kodow_html=require("Module:Html").TransformacjaKlasyZnakowej(nazwa_strony);
uchwyt_strony = mw.title.makeTitle('', nazwa_strony_bez_kodow_html);
tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
local czy_istnieje = tekst_artykulu or (uchwyt_strony and uchwyt_strony.exists or nil);
if(not czy_istnieje)then
if(self and self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.strona_nie_istnieje=0
end;
end;
return nil;
else
local czy_nie_istnieje_zawartosc=((uchwyt_strony)and(not tekst_artykulu));
if(czy_nie_istnieje_zawartosc)then
return nil;
end;
end;
else
return nil;
end;
if(czy_noinclude)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","%1");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->.-<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","");
else
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->.-<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->(.-)<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","%1");
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>(.-)</[Tt][Ee][Mm][Pp][Ll][Aa][Tt][Ee][Dd][Aa][Tt][Aa]>","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<!--(.-)-->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->.-<%s-/%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Pp][Rr][Ee]%s->.-<%s-/%s-[Pp][Rr][Ee]%s->","");
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<%s-[mM][aA][tT][hH]%s->.-<%s-/%s-[mM][aA][tT][hH]%s->)","");
if(szablony_magiczne)then
local nazwy_modul=require("Module:Nazwy");
szablony_magiczne["{{ROOTPAGENAME}}"]=nazwy_modul["NAZWAKORZENIASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{NAMESPACE}}"]=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{PAGENAME}}"]=nazwy_modul["NAZWASTRONY"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
szablony_magiczne["{{FULLPAGENAME}}"]=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](nazwa_modolu_szablonu_opisu or nazwa_strony_bez_kodow_html);
end;
if(szablony_magiczne)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"{{[^{}]+}}",szablony_magiczne);
local ramka_modul=require("Module:Ramka");
tekst_artykulu=ramka_modul.InstrukcjeWarunkowe(tekst_artykulu);
end;
if(not szablon_nie_opis)then
if(not dokumentacja)then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
tekst_artykulu=stronicowyparser_potrzebne_modul.KodujStroneSzablonowa(tekst_artykulu);
end;
end;
return tekst_artykulu;
end;
function p.ZbieranieInformacji(self,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu, czy_artukul_korzystany,tabela_listy_danych_analizy_ksiazki2,linkobiekt)
if(not czy_artukul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki and self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
return 0;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_ksiazki,"^[^/]+/(.-)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_ksiazki,"^%s*[Bb]rudnopis/[^/]+/(.-)$")))
)then
p:DodawanieElementowDoTablicy("strony_poza_zakresem_obslugiwanym",nil,nazwa_przestrzeni,nazwa_ksiazki)
end;
local parametry_modul=require("Module:Parametry");
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_ksiazka=tabela_przestrzeni[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_artykolow;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local uchwyty_i_numeracje=tabela_artykul.uchwyty_i_numeracje;
if(uchwyty_i_numeracje)then
return 0;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
if(czy_artukul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=nazwa_artykulu;
end;
end;
local nazwa_modolu=(nazwa_przestrzeni=="")and ((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu)
or nazwa_przestrzeni..":"..((nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu);
local tekst_rozwiniety_calego_artykulu=p:SpreparowanyWikikodStrony(nazwa_modolu);
if(not czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
-- przydzielanie tablicy
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_ksiazki])then tablica_przestrzeni[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni[nazwa_ksiazki];
if(not tablica_ksiazki.lista_artykolow)then tablica_ksiazki.lista_artykolow={};end;
if(not tablica_ksiazki.lista_artykolow[nazwa_artykulu])then tablica_ksiazki.lista_artykolow[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_artykolow[nazwa_artykulu];
local tablica_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
if(czy_artukul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tabela_listy_danych_analizy_ksiazki2)then tabela_listy_danych_analizy_ksiazki2={};end;
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(obiekty_modul.tablica_obiektow)do
local wartosc=element_w_tablicy_obiekt[1];
tabela_listy_danych_analizy_ksiazki2[wartosc]={};
if(czy_artukul_korzystany)then linkobiekt[wartosc]={};end;
end;
local strona;
if(czy_artukul_korzystany)then
strona="";
else
strona=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki..((nazwa_artykulu~="")and "/"..nazwa_artykulu or "")
end;
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if((self.tabela_listy_danych_analizy_ksiazki.zastepczy) or (not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_ksiazki))))then
if((nazwa_przestrzeni)and(nazwa_ksiazki))then
local czy_ksiazka_istnieje_w_tablicy=false;
local tabela_ksiazek=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_ksiazek)then
for nazwa_ksiazki_i,tablica_spisu in pairs(tabela_ksiazek) do
if(nazwa_ksiazki_i==nazwa_ksiazki)then
if(tablica_spisu.spis)then
czy_ksiazka_istnieje_w_tablicy=true;
break;
end;
end;
end;
end;
if(not czy_ksiazka_istnieje_w_tablicy)then
local tabela_wstepnych_informacji;
local normalna_nazwa_przestrzeni;local normalna_nazwa_ksiazki;
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
else
normalna_nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni;
normalna_nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki;
tabela_wstepnych_informacji=p:ZbierajJakieSaArtykulyIInformacjeOLicencji(self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki,czy_artukul_korzystany);
end;
if(tabela_wstepnych_informacji==0)then
if(czy_artukul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.problemy.korzystane_strona_glowna_nie_istnieje=0;
else
p:DodawanieElementowDoTablicy("doloczone_strony_glowne_nie_istnieja",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
else
if(tabela_wstepnych_informacji)then
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
tablica_ksiazki.spis=tabela_wstepnych_informacji[1];
tablica_ksiazki.licencja=tabela_wstepnych_informacji[2];
else
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni]={};
end;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki])then
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki]={};
end;
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].spis=tabela_wstepnych_informacji[1];
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[normalna_nazwa_przestrzeni][normalna_nazwa_ksiazki].licencja=tabela_wstepnych_informacji[2];
end;
if(not tabela_wstepnych_informacji[1])then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych)then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=""))then
self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych=0;
end;
end;
end;
else
tablica_ksiazki.spis=tabela_wstepnych_informacji;
end;
else
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
end;
else
p:DodawanieElementowDoTablicy("brak_spisow_tresci_do_doloczonych_ksiazek_na_ich_stronach_glownych",nil,nazwa_przestrzeni,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
end;
function StronaZbiorcza()
if(czy_artukul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
return stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,nil,TakFun,NieFun,nil);
end;
return nil;
end;
InneInformacjePrzebneDoAnalizowanejKsiazki();
local strona_zbiorcza=StronaZbiorcza();
if(strona_zbiorcza)then
if((tablica_ksiazki.spis_tresci)and(tablica_ksiazki.spis_tresci.tekst)and(tablica_ksiazki.spis_tresci.wywolanie)
and(tablica_ksiazki.spis_tresci.wywolanie[1])and(tablica_ksiazki.spis_tresci.wywolanie[2]))then
local pelny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1])
if(pelny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[1],tablica_ksiazki.spis_tresci.tekst);
else
local wzgledny=mw.ustring.match(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2])
if(wzgledny)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis_tresci.wywolanie[2],tablica_ksiazki.spis_tresci.tekst);
end;
end;
end;
end;
if(czy_artukul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local toc;
if((not czy_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone))then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(czy_artukul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(obiekty_modul.strona_start[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
return;
elseif(obiekty_modul.strona_start_inne[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif(obiekty_modul.strona_start_analiza_spis_tresci[tabela_parametrow_szablonu[0]])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(obiekty_modul.strona_zbiorcza[tabela_parametrow_szablonu[0]]))then
analiza_stron_korzystanych_zbiorczych=true;
return;
end;
end;
end;
local plik=mw.ustring.match(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"^{{:([^:|{}]-)}}$");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=mw.ustring.match(tabela_parametrow_szablonu[0],"^[wW]ypowiedzenie$");
local linkobiekt2;
local link;
if(czy_wypowiedzenie)then
linkobiekt2=false;
link=false;
else
linkobiekt2=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]inkObiekt$");
if(linkobiekt2)then
link=true;
else
link=mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]ink");
end;
end;
local czy_obsluzone=true;
local funkcja_aliasow=function(nazwa_szablonu,elementy_w_tablicy_obiekty)
local wzor_nazwy_szablonu1=mw.ustring.gsub(elementy_w_tablicy_obiekty[1],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[2])then
if(type(elementy_w_tablicy_obiekty[2])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[2])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[2],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
end;
end;
end;
return czy_aliasy;
end;
for _,elementy_w_tablicy_obiekty in pairs(obiekty_modul.tablica_obiektow_bez_obiektu_nienazwanego)do
local wartosc_elementu=elementy_w_tablicy_obiekty[1];
if(not link)then
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
czy_aliasy=czy_wypowiedzenie or funkcja_aliasow(tabela_parametrow_szablonu[0],elementy_w_tablicy_obiekty);
if(czy_aliasy)then
if((not czy_wypowiedzenie)
or((czy_wypowiedzenie)and(
(tabela_parametrow_szablonu["rodzaj"]==wartosc_elementu)
))
)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artukul_korzystany,elementy_w_tablicy_obiekty[5]);
czy_obsluzone=false;
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu= tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
if(uchwyt_obiektu and not mw.ustring.match(uchwyt_obiektu,"^%s*$"))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
break;
end;
end;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
elseif(czy_artukul_korzystany)then
if(link)then
local funkcja_aliasow_2=function(zmienna)
if(wartosc_elementu~=zmienna)then return false;end;
local wzor_nazwy_szablonu1="[Ll]ink"..wartosc_elementu;
local czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
local szablon;
if(not czy_aliasy)then
if(elementy_w_tablicy_obiekty[3])then
if(type(elementy_w_tablicy_obiekty[3])=="table")then
for _,alias in pairs(elementy_w_tablicy_obiekty[3])do
local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then
szablon=alias
break;
end;
end;
else
local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[3],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
czy_aliasy=mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
if(czy_aliasy)then szablon=elementy_w_tablicy_obiekty[3];end;
end;
end;
else
szablon="Link"..wartosc_elementu;
end;
return czy_aliasy,szablon;
end;
if(not obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
local typ=mw.getContentLanguage():lcfirst(wartosc_elementu);
local alias,szablon=funkcja_aliasow_2(wartosc_elementu);
if((alias)or((linkobiekt2)and(tabela_parametrow_szablonu["typ"]==typ)))then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,wartosc_elementu, linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=((alias)and szablon or "LinkObiekt")..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
czy_obsluzone=false;
break;
end;
else
local alias,szablon=funkcja_aliasow_2("Śródtytuł");
if(alias)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Śródtytuł", linkobiekt);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
czy_obsluzone=false;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=szablon..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
break;
end;
end;
end;
end;
end;
if(czy_obsluzone)then
if(czy_wypowiedzenie)then
p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artukul_korzystany,obiekty_modul.obiekty[5]);
if(czy_artukul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[obiekty_modul.obiekty[5]];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt"..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
elseif(czy_artukul_korzystany)then
if(linkobiekt2)then
p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Obiekt", linkobiekt);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local uchwyt_obiektu=tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[1]] or tabela_parametrow_szablonu["uchwyt"];
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
else
for wartosc_elementu,_ in pairs(obiekty_modul.bez_uchwytow_spis_tresci)do
local wzor_artykolow_ksiazek=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_artykolow_ksiazek.."$"))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
p:ZbieranieInformacjiArtykolowKsiazek(tabela_parametrow_szablonu);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="ArtykułKsiążki:"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
end;
for wartosc_elementu,_ in pairs(obiekty_modul.szablony_pudelka)do
local wzor_szablonu_pudelka=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
if(mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_szablonu_pudelka.."$"))then
p:ZbieranieInformacjiPudelek(tabela_parametrow_szablonu);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=tabela_parametrow_szablonu[0]..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
stronicowyparser_potrzebne_modul.AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,AnalizaParametrowSzablonuISzablonu);
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].uchwyty_i_numeracje=tabela_listy_danych_analizy_ksiazki2;
if(czy_artukul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu);
mw.log('To jest strona zbiorcza.')
end;
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)then
toc=p:SpisTresciWstep(tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2["Śródtytuł"],nazwa_przestrzeni,nazwa_ksiazki,czy_artukul_korzystany);
mw.log("Liczę spis treści artykułów korzystanych.");
end;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykolu=tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_ksiazki];
end;
tablica_ksiazki.lista_artykolow[nazwa_artykulu].TOC=toc;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzLinki(self,tabela_listy_danych_analizy_ksiazki2,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_ksiazki,nazwa_artykulu)
if((not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2])or(nazwa_artykulu==""))then
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
local czy_uchwyty_nie_sa_ponumerowane=true;
for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then
czy_uchwyty_nie_sa_ponumerowane=false;
break;
end;
end;
end;
if(czy_uchwyty_nie_sa_ponumerowane)then
local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
if(czy_tylko_ze_znakami_odstepu_lub_puste)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]) then
self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]=0;
end;
return;
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]=0;
return;
end;
end;
end;
end;
end;
function p.PrzetworzMozliweWszystkieRodzajeObiektow(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
for _,element_w_podtablicy_kategorii_bledow in pairs(obiekty_modul.tablica_obiektow)do
local element_obiekty=element_w_podtablicy_kategorii_bledow[1];
tabela_listy_danych_analizy_ksiazki=p:Sprawdzanie_i_numerowanie(dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja);
end;
end;
function p.PrzetworzZebraneInformacje(self,tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2)
local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
for nazwa_przestrzeni,tablica_nazw_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)do
for nazwa_ksiazki,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do
local prosto=true;
if(self.tabela_listy_danych_analizy_ksiazki.zastepczy)then
if((nazwa_przestrzeni==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni)
and(nazwa_ksiazki==self.tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki))then
prosto=false;
end;
end;
if(prosto)then
local nazwa_przestrzeni_nazw_strony=require("Module:Nazwy")["NAZWAPRZESTRZENI"](nazwa_ksiazki);
for nazwa_artykulu, dane_artykulu in pairs(tablica_nazw_artykulow.lista_artykolow) do
local biezacy_artykul=dane_artykulu.artykul_biezacy;
local numer_obiektu_w_ksiazce=1;local czy_da_sie_numerowac_obiekty_ze_spisem_tresci =false;
if(nazwa_ksiazki)then
if(nazwa_artykulu=="")then
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
else
local tab_ksiazki=tablica_nazw_artykulow.spis;
if(tab_ksiazki)then
for _,tab_rozdzialu in pairs(tab_ksiazki)do
if(tab_rozdzialu[2])then
for _,nazwa_artykulu1 in ipairs(tab_rozdzialu[2])do
if(nazwa_artykulu1[1]~=nazwa_artykulu)then
numer_obiektu_w_ksiazce=numer_obiektu_w_ksiazce+1;
else
czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;break;
end;
end;
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then break;end;
end;
end;
end;
local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu)
p:DodawanieElementowDoTablicy("bledy_uchwytow_doloczonych_stron",nazwa_obiektu,nazwa_przestrzeni,nazwa_ksiazki);
end;
if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
elseif(not czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
else
p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,obiekty_modul,Problemy_z_doloczonymi_uchywtami);
end;
end;
end;
end;
end;
for _,obiekt in pairs(obiekty_modul.tablica_obiektow)do
local obiekt2=obiekt[1];
p:SprawdzLinki(tabela_listy_danych_analizy_ksiazki2,linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_przestrzeni2,nazwa_ksiazki2,nazwa_artykulu2);
end;
return tabela_listy_danych_analizy_ksiazki;
end;
function p.Sprawdzanie_i_numerowanie(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,obiekty_modul,__Funkcja)
local parametry_modul=require("Module:Parametry");
local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu];
if(obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[nazwa_obiektu])then
return tabela_listy_danych_analizy_ksiazki;
end;
for licznik,element_obiektu in pairs(tabela_obiektu)do
local czy_numerowac=true;
for licznik2=1, licznik-1,1 do
if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then
if(biezacy_artykul)then
if(not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu])then
self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu]=0;
end;
else
__Funkcja(nazwa_obiektu);
end;
tabela_obiektu[licznik2][1]=nil;
czy_numerowac=false;
end;
end;
if(czy_numerowac)then
if(numer_artykulu_w_ksiazce>0)then
element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
elseif(numer_artykulu_w_ksiazce==0)then
element_obiektu[2]=licznik
elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0
end;
end;
end;
return tabela_listy_danych_analizy_ksiazki;
end;
return p;
dnlgfwxdg6cfvid9s0ocbf0huosr5vi
Szablon:PP2017/LO/Biologia/PR/T/XI/2/2/d
10
58774
438591
2022-08-23T16:58:27Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::2) ''Odporność. Uczeń:''
:::d) ''przedstawia rolę mediatorów układu odpornościowego w reakcji odpornościowej (białka ostrej fazy, cytokiny),''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/2/d]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
7s9io219gbk4sw91w9v1a7u9n9tdcnu
Szablon:PP2017/LO/Biologia/PR/T/XI/2/2/e
10
58775
438592
2022-08-23T17:02:02Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::2) ''Odporność. Uczeń:''
:::e) ''wyjaśnia, na czym polega zgodność tkankowa i przedstawia jej znaczenie w transplantologii,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/2/e]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
4ngm55ak630zw8209i9ojygln9urmqi
Szablon:PP2017/LO/Biologia/PR/T/XI/2/2/f
10
58776
438593
2022-08-23T17:03:41Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::2) ''Odporność. Uczeń:''
:::f) ''wyjaśnia istotę konfliktu serologicznego i przedstawia znaczenie podawania przeciwciał anty-Rh,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/2/f]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
57vznfjhoiogqyuy38pqwdmte2c4ze2
Szablon:PP2017/LO/Biologia/PR/T/XI/2/2/g
10
58777
438594
2022-08-23T17:04:46Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::2) ''Odporność. Uczeń:''
:::g) ''analizuje zaburzenia funkcjonowania układu odpornościowego (nadmierna i osłabiona odpowiedź immunologiczna) oraz podaje sytuacje wymagające immunosupresji (przeszczepy, alergie, choroby autoimmunologiczne).''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/2/g]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
1k8qhabfdiawebmbbf80pdfd9giw7xx
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/a
10
58778
438608
2022-08-24T11:27:01Z
Superjurek
16178
Utworzono nową stronę "{{f|w=80%| *Podstawa programowa z 2017 roku.<br> *Liceum Ogólnokształcące / Technikum *Biologia *Poziom rozszerzony }} <br> '''XI. Funkcjonowanie zwierząt.''' :2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.'' ::3) ''Wymiana gazowa i krążenie. Uczeń:'' :::a) ''przedstawia warunki umożliwiające i ułatwiające dyfuzję gazów przez powierzchnie wymiany gazowej,'' {{{blokuj…"
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::a) ''przedstawia warunki umożliwiające i ułatwiające dyfuzję gazów przez powierzchnie wymiany gazowej,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/a]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
0h8kalcin9xa6q26d6ket6bjp5iqmi9
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/b
10
58779
438609
2022-08-24T11:29:10Z
Superjurek
16178
Utworzono nową stronę "{{f|w=80%| *Podstawa programowa z 2017 roku.<br> *Liceum Ogólnokształcące / Technikum *Biologia *Poziom rozszerzony }} <br> '''XI. Funkcjonowanie zwierząt.''' :2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.'' ::3) ''Wymiana gazowa i krążenie. Uczeń:'' :::b) ''wykazuje związek lokalizacji (wewnętrzna i zewnętrzna) i budowy powierzchni wymiany gazowej ze środowiskiem ży…"
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::b) ''wykazuje związek lokalizacji (wewnętrzna i zewnętrzna) i budowy powierzchni wymiany gazowej ze środowiskiem życia,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/b]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
mpnu4lvsu9ed8binxdi3dk8ttvrgsfm
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/c
10
58780
438610
2022-08-24T11:31:21Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::c) ''podaje przykłady narządów wymiany gazowej, wskazując grupy zwierząt, u których występują,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/c]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
n4fbm72i4396uqvxjmqse7gvvgycq2u
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/d
10
58781
438611
2022-08-24T11:37:48Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::d) ''porównuje, określając tendencje ewolucyjne, budowę płuc gromad kręgowców,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/d]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
pbwkcephhftr3ulbuff1nlg500vjgzf
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/e
10
58782
438612
2022-08-24T11:39:28Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::e) ''wyjaśnia mechanizm wymiany gazowej w skrzelach, uwzględniając mechanizm przeciwprądowy,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/e]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
bf70otyurfkzg13szuyc1onw65r19tj
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/f
10
58783
438613
2022-08-24T11:40:39Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::f) ''wyjaśnia mechanizm wentylacji płuc u płazów, gadów, ptaków i ssaków,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/f]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
9cbu57y4bb314d311uinygzg4fiqozd
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/g
10
58784
438614
2022-08-24T11:42:37Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::g) ''wykazuje związek między budową i funkcją elementów układu oddechowego człowieka,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/g]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
lcac14ayzfqzfjs34c6q3xywkb62tp9
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/h
10
58785
438615
2022-08-24T11:46:09Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::h) ''opisuje wymianę gazową w tkankach i płucach, uwzględniając powinowactwo hemoglobiny do tlenu w różnych warunkach pH i temperatury krwi oraz ciśnienia parcjalnego tlenu w środowisku zewnętrznym; planuje i przeprowadza doświadczenie wykazujące różnice w zawartości dwutlenku węgla w powietrzu wdychanym i wydychanym,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/h]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
g3qdum3hv9mvkod7t7lpb9uaf7zhj8p
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/i
10
58786
438616
2022-08-24T11:47:39Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::i) ''analizuje wpływ czynników zewnętrznych na funkcjonowanie układu oddechowego (tlenek węgla, pyłowe zanieczyszczenie powietrza, dym tytoniowy, smog),''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/i]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
e2yeinhhnl50zfn02hj2t9slbxfx6jb
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/j
10
58787
438617
2022-08-24T11:52:58Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::j) ''przedstawia znaczenie badań diagnostycznych w profilaktyce chorób układu oddechowego (RTG klatki piersiowej, spirometria, bronchoskopia),''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/j]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
3jlk8d6bs2dloifj5bnlrqpu2nmgu4k
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/k
10
58788
438618
2022-08-24T11:54:20Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::k) ''przedstawia rolę krwi w transporcie gazów oddechowych,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/k]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
f9b1661w620bgog7kh56lvndtlsf19u
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/l
10
58789
438619
2022-08-24T11:55:32Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::l) ''wyjaśnia na podstawie schematu proces krzepnięcia krwi,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/l]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
amqs0twf5dp46rd7ugxwphy4p1gj4jv
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/m
10
58790
438620
2022-08-24T11:56:39Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::m) ''przedstawia rodzaje układów krążenia u zwierząt (otwarte, zamknięte) oraz wykazuje związek między budową układu krążenia i jego funkcją u poznanych grup zwierząt,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/m]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
cz0lmr7gt6p7sv5cdpx6d4m5m36uiwk
Szablon:PP2017/LO/Biologia/PR/T/XI/2/3/n
10
58791
438621
2022-08-24T11:57:37Z
Superjurek
16178
+
wikitext
text/x-wiki
{{f|w=80%|
*Podstawa programowa z 2017 roku.<br>
*Liceum Ogólnokształcące / Technikum
*Biologia
*Poziom rozszerzony
}}
<br>
'''XI. Funkcjonowanie zwierząt.'''
:2. ''Porównanie poszczególnych czynności życiowych zwierząt, z uwzględnieniem struktur odpowiedzialnych za ich przeprowadzanie.''
::3) ''Wymiana gazowa i krążenie. Uczeń:''
:::n) ''wykazuje związek między budową i funkcją naczyń krwionośnych,''
{{{blokuj kategorię|<includeonly>
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3/n]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2/3]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI/2]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania/XI]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony/Treści nauczania]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia/Zakres rozszerzony]]
[[Kategoria:Zbiór zadań maturalnych/podstawa programowa 2017/Biologia]]
</includeonly>}}}
<noinclude>{{Dokumentacja}}
[[Kategoria:Zbiór zadań maturalnych/Szablony]]</noinclude>
jl5txvdlpjgp066vb1fb1e9aik5e1ny