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>&lt;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="(&#123;&#123;[&#;!%(%)]+&#125;&#125;)"; 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="(&#123;&#123;[&#;!%(%)]+&#125;&#125;)"; 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="(&#123;&#123;[&#;!%(%)]+&#125;&#125;)"; 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="(&#123;&#123;[&#;!%(%)]+&#125;&#125;)"; 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="(&#123;&#123;[&#;!%(%)]+&#125;&#125;)"; 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="(&#123;&#123;[&#;!%(%)]+&#125;&#125;)"; 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