Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.2
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
Wydarzenie
Dyskusja wydarzenia
Wikipedysta:Ashaio/Brudnopis
2
21036
542726
490514
2026-05-12T18:30:43Z
Ashaio
4702
/* Wlazł kotek na płotek */
542726
wikitext
text/x-wiki
{| cellpadding="10px"
| <span style="color:#0645AD; border: #0645AD solid; border-width: 0 0 3px 0; border-radius: 2px
| border: transparent solid; border-width: 0 0 3px 0; border-radius: 2px;> Opis </span>
| <span style="color:#0645AD> [[{{PAGENAME}}/Muzyka|Muzyka]] </span>
| <span style="color:#0645AD> [[{{PAGENAME}}/Tekst|Tekst]] </span>
|}
___TOC___
{| cellspacing="10" width="100%"
|{{Pudełko komórkowe 1|tytuł= Pieśni patriotyczne
|grafika=
|tekst=* [[Śpiewnik/Leci liście z drzewa|Leci liście z drzewa]]
* [[Śpiewnik/Mazurek Dąbrowskiego|Mazurek Dąbrowskiego]]
* [[Śpiewnik/Rota|Rota]]
}}
|{{Pudełko komórkowe 3|tytuł= Piosenki wojskowe
|grafika=
|tekst=* [[Śpiewnik/Duma ukrainna|Duma ukrainna]]
* [[Śpiewnik/Idzie żołnierz borem, lasem|Idzie żołnierz borem, lasem]]
* [[Śpiewnik/O mój rozmarynie|O mój rozmarynie]]<br>}}
|-
|{{Pudełko komórkowe 2
|tytuł= Pieśni nabożne
|grafika=
|tekst=* [[Śpiewnik/Kto się w opiekę|Kto się w opiekę]]
* [[Śpiewnik/Pieśń poranna|Pieśń poranna]]
* [[Śpiewnik/Pieśń wieczorna|Pieśń wieczorna]]
}}
|{{Pudełko komórkowe 4|tytuł= Kolędy
|grafika=
|tekst=* [[Śpiewnik/Anioł pasterzom mówił|Anioł pasterzom mówił]]
* [[Śpiewnik/Bóg się rodzi|Bóg się rodzi]]
* [[Śpiewnik/Cicha noc|Cicha noc]]
}}
|-
|{{Pudełko komórkowe 1|tytuł= Piosenki i melodie ludowe
|grafika=
|tekst=* [[Śpiewnik/Piękna nasza Polska cała|Piękna nasza Polska cała]]
* [[Śpiewnik/Płynie Wisła, płynie|Płynie Wisła, płynie]]
* [[Śpiewnik/W murowanej piwnicy|W murowanej piwnicy]]
}}
|{{Pudełko komórkowe 3|tytuł= Piosenki dla dzieci
|grafika=
|tekst=* [[Śpiewnik/Jesienią|Jesienią]]
* [[Śpiewnik/W polu|W polu]]
* [[Śpiewnik/Zła zima|Zła zima]]<br>}}
|-
|{{Pudełko komórkowe 2
|tytuł= Piosenki o miłości
|grafika=
|tekst=* [[Śpiewnik/Laura i Filon|Laura i Filon]]
* [[Śpiewnik/Ty pójdziesz górą|Ty pójdziesz górą]]
* [[Śpiewnik/Prząśniczka|Prząśniczka]]
}}
|
|}
== Wlazł kotek na płotek ==
https://polona.pl/item/wlazl-kotek-spiew-na-jeden-glos-z-towarzyszeniem-fortepianu,ODY3NTY5MDk/2/#info:metadata
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "Wlazł kotek na płotek"
poet = "Słowa: Władysław Bełza"
%meter = "Opracowanie:"
composer = "Muzyka: Bolesław Dembiński"
%arranger = "Aranżacja:"
tagline = ""
}
global = {
\key g \major
\time 9/8
\tempo 4=110
}
\score{
<<
\new Voice = "mel" {
\set Staff.midiInstrument = #"fiddle"
\autoBeamOff
\relative c' {
\clef treble
\global
\autoBeamOff
% tu melodia
s4. s4. s4. |
s4. s4. s4. |
s4. s4. s4. |
s4. s4. s4. |
% ---------
s4. s4. s4. |
s4. s4. s4. |
s4. s4. s4. |
s4. s4. s4. |
% ---------
s4. s4. s4. |
s4. s4. s4. |
% | | |
d8 ^\p ^\markup { \italic { Moderato } }
g a b c8.gis16 a8. d16 c8 |
b8 e d \tuplet 4/3 {a c b a} a16[ b] g8 r8 |
% ---------
g8 b a g cis8. b16 a8 e'8. d16 |
e8 g \fermata fis e fis16[( e]) ^\markup { \italic { riten. } } b16 r32 cis32 e16 d r8 r8 |
\stemDown c8 ^\markup { \italic { a tempo } } b a \stemUp \grace {b16} a8 gis a16 r16 b8 d8. c16 |
b8 f' e b d c16 b b[( c]) a4 |
% ---------
a8 a b c d e d g8. \fermata e16 |
d16^\markup{ \italic{ scherzando } } r b r b r c r a r a^\markup{ \italic{ rit. } } r g16. b32 d4 \fermata |
d8 b b c a a g16 b g8 r8 |
} }
%\addlyrics { \small {
% tu liryka
%} }
\new PianoStaff <<
\new Staff = "RH"
%\relative c' {
{
\clef treble
\global
% tu prawa ręka
\autoBeamOff
_\p ^\markup{ \italic { Poco vivace } }
<g d'>4( <g d'>8 <g d'>4 <g d'>8 <g d'>4 <g d'>8) |
d'8[( g'16 a']) b'8 \afterGrace a'8[ {b'16} ^\< a'16 (gis' a' d')] \! d''4( b'8) |
_\p <d' a'>4( <d' a'>8 <d' a'>4 <d' a'>8 <d' a'>4 <d' a'>8 ) | \break
<< { \stemUp a'8[( d''16 e'']) fis''8 \afterGrace e''8[ {fis''16} e''16 dis'' e'' a''] fis''16.[ e''32] dis''8 r8 }
{ \stemDown fis'4 fis'8 g'4 g'8 fis'4 r8 } >> |
<< { \stemDown c'''4 \grace e'''16 c'''16. c'''32 a''16 g''16 a''8 \grace gis''16 a''8 \grace gis''16 a''8 c'''16. d'''32 d'''4 }
{ \stemDown c''4 \grace d''16 c''16.[ b'32 c''16 b'16] a'8[ a'8 a'8] b'16.[ e''32] d''4 } >> |
% ---------
\stemDown g''8 \grace {a''16} g''16.[ fis''32 g''16( fis''16]) e''8[ \grace {dis''16} e''8 \grace {gis''16} a''8]
fis''16.[ e''32] <fis' dis''>4 | \break
\stemUp c''8 \grace {d''16} c''16.[ b'32 c''16( b'16]) a'8[ \grace {gis'16} a'8 \grace {gis'16} a'8] b'16.[ e''32] <d' d''>4 |
\stemUp <b g'>16.[ <d' a'>32] <g' b'>8[ <g' b'>8] <a' c''>8[ <fis' a'>8 <fis' a'>8] g'16.[ b'32] <d' d''>8 |
% !
\stemDown <d'' b'' d'''>8-^[ <b' g'' b''>8-^ <b' g'' b''>8-^] <c'' a'' c'''>8-^[ <a' d'' a''>8-^ <a' d'' a''>8-^ ]
<g' g''>8.-^[ <b' b''>16-^ <g' g''>8-^ r8 \fermata | \break
^\markup { \italic { p. lento } }
<b' d''>8[( <g' b'> <g' b'>]) <a' c''>8[( <d' a'> <d' a'>]) <b g'>16[ <d' b'>] \arpeggio <b g'>4 \fermata |
% | | |
r8 <g a>8[( d']) r8 <a c'>8[( d']) r8 <c' d'>8[( a']) |
r8 <g a>8[( g']) r8 <c' d'>8[( a']) r8 <b g'>8[( d']) |
% ---------
r8 <b e' g'>4 r8 <a cis' g'>4 r8 <a d' fis'>4 |
<e' bes' d'' e''>4 r8 \fermata r8 <cis' g' a'>4 r8 \appoggiatura cis''16 d'' \appoggiatura cis''16 d'' |
r8 <c' d'>8[( a']) r8 <c' d'>8[( fis']) r8 <b g'>8[( d']) |
r8 <c' e' b'>8[ <c' e' b'> ] r8 <c' e' gis'>8[ <c' e' gis'> r8 <c' e' a'>8[ <c' e'>] |
% ---------
r8 <a c'>8[ <a c'>] r8 <a c' fis'>8[ <c' e'>] <b d'>8_\< r8 <ais e' g'>8\! \fermata |
<b d' g'>16 r16 r8 r8 <c' fis'>16 r16 r8 r8_\markup{ \italic {rit.} } \stemUp g'16[_( b'] \stemDown <d') d''>4 \fermata |
<d'' b'' d'''>8[ <b' g'' b''> <b' g'' b''>] <c'' a'' c'''>[ <a' d'' a''> <a' d'' a''>] <g' g''>16.[ <b' b''>32] <g' g''>8 r8 |
}
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
\autoBeamOff
_\p _\markup{ \italic { Ped. a giusto } }
d8([ g,) d] d8([ g,) d] d8([ g,) d] |
<< { d'4 d'8 d'4 d'8 d'4 d'8 } { \stemDown d8([ g, d)] d8([ g, d)] d8([ g, d)] } >> |
<< { \stemUp a4 a8 a4 a8 a4 a8 } { \stemDown d8([ d, d)] d8([ d, d)] d8([ d, d)] } >> | \break
<< { \stemUp e'4 e'8 cis'4 cis'8 e'4 a8 } { \stemDown a8([ d a)] a8([ d a)] a8([ d, d)] } >> |
% ---------
fis,8[ <d a c'> <d a c'>] d,8[ <d a c'> <d a c'>] <g b>16 r <g, d c'>4 |
<< { r8 <b e' g'>8[ <bes d' g'>] r8 <a c' g'>[ <a c' g'>] <dis' fis'>16 r16 } { e4. a,4. r8 <d a>4 } >> | \break
fis,8[ <d a c'> <d a c'>] d,8[ <d a c'> <d a c'>] { \stemUp <g c'>16 r16 \afterGrace <g, d>4 {b} } |
\stemUp <d, d>8 \stemDown <d b d'>8 \stemUp <d, d>8 \stemDown \afterGrace <d c'>8 {e'} <g c'>16 r16 <g, b>4 |
% ---------
<d, d>8 <g b d'>4 <d, d>8 \afterGrace <g c'>4 {e'} <g b>4 r8 <g, d c'>8 r8 \fermata | \break
\stemDown <b d'>8[( <g b> <g b>]) <a c'>8[( <d a> <d a>]) g8 <g, d g>4\arpeggio \fermata |
% | | |
g,8( d4) g,8( d4) g,8( <d fis>4) |
g,8( d4) d,8( fis4) g,8( g4) |
% ---------
<e, e>8 r4 <e, e>8 r4 <fis, fis>8 r4 |
<g, g>4 r8 \fermata a,8[( e a]) r8 <d' fis'>8[( d]) |
<fis, fis>4 r8 <d, d>4 r8 <g, g>4 r8 |
<gis, gis>4 r8 <e, e>4 r8 <a, a>4 r8 |
% --- koniec str 1 ---
<fis, fis>4 r8 <d, d>4 r8 <g, g>8 r8 cis8 \fermata |
<d, d>16 r16 r8 r8 <d, d>16 r16 r8 r8 << { b16[( d']) } {g8} >> <g, c'>4 \fermata |
<d, d>8 <g b d'>4 <d, d>8 <fis c' e'>4 <g b>16 r16 <g, d c'>8 r8 \bar "||"
<d, fis, c>8[ <d, fis, c>8 <d, fis, c>8] <d, g, b,>8[ <d, g, b,>8 <d, g, b,>8] <d, fis, a,>8 <d, fis, a,>4 |
}
>>
>>
\midi{}
\layout{}
}
</score>
== Leć głosie po rosie ==
https://polona.pl/item/piesni-ludu-w-latach-1861-1891,MTExMTI4MDc/334/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Leć głosie po rosie"
poet = "Słowa: "
%meter = "Opracowanie:"
composer = "Muzyka: "
%arranger = "Aranżacja:"
tagline = ""
}
global = {
\key f \major
\time 2/4
\tempo 4=90
}
\score{
<<
\new Staff \with { midiInstrument = "flute" } {
\new Voice = "mel" {
% \set Staff.midiInstrument = #"fiddle"
\relative f' {
\clef treble
\global
\autoBeamOff
% tu melodia
^\markup { \bold { Moderato con moto } }
r2 |
r2 |
^\mf
f8 g a4 |
a8 a4 f8 |
g8 a bes4 |
bes8 bes4 g8 |
^\< f8 g a4 \! |
a8 a4 c8 |
^\> c8 bes bes e, \! |
f8 f4 r8 |
% ======
f8 a ^\markup { italic { cresc. } } c4 |
c8 c4 a8 |
^\< bes8 c d4 \! |
^\f
e8 f4 e16([ bes)] |
a8 ^\markup { \italic { dimin. } } f16([ a)] c4 |
^\> c8 c4 a8 \! |
^\mf
c8 bes g e |
f8 f4 r8 \bar "|."
} }
}
\addlyrics { \small {
% tu liryka
Leć gło -- sie po ro -- sie
pro -- sto ku la -- sko -- wi,
po -- wiedz „do -- bry wie -- czór”
me -- mu ko -- chan -- ko -- wi.
Po -- wiedz „do -- bry wie -- czór”,
kła -- niaj się o -- de mnie;
je -- śli on mnie ko -- cha,
ja je -- go wza -- je -- mnie.
} }
\new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\global
% tu prawa ręka
^\markup { \italic { Umiarkowanie lecz z ruchem } }
^\p
a16([ c e d)] c16([ <bes d> c8)] |
a16([ c e d)] c16([ <e, bes' d> c'8)] |
a16([ c e d)] c16([ d <a c>8)] |
<< { \stemDown r8 a4 a8 } { \stemUp f'8[ e16^( d] c8)[ f] } >> |
bes16([ c a g)] c,([ d <g, c>8)] |
<< { \stemDown r8 bes4 bes8 } { \stemUp g'8[ e16( d] e8)[ g] } >> |
a,16([ c e d)] c16([ d <a c>8)] |
<< { \stemDown r8 a4 a8 } { \stemUp a'8[ f16( g] f8)[ <f a>] } >> |
r8 <bes, f' a> r <bes e> |
a16([ c d e)] <a, e'>4 |
% =======
\stemUp
a16([ c a' g] f[ g <a, f'>8)] |
<< {\stemDown r8 c4 c8 } { \stemUp fis8[ fis16 g] a8[ fis] } >> |
_\< bes,16([ f' bes g] \! << { d4 } { f16([ f f8)] } >> |
_\f
d16([ f bes f)] <d bes'>8-> r8 |
c16([ e f d] c[ d <c f>8)] |
_\> a16([ c f e)] f8[ <c f>] \! |
bes16([ d f8)] bes,16([ c) e8] |
a,16([ c d e)] <a, f'>8 r8 \bar "|."
}
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
^\p
f,8[ c] e,[ c] |
f,[ c] c,[ c] |
<< { \stemDown f,2 } { \stemUp r8 c4 c8 } >> |
<< { \stemDown f,2 } { \stemUp r8 c4 c8 } >> |
<< { \stemDown e,2 } { \stemUp r8 c4 c8 } >> |
<< { \stemDown c,2 } { \stemUp r8 c4 c8 } >> |
<< { \stemDown f,2 } { \stemUp r8 c4 c8 } >> |
<< { \stemDown es,2 } { \stemUp r8 c4 c8 } >> |
d,4 c, |
<< { \stemDown f,2 } { \stemUp r8 c4 c8 } >> |
% =======
<< { \stemDown f,4 es, } { \stemUp r8 c4 c8 } >> |
<< { \stemDown d,2 } { \stemUp r8 d4 d8 } >> |
d,8[ d] bes,,[ bes,] |
g,,[ g,] g,-> r8 |
<< { \stemDown a,,2 } { \stemUp r8 a,4 a,8 } >> |
<< { \stemDown d,2 } { \stemUp r8 d4 d8 } >> |
g,8[ d] c,[ c] |
f,4 <f, c>8-> r8 \bar "|."
}
>>
>>
\layout{}
\midi{}
}
</score>
== Krakowiaki ==
https://polona.pl/item/krakowiaky-aneb-pjsne-narodnj-polske-s-pripogenym-puwodnjm-textem,MTE2ODkxMTU3/150/#item
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = ""
poet = ""
composer = ""
arranger = ""
tagline = ""
}
\score{
\relative c'{
\clef treble
\key f \major
\time 2/4
\tempo 4 = 120
\autoBeamOff
c8 e g8. bes16 |
a8 f4 c'8 |
b16[ c] d[ c] bes8.[ g16] |
f8 a4 f8 |
c8 e g[( bes]) |
a8 f4 c'8 |
\grace {b8} c8 d16[ c] bes8.[ e,16] |
g8 f4 f8 |
d'8 d16([ e)] f8.( d16) |
c8 a4 c8 |
c8 \grace {d8} c8 bes g |
f8 a4 c8 |
d8 d16([ e)] f8.( d16) |
c8 a4 c8 |
c8 \grace {d8} c8 bes g |
f8 f4 f8 |
}
\layout{}
\midi{}
}
</score>
== Hejże, hejże po naszemu (kujawiak) ==
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Hejże, hejże po naszemu"
poet = ""
composer = ""
arranger = ""
tagline = ""
}
\score{
\new Staff \with { midiInstrument = "flute" } {
\relative g' {
\clef treble
\key g \major
\time 3/4
\tempo 4 = 100
\autoBeamOff
g16 b d8. b16 |
d16 b d8 e |
a,16 a \tuplet 3/2 { c16([ a c)] } e16 |
d16 \grace { e8 } d16 b8 g |
d16 fis a8. e'16 |
d16 \grace { e8 } d16 b8 g |
b16 d d8. e16 |
a,16 \grace { b8 } a16 fis8 d \bar "|."
}
}
\layout { indent = 0 \cm }
\midi{}
}
</score>
== Niechaj Jezus Chrystus (Staropolskie zaloty) ==
https://polona.pl/item/harfiarz-zbior-piesni-patryotycznych-i-narodowych-na-cztery-meskie-glosy-serya-3,NTMzNDM3NjA/131/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Staropolskie zaloty"
poet = ""
composer = ""
arranger = ""
tagline = ""
}
global = {
\key bes \major
\time 3/4
\tempo 4 = 100
}
melodia =
\new ChoirStaff <<
\new Staff = "RH" \with { midiInstrument = "viola" } {
\clef treble
\global
<<
\new Voice = "sop" \relative c'' { \stemUp \autoBeamOff
f8 f f d es c |
bes d d bes c f, |
f' f f d es c |
bes d d bes c f, |
\repeat volta 2{
bes4 bes8 bes c d |
es f g2 \fermata |
f4 f8 d es c |
}
\alternative{
{ a8 c bes2 | }
{ d8 c bes2 \bar "|." }
}
}
\new Voice = "alt" \relative c'' { \stemDown \autoBeamOff
f8 f f d es c |
bes bes bes bes a f |
f'8 f f d es c |
bes a bes bes g f |
\repeat volta 2{
bes4 bes8 bes c b |
c d es2 \fermata |
es4 d8 d c c |
}
\alternative{
{ a8 a bes2 | }
{ a8 a bes2 \bar "|." }
}
}
>>
}
\new Staff = "LH" \with { midiInstrument = "cello" } {
%\relative c {
\clef bass
\global
<<
\new Voice = "ten" { \stemUp \autoBeamOff
f8 g a bes g a |
bes a g ges f f |
bes a as g g ges |
fis fis g f e es |
_\f
\repeat volta 2{
d4 g8 g g g |
g bes bes2 \fermata |
a4 as8 g g ges |
}
\alternative{
{ f8 es d2 | }
{ f8 es d2 \bar "|." }
}
}
\new Voice = "bss" { \stemDown \autoBeamOff
_\mf
f8 f f f f f |
bes a g ges f f |
bes, bes, bes, b, c es |
d d g g, c a, |
\repeat volta 2{
bes,4 g8 f es d |
c bes es2 \fermata |
c4 c8 b, c es |
}
\alternative{
{ f8 f, bes,2 | }
{ f8 f, bes,2 \bar "|." }
}
}
>>
}
>>
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== O gwiazdeczko, coś błyszczała ==
nuty: https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/31/#item<br>
tekst: https://polona.pl/item/drobne-pisma-poetyckie,MjE0MTM5NTQ/53/#info:metadata
'''2 melodie: http://www.sbc.org.pl/Content/80935/PDF/i40009_03.pdf s. 34'''
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "O, gwiazdeczko, coś błyszczała"
poet = "Słowa: "
%meter = "Opracowanie:"
composer = "Muzyka: "
%arranger = "Aranżacja:"
tagline = ""
}
\score {
\new Staff \with { midiInstrument = "fiddle" } {
\relative bes' {
\clef treble
\key bes \major
\time 3/4
\tempo 4 = 100
\autoBeamOff
bes8. bes16 a4 g |
d'8. d16 es4 d |
a8. a16 bes4 a |
g2 r4 |
bes8. bes16 a4 g |
d'8. d16 es4 d |
a8. a16 bes4 a |
g2 r4 \bar "||"
f8. f16 g4 f |
bes8. bes16 a4 bes |
c8. c16 f4 es |
d2 r4 |
a8. a16 bes4 a |
g8. d'16 es4 d |
a8. a16 bes4 a |
g2 r4 \bar "|."
}
}
\layout{}
\midi{}
}
</score>
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "O, gwiazdeczko, coś błyszczała"
poet = "Słowa: "
%meter = "Opracowanie:"
composer = "Muzyka: "
%arranger = "Aranżacja:"
tagline = ""
}
global = {
\key bes \major
\time 3/4
\tempo 4=100
}
\score{
\new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\global
\autoBeamOff
% tu prawa ręka
<bes d bes'>8. <bes d bes'>16 <bes d a'>4 <bes d g> |
<d g d'>8. <d g d'>16 <es g es'>4 <d g d'> |
<c d fis a>8. <c d fis a>16 <c d fis bes>4 <c d fis a> |
<bes d g>2 r4 |
<bes d bes'>8. <bes d bes'>16 <bes d a'>4 <bes d g> |
<d g d'>8. <d g d'>16 <es g es'>4 <d g d'> |
<c d fis a>8. <c d fis a>16 <c d fis bes>4 <c d fis a> |
<bes d g>2 r4 \bar "||"
<a c es f>8. <a c es f>16 < a c es g>4 <a c es f> |
<d f bes>8. <d f bes>16 <d f a>4 <d f bes> |
<f a c>8. <f a c>16 <f a c f>4 <f a c es> |
<d f bes d>2 r4 |
<c d fis a>8. <c d fis a>16 <c d fis bes>4 <c d fis a> |
<bes d g>8. <d g d'>16 <es g es'>4 <d g d'> |
<c d fis a>8. <c d fis a>16 <c d fis bes>4 <c d fis a> |
<bes d g>2 r4 \bar "|."
}
\addlyrics { \small {
% tu liryka
} }
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
<g,, g,>4 <bes, d g> <bes, d g> |
<bes,, bes,> <d g bes> <d g bes> |
<d, d> <d fis a> <d fis a> |
<g,, g,> <d g> r |
<g,, g,>4 <bes, d g> <bes, d g> |
<bes,, bes,> <d g bes> <d g bes> |
<d, d> <d fis a> <d fis a> |
<g,, g,> <d g> r \bar "||"
<a,, a,>4 <es f> <es f> |
<d, d> <d f a> <d f a> |
<f, f> <es f a> <es f a> |
<bes,, bes,> <d f bes> r |
<d, d> <d fis a> <d fis a> |
<g,, g,> <d g bes> <d g bes> |
<d, d> <d fis a> <d fis a> |
<g,, g,> <g,, g,> r \bar "|."
}
>>
\midi{}
\layout{}
}
</score>
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = ""
poet = ""
composer = ""
arranger = ""
tagline = ""
}
global = {
\key as \major
\time 3/4
\tempo 4 = 120
}
\score{
\new ChoirStaff <<
\new Staff = "RH" \with { midiInstrument = "viola" } {
\clef treble
\global
<<
\new Voice = "sop" { \stemUp \autoBeamOff \relative c'' {
^\p \partial 4 { s4 } |
es8 e f4. c8 |
des8 d es4. des8 |
c8 ges' f4. es8 |
des2 r4 |
des8 d es4. des8 |
c8 b c4 d |
^\f es8 d c4 b |
g'2 r4 \bar "||"
^\p
des4. a8 bes b |
c8 c d4 e |
f8 g as4 g8[ f] |
g2 r4 |
^\f
as4. g8 f c |
es8 des c4 bes |
f'4. es8 des bes |
f'2( e4) |
^\f
as4. g8 f g |
bes8 as g4 f |
^\p f8 e es4 g, |
as2 \fermata r4 \bar "|."
} }
\new Voice = "alt" { \stemDown \autoBeamOff \relative c'' {
_\p \partial 4 { s4 } |
c8 c c4. c8 |
bes8 bes bes4 bes |
c8 es des4. c8 |
bes2 r4 |
bes8 bes bes4 bes |
c8 b c4 c |
_\f es8 d c4 g |
g2 r4 \bar "||"
g4. g8 g g |
a8 c b4 bes |
as8 bes c4 b |
c2 r4 |
_\f
as4. as8 a a |
a8 bes a4 bes |
g4. g8 g bes |
bes2( c4) |
_\f
c4. c8 des des |
c8 c b4 b |
c8 b bes4 g |
as2 _\fermata r4 \bar "|."
} }
>>
}
\new Staff = "LH" \with { midiInstrument = "cello" } {
%\relative c {
\clef bass
\global
% des es as bes
<<
\new Voice = "ten" { \stemUp \autoBeamOff
^\p \partial 4 { s4 } |
as8 bes as4 a |
bes8 as g4 g |
as8 as a4 f |
bes2 r4 |
bes8 as g4 es |
as8 as as4 as |
g8 f es4 f |
es2 r4 \bar "||"
^\p
es4. es8 es es |
es8 c as4 g |
f8 f a4 f |
es2 r4 |
^\f
f4. f8 f f |
ges8 f es4 des |
es4. es8 es es |
des2( es4) |
^\f
as4. as8 bes bes |
as8 as as4 as |
^\p es8 es es4 des |
^\pp c2 \fermata r4 \bar "|."
}
\new Voice = "bas" { \stemDown \autoBeamOff
_\p \partial 4 { s4 } |
_\< as8 g \! f4_\> f \! |
_\< bes,8 bes, \! es4_\> g \! |
as8 as a4 f |
bes,2 r4 |
bes8 as g4 e |
bes,8 as as4 f |
g8 f es4 d |
bes,2 r4 \bar "||"
_\p
bes,4. c8 des8 des |
c8 c c4 c |
f8 f f4 des |
c2 r4 |
des4. des8 des des |
bes,8 bes, bes,4 bes, |
bes,4. bes,8 bes, des |
bes,2. |
_\f
bes,4. as8 as es |
_\p as8 as d4 d |
es8 es es4 es, |
_\pp c2 _\fermata r4 \bar "|."
}
>>
}
>>
\layout{}
\midi{ \tempo 4 = 120}
}
</score>
== Słynie Gopło i Kruświca ==
https://polona.pl/item/spiewnik-dla-przemyslowcow,OTM4NTAxNzg/34/#item
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Słynie Gopło i Kruświca"
tagline = ""
}
\score{
\relative g' {
\clef treble
\key g \major
\time 3/4
\tempo 4 = 90
\autoBeamOff
g16 b d8. b16 |
d16 b d8 e |
a,16 a \tuplet 3/2 { c16([ a c)] } e16 |
d16 \grace {e8} d16 b8 g |
d16 fis a8. e'16 |
d16 \grace {e8} d16 b8 g |
b16 d d8. e16 |
a,16 \grace {b8} a16 fis8 d \bar "|."
}
\layout{}
\midi{}
}
</score>
== Śliczne gwoździki, piękne tulipany ==
https://polona.pl/item/piesniarz-polski-zbior-melodyi-swojskich-aryi-dumek-krakowiakow-marszow,MTEwNjI0OTUw/26/#info:metadata
https://polona.pl/item/lobzowianie-obrazek-dramatyczny-w-1-akcie-ze-spiewkami,NzUxODgyMDE/77/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Śliczne gwoździki, piękne tulipany"
tagline = ""
}
\score{
\new Staff \with { midiInstrument = "piano" } {
\relative g' {
\clef treble
\key a \minor
\time 3/4
\tempo 4 = 120
e4 a4. b8 |
c4 b r |
e,8 e a4. b8 |
c4 b r |
c4 b4. a8 |
c4 b r |
e,8 e fis4 gis |
a4 e'2 |
c4 b4. a8 |
c4 b r |
e,8 e c'4. b8 |
b4 a r |
% ---
a4\staccato a\staccato a\staccato |
d2 d4 |
d8 f e4. dis8 |
e2 b4 |
c4 b4. a8 |
c4 b2 |
e,8 e fis4 gis |
a4 e'2 |
c4 b4. a8 |
c4 b2 |
e,8 e c'4. b8 |
b4 a r \bar "|."
}
\addlyrics { \small {
Śli -- czne gwo -- ździ -- ki, pię -- kne tu -- li -- pa -- ny,
Gdzie -- żeś mój Sta -- siu, Sta -- siu mój ko --cha -- ny?
Gdzie -- żeś mój Sta -- siu, Sta -- siu mój ko --cha -- ny?
Czy -- li cię wzię -- li że -- gla -- rze na mo -- rze,
Że się me ser -- ce u -- tu -- liić nie mo -- że,
Że się me ser -- ce u -- tu -- liić nie mo -- że.
} }
}
\layout{}
\midi{}
}
</score>
== Hej koledzy, precz frasunek ==
https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/24/#item
https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/273/#item
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "Hej koledzy, precz frasunek"
poet = "Słowa: "
%meter = "Opracowanie:"
composer = "Muzyka: "
%arranger = "Aranżacja:"
tagline = ""
}
global = {
\key g \major
\time 3/4
\tempo 4=120
}
melodia = \new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\global
\autoBeamOff
% tu prawa ręka
d8. d16 <d b'>4 <d a'> |
<d g>8. <d g>16 <d fis>4 <d g> |
<fis a>8. <fis a>16 <fis gis>4 <fis a> |
<g b>8. <g b>16 <g ais>4 <g b> |
\repeat volta 2 {
d'8 c e,4 a |
c8 b d,4 g |
fis8 fis b4 a |
}
\alternative {
{ g8[ b] d4 r | }
{ g,4 r r \bar "|." }
}
}
\addlyrics { \small {
% tu liryka
} }
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
g,4 <d g b> <d g b> |
g,4 <d g b> <d g b> |
<d, d> <fis a c'> <fis a c'> |
g,4 <d g b> <d g b> |
\repeat volta 2 {
<c, c> <e a c'> <e a c'> |
g,4 <d g b> <d g b> |
<d, d> <fis a c'> <fis a c'> |
}
\alternative {
{ g,4 <d g b> <d g b> | }
{ g,4 <d g b> r \bar "|." }
}
}
>>
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== Hej koledzy, po mozołach ==
https://polona.pl/item/echo-polskie-najwiekszy-zbior-piesni-polskich-obyczajowych-i-okolicznosciowych-z,MTEwNjExNzYy/85/#item
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Hej koledzy, po mozołach"
% composer = "Muzyka: "
tagline = ""
}
melodia = \new Staff \with { midiInstrument = "flute" } {
\relative g'{
\clef treble
\key g \major
\time 4/4
\tempo 4 = 120
\autoBeamOff
^\mf
g4. g8 g4 d |
b'4. a8 g4 fis |
e4. fis8 g4 e |
d4 d' d8([ c)] b([ a)] |
g4. g8 g4 d |
b'4. a8 g4 b |
a4. b8 a b a b |
a2 d,4 r |
^\f
\repeat volta 2 {
d4 d b'8([ a)] g4 |
d4 d b'8([ a)] g4 |
a4. ^\< b8 c4 \! a |
d2. \fermata r4 |
b4 d, b' d, |
b'4. a8 g4 fis |
e4 c' b a |
g2. r4 |
}
}
}
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== Hej koledzy, z wspólnej czary ==
https://polona.pl/item/echo-polskie-najwiekszy-zbior-piesni-polskich-obyczajowych-i-okolicznosciowych-z,MTEwNjExNzcz/108/#item
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Hej koledzy, z wspólnej czary"
composer = "Muzyka: Zygmunt Noskowski"
tagline = ""
}
melodia = \new Staff \with { midiInstrument = "flute" } {
\relative a'{
\clef treble
\key a \major
\time 3/4
\tempo 4 = 120
\autoBeamOff
^\mf
a4. e8 gis fis |
e8 gis a4. b8 |
cis4. d8 fis e16[ cis] |
b2 r4 |
b4. d8 cis b |
a8. gis16 a4 cis |
fis,4. gis16[ a] cis8. b16 |
a2 r4 |
^\f
\repeat volta 2 {
e'4. b8 cis d |
cis8. b16 cis4 a |
gis4. fis8 gis a |
b2 r4 |
^\p
cis4. d8 cis gis |
b8. a16 fis4 a |
d4. e8 d a |
b2 r4 |
e4. ^\< cis8 d e \! |
gis8.-^ fis16 e4. d8 |
cis8 ^\> b16[ a] e'4. \! gis,8 |
a2 r4 |
}
}
}
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== Ja za górą, ty za wodą ==
https://polona.pl/item/spiewnik-mlodej-wsi-na-2-glosy,NTM2NTAyMDg/55/#item
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Ja za górą, ty za wodą"
poet = "Słowa: "
%meter = "Opracowanie:"
composer = "Muzyka: "
%arranger = "Aranżacja:"
tagline = ""
}
global = {
\clef treble
\key g \minor
\time 3/4
\tempo 4 = 120
}
melodia = \new Staff \with { midiInstrument = "flute" } {
\global
<<
\new Voice = "hi" \relative c''{ \stemUp \autoBeamOff
d8. d16 bes4 bes |
bes8 d f4. d8 |
c8. c16 a4 a |
a8 c d4. c8 |
bes8. a16 g4 g |
g8. bes16 d4 bes |
a8 fis d4. fis8 |
g8. g16 g4 g |
\repeat volta 2{
bes8 c d2 |
bes8 c d4 c8([ bes)] |
a8 bes c2 |
a8 bes c4 bes8([ a)] |
g8 a bes2 |
g8 a bes4 a8([ g)] |
d'8 es d c bes a |
g4 d g |
}
}
\new Voice = "lo" \relative c''{ \stemDown \autoBeamOff
d8. d16 bes4 bes |
bes,8 d f4. bes8 |
a8. g16 f4 es |
d8 c bes4. c8 |
g8. d'16 g4 g |
es8 d bes4. d8 |
a'8 fis d4. fis8 |
g8. g16 g4 g |
\repeat volta 2{
bes8 f bes2 |
bes8 f bes4 a8([ g)] |
fis8 g a2 |
fis8 g a4 g8([ fis)] |
g8 d g2 |
g8 d g4 fis8([ g)] |
bes8 c bes a g fis |
g4 d g |
}
}
>>
}
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== Bartoszu, Bartoszu ==
https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-cz-1-2,OTMzNDYyMjk/15/#item
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "Bartoszu, Bartoszu"
poet = "Słowa: "
%meter = "Opracowanie:"
composer = "Muzyka: "
%arranger = "Aranżacja:"
tagline = ""
}
global = {
\key g \major
\time 2/4
\tempo 4=120
}
\score{
\new PianoStaff <<
\new Staff = "RH"
\relative c'' {
\clef treble
\global
\autoBeamOff
% tu prawa ręka
g8 <g b> <g b d>4 |
g8 <g b> <g b d>4 |
<g c e>8 <g c e>4 <g c e>8 |
<g b d>8 e'16[ d] b8 g |
<g c e>8 <g c e>4 <g c e>8 |
<g b d>8 e'16[ d] b8 g |
<fis a>8 <a c> <g b> <fis a> |
<g b d>8 r <d g>4-> |
<c d fis>8 g' a4 |
<g b>8 <g b d>4 <g b>8 |
<fis a>8 <a c> <g b> <fis a> |
<g b d>8 r <d g>4-> |
<c d fis>8 g' a8. fis16 |
<b, d g>8 <b d g>4 r8 \bar "|."
}
\addlyrics { \small {
% tu liryka
Bar -- to -- szu, Bar -- to -- szu,
Oj nie trać -- wa na -- dzie -- i,
Oj nie trać -- wa na -- dzie -- i:
Bóg po -- bło -- go -- sła -- wi,
Oj -- czy -- znę nam zba -- wi;
Bóg po -- bło -- go -- sła -- wi,
Oj -- czy -- znę nam zba -- wi.
} }
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
<g b d'>8[ <g b d'>] <g b d'>4 |
<g b d'>8[ <g b d'>] <g b d'>4 |
<c e g c'>8 <c e g c'>4 <c e g c'>8 |
g,8[ <d g b> <d g b> <d g b>] |
<c e g c'>8 <c e g c'>4 <c e g c'>8 |
g,8[ <d g b> <d g b> <d g b>] |
d8[ <fis a c'>] d8[ <fis a c'>] |
<d g b>8 r <d g b>4 |
d8[ <fis c'>] d8[ <fis c'>] |
g8[ <b d'> <b d'> <b d'>] |
d8[ <fis a c'>] d8[ <fis a c'>] |
<d g b>8 r <d g b>4 |
d8[ <fis a c'>] d8[ <fis a c'>] |
<g, g>8 <g, g>4 r8 \bar "|."
}
>>
\midi{}
\layout{}
}
</score>
== Czarna sukienka ==
https://polona.pl/item/harfiarz-zbior-piesni-patryotycznych-i-narodowych-na-4-meskie-glosy-ser-1,MTExMDMzOTAy/96/#item
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = ""
poet = ""
composer = ""
arranger = ""
tagline = ""
}
global = {
\key as \major
\time 3/4
% \tempo 4 = 120
}
tekst = { \lyricmode {
Scho -- waj ma -- tko su -- knie mo -- je,
Pe -- rły, wie -- ńce z_róż,
% Ja -- sne sza -- ty, świe -- tne stro -- je,
% To nie dla mnie już.
Nie -- gdyś jam stro -- je, ró -- że lu -- bi -- ła,
Gdy nam na -- dzie -- i wy -- try -- skał zdrój;
% Lecz gdy do gro -- bu Po -- lska zstą -- pi -- ła,
% Je -- den mi ty -- lko przy -- sto -- i strój:
Cza -- rna su -- kien -- ka.
} }
melodia = \new ChoirStaff <<
\new Staff = "RH" \with { midiInstrument = "flute" }
\relative as' {
\clef treble
\global
<<
\new Voice = "sop" { \stemUp \autoBeamOff
^\mf ^\markup { \bold { Moderato } } \tempo 4 = 100
\repeat volta 2 {
c8 c as4 es |
c'8 c as4 es |
bes'8 c des4 g, |
as2 r4 |
}
^\f \tempo "Allegretto" \tempo 4 = 120
\repeat volta 2 {
es8 g bes des4 g,8 |
as8 c es as4 es8 |
^\markup { \italic {ritard. } }
es,8 g bes des4 g,8 |
c8 bes g as4 r8 |
}
^\p \tempo "Lento" \tempo 4 = 80
es'4 des4. f,8 |
g4 as \fermata r \bar "|."
}
\new Voice = "alt" \relative as'{ \stemDown \autoBeamOff
_\mf \tempo 4 = 100
\repeat volta 2 {
as8 as as4 es |
as8 as as4 es |
g8 as bes4 g |
as2 r4 |
}
_\f \tempo 4 = 120
\repeat volta 2 {
es8 g bes bes4 g8 |
as8 c es es4 es8 |
es,8 g bes bes4 g8 |
as8 bes g as4 r8 |
}
_\p \tempo 4 = 80
c4 bes4. f8 |
g4 es _\fermata r \bar "|."
}
>>
}
\new Lyrics \lyricsto "sop" \tekst
\new Staff = "LH" \with { midiInstrument = "oboe" } {
%\relative c {
\clef bass
\global
<<
\new Voice = "ten" { \stemUp \autoBeamOff
^\mf \tempo 4 = 100
\repeat volta 2 {
es8 es es4 es |
es8 es es4 es |
es8 es f4 es |
c2 r4 |
}
^\f \tempo 4 = 120
\repeat volta 2 {
es8 es g g4 es8 |
as8 as as c'4 as8 |
es8 es g g4 es8 |
es8 f es c4 r8 |
}
^\p \tempo 4 = 80
f4 f4. des8 |
es4 c _\fermata r \bar "|."
}
\new Voice = "bss" { \stemDown \autoBeamOff
_\mf \tempo 4 = 100
\repeat volta 2 {
as,8 as, c4 es |
as,8 as, c4 es |
des8 c bes,4 es |
as,2 r4 |
}
_\f \tempo 4 = 120
\repeat volta 2 {
es8 es es es4 es8 |
as es c as4 c8 |
es8 es es es4 es8 |
c des es c4 r8 |
}
_\p \tempo 4 = 80
b,4 c4. c8 |
es4 as, \fermata r \bar "|."
}
>>
}
>>
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== Cztery rzeczy ==
Adamski W., ''Polski śpiewnik narodowy z melodjami'', wyd. 4, Poznań: S. A. „Ostoja”, 1933. S. 96.
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
tagline = ""
}
melodia = \new Voice = "mel" \relative g'{
\clef treble
\key g \major
\time 3/4
\tempo 4 = 120
\autoBeamOff
g8 b d4. cis16([ d)] |
e8. b16 d8.[ c16] c4 |
\tuplet 3/2 { d,8( fis) a} c4. b16[ c] |
d8. a16 c8.[ b16] b4 |
\repeat volta 2 {
b8 b g4 b |
b8 b c4 a |
d,8 fis a4 a |
a8 a b4 g |
}
}
tekst = \new Lyrics \lyricsto "mel" { \lyricmode {
Czte -- ry rze -- czy w_Pol -- sce sły -- ną
Sta -- ra pio -- snka, sta -- re wi -- no,
Przy -- jaźń (wie -- rna), do -- świa -- dczo -- na
I u -- czci -- wa (do -- bra) żo -- na.
} }
\score{
<<
\melodia
\tekst
>>
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== Dzisiaj w Betlejem ==
https://polona.pl/item/w-dzien-bozego-narodzenia-koledy-cz-1-muzyka-cz-2-slowa,ODY3NTMwMzQ/26/#info:metadata
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "Dzisiaj w Betlejem"
poet = "Słowa: autor nieznany"
%meter = "Opracowanie:"
composer = "Muzyka: autor nieznany"
%arranger = "Aranżacja: Franciszek Barański"
tagline = ""
}
global = {
\key g \major
\time 3/4
\tempo 4=120
}
melodia = \new PianoStaff <<
\new Staff = "RH"
\relative g' {
\clef treble
\global
% tu prawa ręka
\autoBeamOff
_\p
g4 g8 d g a |
^\< b4 b8 a b c \! |
^\> d e d4 c \! |
<d, b'>4 <d fis a> r |
g4 g8 d g a |
^\< b4 b8 a b c \! |
^\> d e d4 c \! |
<d, b'>4 <d fis a> r |
\repeat volta 2 {
d'4 d8 c b a |
g4 g8 d g b |
d4 d8 c b a |
g4 g8 d g b |
d8 e d c b c |
d8 e d c b c |
d d e4 d |
c4 b a |
<d, g> r r |
}
}
\addlyrics { \small {
% tu liryka
Dzi -- siaj w_Be -- tle -- jem, dzi -- siaj w_Be -- tle -- jem
we -- so -- ła no -- wi -- na,
Że Pan -- na czy -- sta, że Pan -- na czy -- sta
po -- ro -- dzi -- ła Sy -- na.
Chry -- stus się ro -- dzi, Pan o -- swo -- bo -- dzi,
A -- nie -- li gra -- ją, Kró -- le wi -- ta -- ją,
Pa -- ste -- rze śpie -- wa -- ją, by --dlę -- ta klę -- ka -- ją,
Cu -- da, cu -- da o -- gła -- sza -- ją.
} }
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
^\p
g,4 <d g b> <d g b> |
g,4 <d g b> <d g b> |
g,4 <d g b> <d fis a c'> |
<< { \stemUp g4 } { \stemDown g,8[ b,] <d a>4 r } >> |
\stemNeutral
g,4 <d g b> <d g b> |
g,4 <d g b> <d g b> |
g,4 <d g b> <d fis a c'> |
<< { \stemUp g4 } { \stemDown g,8[ b,] <d a>4 r } >> |
\stemNeutral
\repeat volta 2 {
<d, d>4 <d fis a c'> <d fis a c'> |
g,4 <d g b> <d g b> |
<d, d>4 <d fis c'> <d fis c'> |
g,4 <d g b> <d g b> |
<d, d>4 <d fis c'> <d fis c'> |
g,4 <d g b> <d g b> |
<d, d>4 <d fis c'> <d fis c'> |
d4 <fis a c'> <fis a c'> |
<g b>4 r r |
}
}
>>
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== Mizerna, cicha ==
https://polona.pl/item/w-dzien-bozego-narodzenia-koledy-cz-1-muzyka-cz-2-slowa,ODY3NTMwMzQ/35/#item
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "Mizerna, cicha stajenka licha"
poet = "Słowa: Teofil Lenartowicz (1822–1893)"
%meter = "Opracowanie:"
composer = "Muzyka: Jan Gall (?)"
arranger = "Aranżacja: Franciszek Barański"
tagline = ""
}
global = {
\key g \minor
\time 3/4
\tempo 4=110
}
melodia = \new PianoStaff <<
\new Staff = "RH"
\relative c'' {
\clef treble
\global
% tu prawa ręka
\autoBeamOff
%\repeat volta 2{
<bes d>4 <bes d> <bes d> |
<a c>2 <a c>4 |
<g bes> <g bes> <g bes> |
<fis a>2 d4 |
g4 g a |
%}
%\alternative{
% {
% {
bes4( a) g |
<fis a c>2. |
<fis a c>2 r4 |
% }
<bes d>4 <bes d> <bes d> |
<a c>2 <a c>4 |
<g bes> <g bes> <g bes> |
<fis a>2 d4 |
g4 g a |
% {
bes2 a4 |
<bes, d g>2. |
<bes d g>2 r4 \bar "|."
% }
%}
}
\addlyrics { \small {
% tu liryka
Mi -- zer -- na, ci -- cha sta -- jen -- ka li -- cha
Peł -- na nie -- bie -- skiej chwa -- ły,
O -- to le -- żą -- cy przed na -- mi śpią -- cy
W_pro -- mie -- niach Je -- zus ma -- ły.
} }
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
%\repeat volta 2{
<g, g>4 <g bes d'> <g bes d> |
<d, d> <a c' d'> <a c' d'> |
<g, g> <bes d'> <bes d'> |
<d, d> <fis a c'> <fis a c'> |
<g, g> <bes d'> <bes d'> |
%}
%\alternative{
% {
<g, g> <bes d'> <bes d'> |
<d, d> <a c' d'> <a c' d'> |
<d, d> <a c' d'> <a c' d'> |
% }
<g, g>4 <g bes d'> <g bes d> |
<d, d> <a c' d'> <a c' d'> |
<g, g> <bes d'> <bes d'> |
<d, d> <fis a c'> <fis a c'> |
<g, g> <bes d'> <bes d'> |
% {
<d, d> <fis c' d'> <fis c' d'> |
<g, g> d bes, |
g4 r2 \bar "|."
% }
%}
}
>>
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== Lulajże Jezuniu ==
https://polona.pl/item/w-dzien-bozego-narodzenia-koledy-cz-1-muzyka-cz-2-slowa,ODY3NTMwMzQ/15/#info:metadata
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "Lulajże Jezuniu"
poet = "Słowa: autor nieznany"
%meter = "Opracowanie: Zygmunt Gloger"
composer = "Muzyka: autor nieznany"
arranger = "Aranżacja: Franciszek Barański"
tagline = ""
}
global = {
\key f \major
\time 3/8
\tempo 4=60
}
melodia = \new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\global
% tu prawa ręka
<f a>8 <f a> <f a> |
<g bes> <g bes>8. <f a>16 |
<e g>8 <e g> <e g> |
<g bes> <f a> r |
<c f>8 <c f> <c f> |
<d g> <d g>8. <c f>16 |
<c e>8 d <c e> |
<bes g'> <a f'> r |
\repeat volta 2 {
<a' c>8 <a c> <a c> |
<bes d> <bes d>8. <a c>16 |
<g bes>8 <g bes> <bes d> |
<bes d> <a c> r |
<f a>8 <f a> <f a> |
<g bes> <g bes>8. <f a>16 |
}
\alternative{
{ <e g>8 <e c'>8. <g bes>16 | <g bes>8 <a c> r | }
{ <e g>8 <e c'> e | <e g> f r \bar "|." }
}
}
\addlyrics { \small {
% tu liryka
Lu -- laj -- że Je -- zu -- niu, mo -- ja pe -- reł -- ko,
Lu -- laj u -- lu -- bio -- ne me pie -- ści -- deł -- ko.
Lu -- laj -- że Je -- zu -- niu, lu -- laj -- że lu -- laj,
A Ty Go Ma -- tu -- lu w_pła -- czu u -- tu -- laj,
w_pła -- czu u -- tu -- laj.
} }
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
\stemDown
f,8[ <a c'> <a c'>] |
c[ <g bes c'> < g bes c'>] |
c[ <g bes c'> < g bes c'>] |
f[ <a c>] r |
f,8[ <f a> <f a>] |
bes,[ <d g> <d g>] |
c[ <e g bes> <e g bes>] |
\stemUp
<c, c>[ <f, f>] r |
\stemDown
\repeat volta 2 {
f8[ <a c'> <a c'>] |
bes,[ <g bes> <g bes>] |
c[ <g bes c'> <g bes c'>] |
f[ <a c'>] r |
d8[ <f a d'> <f a d'>] |
g,[ <g bes d'> <g bes d'>] |
}
\alternative {
{ c[ <g bes c'> <g bes c'>] | f[ <a c> <a c>] | }
{ e[ <g bes c'> <g bes c'>] | <g bes c'>[ <f a c'>] r \bar "|." }
}
}
>>
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
== Sadźmy róże ==
https://polona.pl/item/lec-glosie-spiewnik-harcerski,ODc0Mzg3OTY/39/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header {
title = "Sadźmy, przyjacielu, róże"
composer = ""
tagline = ""
}
\score{
\new Staff \with { midiInstrument = "fiddle" } {
\relative c' {
\clef treble
\key f \major
\time 3/4
\tempo 4 = 120
\autoBeamOff
^\p
d8. f16 a4. gis8 |
a8. gis16 a8([ f)] d4 |
g8. a16 bes4. bes8 |
a8 g a4 a |
e8. f16 g4. e8 |
f8. g16 a8([ f)] d4 |
^\mf
a'8. d16 cis8 d cis d |
a4 a r |
g8. g16 e'4 e, |
f8. g16 a8([ f)] d4 |
a'8. d16 cis8 d cis d |
cis4 d r \bar "|."
}
}
\layout{}
\midi{}
}
</score>
== Jak dobrze nam ==
https://polona.pl/item/lec-glosie-spiewnik-harcerski,ODc0Mzg3OTY/43/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header {
title = "Jak dobrze nam"
composer = ""
tagline = ""
}
melody = \new Staff \with { midiInstrument = "flute" } {
\relative c'' {
\clef treble
\key g \major
\time 4/4
\tempo 4 = 120
\autoBeamOff
\partial 2 { s8 g8 fis e } |
b'2 r8 g fis e |
c'4 a r8 a b c |
b4 a g a |
b2 r8 g fis e |
b'4. b8 e4. b8 |
d4 c r8 a b c |
b4 a g fis |
e2. r4 |
\repeat volta 2 {
g2 fis4 e |
b'2 r8 b e d |
c2 r8 a b c |
}
\alternative {
{ b4 a g a | b2 r4 }
{ b4 a g fis | e2 r4 }
}
%}
b'8. g16 |
e2. dis8. e16 |
fis2. c'8. b16 |
a2. b8. c16 |
b2. b8. g16 |
e2. e'8. d16 |
c2. b8. c16 |
b4 a g a |
b2. b8. g16 |
e2. e'8. d16 |
c2. b8. c16 |
b4 a g fis |
e2 r2
}
}
\score {
\melody
\layout {}
}
\score{
\unfoldRepeats
\melody
\midi {}
}
</score>
== Przyjechał Jasieńko ==
https://polona.pl/item/piesni-ludu-w-latach-1861-1891,MTExMTI4MDc/215/#info:metadata
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "Przyjechał Jasieńko z cudzej ukrainy"
poet = "Słowa: autor nieznany (piosenka ludowa)"
meter = "Opracowanie: Zygmunt Gloger (1845–1910)"
composer = "Muzyka: autor nieznany (melodia ludowa)"
arranger = "Zygmunt Noskowski (1846–1909)"
tagline = ""
}
global = {
\key a \minor
\time 3/4
\tempo 4=120
}
\score{
<<
\new Staff \with { midiInstrument = "flute" } {
\new Voice = "mel" {
% \set Staff.midiInstrument = #"fiddle"
\autoBeamOff
\relative a' {
\clef treble
\global
\autoBeamOff
% tu melodia
^\markup { \bold { Allegro ma non troppo } }
r2. |
r2. |
a8 g a4 b |
c a2 |
a8 g a4 b |
c c2 |
c4 c e |
d8([ b)] g4. g8 |
g8 b d4 e |
c8([ b)] a2 |
c4 c c8([ e)] |
d([ b)] g4. g8 |
g8 b d4 e |
c8([ b)] a4 r \bar "\."
} }
}
\addlyrics { \small {
% tu liryka
Przy -- je -- chał Ja -- sień -- ko
z_cu -- dzej u -- kra -- i -- ny,
Na -- mó -- wił Ka -- sień -- kę
do swo -- jej ro -- dzi -- ny.
Na -- mó -- wił Ka -- sień -- kę
do swo -- jej ro -- dzi -- ny.
} }
\new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\global
% tu prawa ręka
^\markup { \italic { Nie za nadto żwawo } }
_\p
r4 <a f'> <c f a> |
r <a d f> <d f a> |
r <c e a> <d g b> |
<c g' c><c f a>2 |
r4 <d f a> <d f b> |
r <e a c> r |
r4 <fis a c> <c fis a> |
r <b d g> <b e g> |
<b f' g> <b f' b> <b d e> |
r <a c e> <c e a> |
r4 <c f as> <c f as> |
r <b d g> <b d g> |
<b d g> <a d a'> <b d gis> |
r <a c a'> r \bar "|."
}
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
^\p
f2(( f8[) e)] |
d2( c8[ b,)] |
a,4 a g |
e f f8([ e)] |
d2 b,4 |
a,2 b,8([ c)] |
d2. |
g |
g,2 gis,4 |
a,2. |
d, |
g,4.( a,8[ b, d]) |
g4 f e |
a,2 r4 \bar "|."
}
>>
>>
\midi{}
\layout{}
}
</score>
== W polu lipeńka ==
https://polona.pl/item/piesni-ludu-w-latach-1861-1891,MTExMTI4MDc/22/#item
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "W polu lipeńka"
poet = "Słowa: autor nieznany (piosnka luduowa)"
meter = "Opracowanie: Zygmunt Gloger (1845–1910)"
composer = "Muzyka: autor nieznany (melodia ludowa)"
arranger = "Zygmunt Noskowski (1846–1909)"
tagline = ""
}
global = {
\key c \minor
\time 3/8
\tempo 4=90
}
\score{
<<
\new Staff \with { midiInstrument = "flute" } {
\new Voice = "mel" {
\autoBeamOff
\relative c'' {
\clef treble
\global
\autoBeamOff
% tu melodia
^\markup { \bold {Moderato.} }
r4. |
r4. |
^\markup { \italic {Śpiewnie} } ^\ff
g8 c c16( b)] |
g8 f4 |
g8 c c16( b)] |
g8 f4 |
g8 b g |
es'[ d] b |
c b4( |
b4.) |
% bes4.) |
g8 b d |
f es([ c)] |
f d b |
g f4 |
% =========
g8 b g |
es' d([ b)] |
g4. |
g4 \fermata r8 \bar "|."
} }
}
\addlyrics { \small {
% tu liryka
W_po -- lu li -- pe -- ńka,
w_po -- lu zie -- lo -- na
li -- ste -- czki o -- pu -- ści -- ła.
Pod nią dzie -- wczy -- na,
Pod nią je -- dy -- na
Pa -- rę wia -- nu -- szków wi -- ła.
} }
\new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\global
% tu prawa ręka
^\markup { \italic { Umiarkowanie. } }
_\p
<es g>16([ c <d as'> as <d f> as] |
<d f>[ as <b g'> g <b d> c)] |
<c es>([ g <es' g> g, <d' f> g,)] |
<c es>([ g <c f> as <c d> f,)] |
<c' es>([ g <es' g> g, <d' f> g,)] |
<c es>([ g <c f> f, <c' d> f,)] |
<b d>_\<([ g <b g'> g <c g'> as\!)] |
<es' g>([ b <d g> b <f' g> b,)] |
<es g>([ c <d g> b <d fis> b] |
<d g>[ b <d fis> b <d fis> b)] |
<d g>_\< ([ b <f' g> b,\! <f' as> d)] |
<g d'>([ f <g c> es <g c> c,)] |
<f c'>([ c <d f> c <d g> b)] |
<c g'>([ g <c f> g <d' f> g,)] |
% =========
<d' f>16([ g, <b g'> g <d' f> g,)] |
<b es>([ g <b es> g <f' g> b,)] |
<es g>([ c <c es> g <b d> f)] |
<c' f,>4 \fermata r8 \bar "|."
}
\new Staff = "LH" {
\clef bass
\global
% tu lewa ręka
^\p
c4.( |
c) |
c |
c, |
c |
c8( as,4) |
g,4. |
g8([ f d)] |
c16[( es] g4)( |
g4.) |
fis8([ d c)] |
b,8[ c es,] |
as,4( g,8) |
es8([ d c)] |
% =========
b,8([ d b,)] |
g,4. |
g4 g,8 |
<c, es>4 _\fermata r8 \bar "|."
}
>>
>>
\midi{}
\layout{}
}
</score>
== Zielony dzban ==
https://polona.pl/item/piesni-ludu-bialo-chrobatow-mazurow-i-rusi-z-nad-bugu-z-dolaczeniem-odpowiednich-piesni,OTI4ODc0MDg/52/#item
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "Zielony dzban"
poet = "Słowa: autor nieznany (piosenka ludowa)"
meter = "Oprac. Kazimierz Wójcicki (1807–1879)"
composer = "Muzyka: autor nieznany (melodia ludowa)"
arranger = "Aranżacja: Kazimierz Wójcicki (1807–1879)"
tagline=""
}
\score{
<<
\new Staff \with { midiInstrument = "flute" } \relative g'{
\clef treble
\key g \major
\time 2/4
\tempo 4=110
\autoBeamOff
^\markup{ \italic { Alegretto } } ^\f
g8 b b d |
d c c4 |
fis,8 a a c |
c b b4 |
g8 g' g fis |
e2 |
% ---
d8 e d c |
b2 |
^\mf
g8 b b d |
c2 |
fis,8 a a c |
b4 r \bar "|."
}
\addlyrics{ \small {
Po -- szła Pan -- na po wo --dę,
Mia --ła pię -- kną u -- ro -- dę,
Wy -- ie -- chał -- ci pan
I stłukł -- ci iey dzban,
Wy -- ie -- chał -- ci pan
I stłukł -- ci iey dzban.
} }
\new PianoStaff{
<<
\new Staff="RH" \relative c'{
\clef treble
\key g \major
\time 2/4
\tempo 4=110
_\p
r8 <d g b> r <d g b> |
r <d fis c'> r <d fis c'> |
r <d fis c'> r <d fis c'> |
r8 <d g b> r <d g b> |
<d g b>2 |
<e g c> |
% ---
<d a' c> |
<d g b> |
_\pp
<g b>4[ d] |
<fis c'>[ d] |
<fis c'>[ d] |
<g b>4 <b, d g> \bar "|."
}
\new Staff="LH" {
\clef bass
\key g \major
\time 2/4
\tempo 4=110
^\p
g,8 r g r |
d r d r |
d r d r |
g, r g r |
b,8[ g g g] |
g2 |
% ---
fis |
g |
^\pp
g4 r |
d r |
d r |
g, <g, g> \bar "|."
}
>>
}
>>
\layout{}
\midi{}
}
</score>
== Czerwony pas ==
<score raw="1" vorbis="1">
\version "2.20.0"
\header{
title = "Czerwony pas"
poet = "Słowa: Józef Korzeniowski"
composer = "Muzyka: autor nieznany"
arranger = "Aranżacja: Stefan Surzyński"
tagline = ""
}
\score{
<<
\new Staff \with {midiInstrument = "oboe"} {
\clef treble
\key f \major
\time 4/4
\tempo 4=120
<<
\new Voice = "sop" { \stemUp \autoBeamOff
f''4 e''8 f'' c''2 |
d''4 f''8 d'' c''2 |
bes'4 d''8 bes' a'4 c''8 a' |
% ---
g'4( c'') f'2 |
f''4 e''8 f'' c''2 |
d''4 f''8 d'' c''2 |
% ======
bes'4 d''8 bes' a'4 c''8 a' |
g'4( c'') f'2 |
\repeat volta 2 {
g'4 a'8 b' c''2 |
% ---
d''4 e''8 d'' c''2 |
g'4 a'8 b' c''4 d''8 e'' |
d''8( g') c''2 r4 |
% ---
f''4 e''8 f'' c''2 |
d''4 f''8 d'' c''2 |
bes'4 d''8 bes' a'4 c''8 a' |
g'4( c'') f'2 |
}
}
\new Voice = "alt" { \stemDown \autoBeamOff
^\f c''4 c''8 c'' c''2 |
bes'4 bes'8 bes' a'2 |
^\p bes'4 g'8 e' f'4 f'8 f' |
% ---
f'4( e') f'2 |
^\f c''4 c''8 c'' a'2 |
bes'4 c''8 bes' a'2 |
% ======
^\p g'4 g'8 e' f'4 f'8 f' |
f'4( e') f'2 |
\repeat volta 2 {
g'4 a'8 g' g'2 |
% ---
b'4 b'8 b' c''2 |
g'4 a'8 g' g'4 b'8 c'' |
g'4 g'2 r4 |
% ---
c''4 c''8 c'' c''2 |
bes'4 c''8 bes' a'2 |
bes'4 g'8 e' f'4 f'8 f' |
f'4( e') f'2 |
}
}
>>
}
\new Lyrics \lyricsto "sop" {
Cze -- rwo -- ny pas, za pa -- sem broń
i to -- pór, co bły -- ska z_da -- la,
we -- so -- ła myśl, swo -- bo -- dna dłoń,
to strój, to ży -- cie gó -- ra -- la.
Gdy świe -- ży liść po -- kry -- je buk
i cza -- rna gó -- ra zcze -- rnie -- je,
niech dzw -- oni flet, niech ry -- czy róg,
o -- dży -- ły na -- sze na -- dzie -- je.
}
\new Staff \with {midiInstrument = "oboe"} {
\clef bass
\key f \major
\time 4/4
\tempo 4=120
<<
\new Voice = "ten" { \stemUp \autoBeamOff
a4 bes8 a a2 |
f4 f8 f f2 |
d4 d8 c c4 c8 c |
% ---
c2 f |
a4 g8 f f2 |
f4 f8 f f2 |
% ======
d4 bes,8 c c4 c8 c |
c2 f |
\repeat volta 2 {
e4 f8 f g2 |
% ---
g4 g8 f e2 |
g4 fis8 g g4 g8 g |
g4 e2 r4 |
% ---
a4 bes8 a a2 |
f4 f8 f f2 |
d4 d8 c c4 c8 c |
c2 f |
}
}
\new Voice = "bas" { \stemDown \autoBeamOff
_\f f4 g8 f f2 |
bes,4 d8 bes, f,2 |
_\p g,4 bes,8 g, a,4 a,8 a, |
% ---
c2 f, |
_\f f,4 c8 a, f,2 |
bes,4 a,8 bes, f,2 |
% ======
g,4 g,8 g, f,4 a,8 f, |
c2 f, |
\repeat volta 2 {
c4 f8 f e2 |
% ---
g4 g,8 g, c2 |
g4 _\< fis8 f e4 d8 \! c |
_\> g4 c2 \! r4 |
% ---
f4 g8 f f2 |
bes,4 a,8 bes, f,2 |
g,4 bes,8 g, _\> f,4 a,8 f, \! |
c2 f,2 |
}
}
>>
}
>>
\layout{}
\midi{}
}
</score>
== Hej, żeglujże, żeglarzu ==
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Hej, żeglujże, żeglarzu"
poet = "Słowa: autor nieznany (kaszubska pieśń ludowa)"
meter = "Oprac. Marian Kuhn"
composer = "Muzyka: autor nieznany (kaszubska pieśń ludowa)"
arranger = "Aranżacja: Karol Hławiczka"
tagline = ""
}
\score {
\new Staff \with { midiInstrument = "flute" }
<<
\new Voice = "vox1" \relative c' {
\clef treble
\key g \minor
\time 2/4
\tempo 4 = 84
\autoBeamOff
\stemUp
f8. f16 bes4 \fermata |
f8. f16 f'4 \fermata |
^\mf d8. bes16 bes8. bes16 |
es8. d16 c4 |
c8. bes16 a8. bes16 |
c8. f,16 f4 \fermata |
bes4 ^\< d |
c8. \! c16 es4 \fermata |
d8. c16 bes8. a16 |
bes8. ^\> bes16 \! bes4 |
}
\new Lyrics \lyricsto "vox1" {
La, la, la,
la, la, la!
Woj, że -- glaj -- że, że -- glaj -- że,
ca -- ło no -- ckë pô mô -- rze,
Héj, héj, la, la, la,
ca -- ło no -- ckë pô mô -- rze.
}
\new Voice = "vox2" \relative c' {
\clef treble
\key g \minor
\time 2/4
\tempo 4 = 84
\autoBeamOff
\stemDown
f8. f16 bes4 |
f8. f16 f'4 |
bes,,4 d |
g es |
c8. c16 c8. d16 |
e8. f16 f4 \fermata |
d8. bes16 bes8. bes16 |
es8. d16 c4 |
f8. es16 d8. c16 |
d8. es16 d4 |
}
\new Lyrics \lyricsto "vox2" {
La, la, la,
la, la, la!
Woj, że -- glaj -- że
ca -- ło no -- ckë pô mô -- rze,
Woj, że -- glaj -- że, że -- glaj -- że
ca -- ło no -- ckë pô mô -- rze.
}
>>
\layout{}
\midi{}
}
</score>
== Kozak i Dziuba ==
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Kozak konia napawaw"
poet = "Słowa: autor nieznany"
meter = "Oprac. Wacław Zaleski"
composer = "Muzyka: autor nieznany"
arranger = "Aranżacja: Karol Lipiński"
tagline = ""
}
\score{
<<
\new Staff \with { midiInstrument = #"flute" } {
\new Voice = "mel" {
% \set Staff.midiInstrument = #"fiddle"
\autoBeamOff
\relative c'' {
\clef treble
\key c \major
\time 2/4
\tempo 4 = 100
% tu melodia
g8 g a b |
c c e4 |
g,8 g a b |
c4 e |
d8 f f e16[ d] |
c[ b] c[ d] e4 |
g,8 g a b |
c4 c \bar "|."
} }
}
\addlyrics { \small {
% tu liryka
Ko -- zak ko -- nia na -- pa -- waw,
Dziu -- ba wo -- du bra -- ła,
Ko -- zak so -- bi za -- śpi -- waw,
Dziu -- ba za -- pła -- ka -- ła.
} }
\new PianoStaff <<
\new Staff = "RH"
\relative c'' {
\clef treble
\key c \major
\time 2/4
\tempo 4 = 100
% tu prawa ręka
g8[ \afterGrace g { a16[ g fis g] } <f a>8 <f b>] |
<e c'>8[ <e c'>] <e g e'>4 |
g8[ g] <fis a>[ <f b>] |
<e c'>4 <g c e> |
<g b d>8 <d' f> <f g,>8[ e16 d] |
c16[ b] c[ d] e4 |
<c, f g>8[ <c f g> <c f a> <c f b>] |
<e c'>4 <e c> \bar "|."
}
\new Staff = "LH" {
%\relative c {
\clef bass
\key c \major
\time 2/4
\tempo 4 = 100
% tu lewa ręka
<g,, g,>4 <g d'> |
<c, c> <c g c'> |
<g,, g,>4 <g d'> |
<c, c> <c g c'> |
g,4 <g b d'> |
<c, c> <c g c'> |
<g,, g,> <g, g> |
<c, c> <c g c'> \bar "|."
}
>>
>>
\midi{}
\layout{}
}
</score>
== Auld Lang Syne ==
https://imslp.org/wiki/12_Scottish_Songs%2C_WoO_156_(Beethoven%2C_Ludwig_van)
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Auld Lang Syne"
poet = "Słowa tradycyjne"
meter = "Opracowanie: Robert Burns"
composer = "Melodia tradycyjna"
arranger = "Aranżacja: Ludwig van Beethoven"
tagline = ""
}
vox = \new Staff \with { midiInstrument = #"french horn" } {
\new Voice = "mel" {
% \set Staff.midiInstrument = #"fiddle"
\autoBeamOff
\relative c' {
\clef treble
\key f \major
\time 2/4
% tu melodia
\partial 8 {r8} |
r2 | r2 | r2 |
r2 | r2 | r2 |
r4 r8 c8 |
\repeat volta 3 {
f8. f16 f8 a |
g8. f16 g8 r16 a |
f16 f8. a8 c |
d4. \afterGrace f8 {f16} |
c8. a16 a8 f |
g8. f16 g8 r16 a |
f8. d16 d8 c |
f4. r8 |
r2 |
r4. {d'8} |
c16[ a8.] a8.[ f16] |
g8. f16 g8 r16 a |
bes16[ a8.] a8[ c] |
d4. f8 |
c8. a16 a8 f |
g8. f16 g8 r16 a |
f8.[ d16] d8.[ c16] |
f4. r8 |
r2 |
r2 |
r2 | }
\alternative {
{ r4 r8 c8 | }
{ r2 | r2 | r2 |
r2 | r2 | r2 |
r2 | r2 | }
}
} }
}
\addlyrics { \small {
% tu liryka
Should auld ac -- quain -- tance be for -- get
and ne -- ver brought to mind?
Should auld ac -- quain -- tance be for -- get
and days o' auld lang syne?
For auld lang syne, my dear,
For auld lang syne,
We'll take a cup of kind -- ness yet,
For auld lang syne!
} }
RH =
\new Staff = "RH"
\relative c'' {
\clef treble
\key f \major
\time 2/4
% tu prawa ręka
\partial 8 { <a c>8 } |
<a f'>8.[ <a f'>16 <a f'>8] <f' a>8 |
<f bes>8.[ <f a>16 <f bes>8 <f d'>8] |
<f c'>8.[ <f c'>16 <f c'>8 <a f'>8 |
<f a>8.[ <f a>16 <f a>8] a,8 |
<c, g'>8.[ <c g'>16] r4 |
<c g'>8.[ <c g'>16] r4 |
<e c'>8.[ <e c'>16] f8[ <a c>] |
\repeat volta 3 {
<a f'>8 r8 <a f'>8[ <c a'>] |
<bes g'>8 r8 <bes g'>8 r8 |
<a f'>8 r8 <f' a>8[ <a c>] |
<bes d>4. <d f>8 |
<a c>8 r8 <f a>8[ <a, f'>] |
<bes g'>8 r8 <bes g'> r8 |
<a f'>8.[ <bes d>16] <bes d>8[ <a c>] |
<a f'>4( <a f>16)[ c d e] |
f8.[ d16] d8\staccato[ c\staccato ] |
d8\staccato[ c\staccato d\staccato] <bes' d>8 |
<a c>8 r <c, a'> r |
<c g'> r <c g'> r |
<c bes'> r <c a'>8.[ <a c>16] |
<bes d>4 bes16[ c d <d f>] |
<a c>8[ <f a> <f a> <a, f'>] |
<bes g'>8 r <bes g'> r |
<a f'> r <bes d>8.[ <a c>16] |
<a f'>4.
d16[ e] |
%---
f16[ d8.] d8.[ c16] |
f8.[ e16] a8.[ g16] |
<c f>8.[ <c e>16] <c a'>8.[ <c g'>16] |
}
\alternative {
{
r16 g'16[ e c] bes[ a c bes] |
}
{
<c f>8.[ <c f>16 <c f>8] <c a'>8 |
<c g'>8.[ <c g'>16 <c g'>8] <g' bes>8 |
<f a>8.[ <e g>16 <f a>8] <f bes d>8 \fermata |
bes,8.[ g16] g8[ e] |
r16 c[ e g] e[ g b c] |
r16 f,[ a c] a[ c e f] |
r16 e[ g bes] <bes e>8[ <a f'>] |
<a f'>16[ <a f'>8.] <bes d>8.[ <a c>16] |
<a f'>4. \fermata \bar "|."
}
} % of alternative
}
LH =
\new Staff = "LH"
%\relative c {
{
\clef bass
\key f \major
\time 2/4
% tu lewa ręka
\partial 8 { <f, f>8 } |
<f, f>8.[ <f, f>16 <f, f>8] <f, f>8 |
<d, d>8.[ <c, c>16 <d, d>8 <bes,, bes,>8 ] |
<a,, a,>8.[ <a,, a,>16 <a,, a,>8] <f,, f,>8 |
<c, c>8.[ <c, c>16 <c, c>8] r8 |
r4 <c g>8.[ <c g>16] |
r4 <c g>8.[ <c g>16] |
r8. <c g>16 <f a>8[ f] |
\repeat volta 3 {
<f, f>8 r8 <f, f>8[ <f, f> ]
<c, c>8 r8 <c, c>8 r8 |
<f, f>8 r8 <f, f>8[ <f, f> ]
<bes,, bes,>4. <bes,, bes,>8 |
<c, c>8 r8 <c, c>8[ <c, c>] |
<c, c>8 r8 <c, c>8 r8 |
<f, f>8.[ <bes,, bes,>16] <bes,, bes,>8[ <f, f>] |
<f, f>4. r8
\clef treble
r8. bes'16 bes'8\staccato[ a'\staccato] |
bes'8\staccato[ a'\staccato bes'\staccato ]
% ---
\clef bass <bes, bes>8 |
<f, f>8 r <f, f> r |
<e, e> r <e, e> r |
<g, g>8 r <f, f>8.[ <f, f>16] |
<bes, f>4 r8 <bes, bes>8 |
<c c'>8[ <c c'> <c c'> <c c'>] |
<c, c>8 r <c, c> r |
<d, d> r <bes,, bes,>8.[ <f, f>16] |
f4. r8 |
% ---
r8 bes,8[ b, c] |
d[ c] f[ e] |
g[ f] \clef treble c' bes' |
}
\alternative {
{ r2
}
{
a'8.[ a'16 a'8] f' |
c'8.[ c'16 c'8] c'8 \clef bass |
d'8.[ <d d'>16 <d d'>8] <bes, bes>8 \fermata |
r2 |
bes8.[ g16] g8[ e] |
c8.[ a,16] a,8[ f,] |
c8.[ <c g>16] <c g>8[ <f, f>] |
<d, d>8[ <des, des>] <bes,, bes,>8.[ <f, f>16] |
<f, f>4. \fermata \bar "|."
}
} % of alternative
}
music =
<<
\vox
\new PianoStaff <<
\RH
\LH
>>
>>
\score{
\music
\layout{}
}
\score{
\unfoldRepeats
\music
\midi{}
}
</score>
== Їхав козак за Дунай / Schöne Minka, ich muß scheiden ==
https://imslp.org/wiki/10_National_Airs_with_Variations,_Op.107_(Beethoven,_Ludwig_van) p. 35
https://uk.wikipedia.org/wiki/%D0%87%D1%85%D0%B0%D0%B2_%D0%BA%D0%BE%D0%B7%D0%B0%D0%BA_%D0%B7%D0%B0_%D0%94%D1%83%D0%BD%D0%B0%D0%B9
<score sound="1">
\new Staff {
\time 2/4
\clef treble
\set Staff.midiInstrument = #"flute"
\tempo Andante 4 = 85
\set Score.tempoHideNote = ##t
|
a''8\p
a''8
a''8
a''8
|
a''8
c'''8
b''8
a''8
|
gis''8
gis''8
gis''8
gis''8
|
gis''8
b''8
a''8
gis''8
|
a''8
a''8
a''8
a''8
|
a''8
c'''8
b''8
a''8
|
gis''8
e'''8
e'''8
gis''8
|
a''4
b'4\rest
|
c'''8
c'''8
c'''8
c'''8
|
c'''8
e'''8
d'''8
c'''8
|
b''8
b''8
b''8
b''8
|
b''8
d'''8
c'''8
b''8
|
a''8
a''8
a''8
a''8
|
a''8
c'''8
b''8
a''8
|
gis''8
e'''8
e'''8
gis''8
|
a''4
b'4\rest
}
</score>
<br>
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Їхав козак за Дунай"
poet = "Семен Климовський"
composer = ""
arranger = "Ludwig van Beethoven"
tagline = ""
}
\score{
<<
\new Staff \with { midiInstrument = #"flute"} {
\new Voice = "mel" {
% \set Staff.midiInstrument = #"fiddle"
% \set Staff.midiInstrument = #"flute"
\autoBeamOff
\relative c''' {
\clef treble
\key c \major
\time 2/4
\tempo Andante 4 = 85
\set Score.tempoHideNote = ##t
% tu melodia
a8 a a a |
a c b( a) |
gis gis gis gis |
gis b a( gis) |
a8 a a a |
a c b( a) |
gis e' e gis, |
a4 r4 |
c8[ c c c] |
c8[ e d c] |
b8[ b b b] |
b8[ d c b] |
a8[ a a a] |
a[ c b a] |
gis[ e' e gis,] |
a4 r4 |
} }
}
\addlyrics{ \small {
% tu liryka
Ї -- хав ко -- зак за Ду -- най,
Ска -- зав: «Дi -- вчи -- но, про -- щай!
Ти, ко -- ни -- ку во -- ро -- не -- нький,
Не -- си та гу -- ляй!»
}
}
\new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\key c \major
\time 2/4
\tempo Andante 4 = 85
\set Score.tempoHideNote = ##t
% tu prawa ręka
^\p
<e a>8[ <e a> <e a> <e a>] |
<< { e2 } { a8[ c b a] } >> |
<e gis>8[ <e gis> <e gis> <e gis>] |
<< { e4. e8 } { gis8[ b a gis] } >> |
<e a>8[ <e a> <e a> <e a>] |
<< { e2 } { a8[ c b a] } >> |
<e gis>8[ <e e'> <e e'> <e gis>] |
<e a>4 r4 |
<e g c>8[ <e g c> <e g c> <e g c>] |
<< {<e g>4 r4 } { c'8[ e d c] } >> |
<d, g b>8[ <d g b> <d g b> <d g b>] |
<< { d4 r4 } { <gis b>8[ d' c b] } >> |
<e, a>8[ <e a> <e a> <e a>] |
<< { e2 } { a8[ c b a] } >> |
<e gis>8[ <e e'> <e e'> <e gis>] |
<c e a>4 r4 |
}
\new Staff = "LH"
\relative c' {
\clef bass
\key c \major
\time 2/4
\tempo Andante 4 = 85
\set Score.tempoHideNote = ##t
% tu lewa ręka
^\p
<a c>8[ <a c> <a c> <a c>] |
<a c>2 |
<b d>8[ <b d> <b d> <b d>] |
<b d>4. <e, b' d>8 |
<a c>8[ <a c> <a c> <a c>] |
<a c>2 |
<e b'>8[ <e b'> <e b'> <e b'>] |
<a c>8[ c c c,] |
c4 c |
c r4 |
g'4 g |
e r4 |
<a c>8[ <a c> <a c> <a c>] |
<a c>4. <a c>8 |
<e b'>8[ <e b'> <e b'> <e b'>] |
a,8[ a' e c] \bar "|."
}
>>
>>
\midi{}
\layout{}
}
</score>
== Marsylianka ==
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = ""
poet = ""
composer = ""
arranger = ""
tagline = ""
}
\score{
<<
\new Staff {
\new Voice = "mel" \with {
\remove "Forbid_line_break_engraver"
} {
\set Staff.midiInstrument = #"flute"
\autoBeamOff
\relative g' {
\clef treble
\key c \major
\time 4/4
\tempo 4 = 120
\autoBeamOff
% tu melodia
% 0-3
\partial 2 s8. g16^\mf e8. g16 |
c4 c d d |
% g4. f8 e c8 e8. c16 |
g4. e8 c c8 e8. c16 |
a4 f'2 d8. b16 | \break
% 4-7
c2 r4^\< c8. d16 |
e4 e e f8. e16 |
e4 d8 \! r4 r8 d8.\f e16 |
f4 f f g8. f16 | \break
% 8-11
\grace {f} e2 r4 g8.^\ff g16 |
g4( e8.) c16 g'4 e8. c16 |
g2 r8. g16^\p ^\< g8. g16 |
b4. d8 g4. d8 | \break
% ---------
% 12-15
d8[ c] c \! r4. as4^\f |
g4 c8. c16 c4 b8. c16 |
d2 r4 d4^\p \< |
es4. es 8 es es f g | \break
% 16-19
d2 \! r4 es8^\f d |
c4 c es d8. c16 |
c4 b8 r4. r8. g'16^\ff |
^\< g2( g8) \! e c8. c16 | \break
% 20-23
d2 r4 r8 r16 g16 |
g2( g8) e c8. c16 |
d2 r4 g4^\p |
\< c,2 \! r4 c4 | \break
% 24-27
^\< e2 \! r2 |
\f f2 g4 a |
b,2 r4 r8 r16^\ff a'16 |
g2( g8) e f d | \break
% 28-31
c2 r2 | r1 |
r1 | r1 | \break
% 32-35
r1 | r1 |
r1 | r1 \bar "|."
}
}
\addlyrics {
_ _ A -- llons, en -- fants de la Pa -- trie!
Le jour de gloire est a -- rri -- vé.
Con -- tre nous de la ty -- ra -- nni -- e
L'é -- ten -- dard san -- glant est le -- vé,
L'é -- ten -- dard san -- glant est le -- vé!
En -- ten -- dez-vous dans les cam -- pa -- gnes
Mu -- gir ces fé -- ro -- ces so -- ldats ?
Ils vie -- nnent ju -- sque dans nos bras
É -- go -- rger vos fils, vos com -- pa -- gnes.
Aux a -- rmes, ci -- toy -- ens!
Fo -- rmez vos ba -- tai -- llons!
Ma -- rchons! Ma -- rchons!
Qu'un sang im -- pur
A -- breu -- ve nos si -- llons.
}
}
\new PianoStaff <<
\new Staff = "RH" {
%\with { midiInstrument = "harpsichord" } {
\clef treble
\key c \major
\time 4/4
\tempo 4 = 120
\relative c' {
\autoBeamOff
% tu prawa ręka
% 0-3
\partial 2 s8. <e g>16^\mf[ <e g>8. <d g>16] |
<e g c>4 <e g c> <g b d> <g b d> |
<c e g>4.( <b d g>8) <c e>8.[ <g e'>16] <g e'>8.[ <bes g>16] |
<a f'>4 <a f'>2 <b f'>4 |
% 4-7
<c e>16[ c b c] d[ c b c] c4^\< b8.[ d16] |
<c e>4 <c e> <c e> <d f>8.[ <c e>16] |
d16[ g fis g] a[ g fis g] g,8[ <b d>] \! <b d>8.^\f[ <c e>16] |
<d f>4 <d f> <d f> <e g>8.[ < d f>16] |
% 8-11
\grace { <d f> } <c e>16[ c b c] d[ c b c] c4^\ff <g g'>8.[ <g g'>16] |
<g g'>4( <e e'>8.[) <c c'>16] <g' g'>4( <e e'>8.[) <c c'>16] |
<g' g'>16[ g' fis e] d[ c b a] g8.^\p[ g16 g8. g16] |
<b d g>4. <g d'>8 <g f'>4. <f d'>8 |
% ---------
}
% 12-15
<f' d''>8[ <e' c''>] <e' c''>4 r4 <as' e''> |
<g' e''>4 <c'' e'>8.[ <c'' e''>16] <c'' e''>4 <b'' d''>8.[ c''16 ] |
g'16[ g'' fis'' g''] a''16[ g'' fis'' g''] g'4 d''^\p |
\relative c''{ es4.^\< es8 es8[ es es <es g>] |
% 16-19
<b d g>8[ <b d> <b d> <b d>] <b d>4 \! <c es>8^\f[ <g d'>] |
<g c>4 <c es> <es g> <d f>8.[ <c es>16] |
<c es>4 <b d>8 r4. r8. <g g'>16^\ff |
<g g'>2^\<( <g g'>8[) <e' g>] \! <c e>8.[ <c e>16] |
% 20-23
<g d'>8[ g' g g] g4 r8. <g, g'>16 |
<g g'>2( <g g'>8.[) <e' g>16] <c e>8.[ <c e>16]^\p |
<b d>8[ g' g g] g4 r8 <g, f'>8 |
e'8[ c c b] a8[ a'16 g] a8[ b] |
% 24-27
c[ <c, e> <c e> <c e>] <c e>4 r4 |
<d f>2^\f <d g>4. <c a'>8 |
<g g'>8[ g g] g g[ b d^\ff r16 f16] |
<c e>2( <c e>8[) <e, c'>] <f d'>[ <d b'>] |
% 28-31
^\mf <e c'>4 c'8.[ c16] <g d'>4 <g d'>8.[ <g d'>16] |
<c e>8[ e16 f] g8[ g] g[ f e d] |
<e, e'>8[ <e e'>16 <e e'>] <e e'>8[ <e e'>] <g d'>8[ <g d'>16 <g d'>] <g d'>8[ <g d'>] |
<c e>8[ e16 f] g8[ g] g[ f e d] |
% 32-35
<c e>8[ <c e>16 <d f>] <e g>8[ <e g>] <e g>[ <d f> <c e> <b d>] |
<c e>8[ a'16 b] c8[ a] g[ f e d] | c8[ <e, g c>16 <e g c>] <e g c>8[ <e g c>] |
<e g c>2 | <e g c>2 r2 \bar "|."
}
}
\new Staff = "LH" {
%\with { midiInstrument = "harpsichord" } {
\relative c {
\clef bass
\key c \major
\time 4/4
\tempo 4 = 120
% tu lewa ręka
% 0-3
\partial 2 s8. c16[ e8. g16] |
c,4 c' b g |
c8[ c g e] c[ e c e] |
d4 d2 a'4 |
% 4-7
c4 a c, r4 |
r c e c |
g'4 d g r |
r g b g |
% 8-11
c g c, g'8.[ g16] |
g4( e8.[) c16] g'4( e8.[) c16] |
% ---------
a8[ c' a f] c4 <c c'> |
<c c'>2. fis4 |
% 12-15
g4 d g, <g' b> |
<g c>4. c8 c[ c d c] |
b[ a g f] es 4 g8[ f] |
es4 g c8[ c,] f8.[ fis16] |
% 16-19
g8[ g d b] g4 r8. g'16 |
g2( g8[) c,] e8.[ c16] |
g8[ g' g g] g4 r8. g16 |
g2( g8[) c,] e8.[ c16] |
% 20-23
g8[ g' g g] g4 r8. g16 |
g2( g8[ c,] e8.[ c16] |
%
f,8[ f' d b] g4 g |
r8 c8[ e g] e[ c e g] |
% 24-27
c8[ c, e g] e[ c e g] |
f2 f4. d8 |
g8[ g g f] e4 r8 d8 |
c4 e g g, |
% 28-31 ?
c4 c' g g, |
c e g g, |
c8[ e g c] g,[ b d g] |
c,4 e g g, |
% 32-35
c4 e g g, |
c f d g |
c, c' g e |
c2 r \bar "|."
} }
>>
>>
\midi{}
\layout{}
}
</score>
== God Save the Queen ==
https://en.wikisource.org/w/index.php?title=Page:Childs_own_music_book.djvu/287&action=edit&redlink=1
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "God Save the Queen"
poet = "Słowa: autor nieznany"
composer = "Muzyka: autor nieznany"
arranger = "(Pierwsze wykonanie w 1745 r.)"
tagline = ""
}
\score{
<<
\new Staff \with { midiInstrument = "flute" } {
\tempo 4 = 80
\clef treble
\key g \major
\time 3/4
\new Voice = "mel"
<<
\relative g' {
g4 g a | fis4. g8 a4 |
b4 b c | b4. a8 g4 |
a4 g fis | g2. |
d'4 d d | d4. c8 b4 |
c4 c c | c4. b8 a4 |
b4 c8[( b]) a[( g]) | b4. c8 d4 |
e8[( c]) b4 a | g2. |
}
\relative g' {
d4 e e | d4. e8 fis4 |
g4 g a | g4. fis8 e4 |
e4 d d | d2. |
b'4 b b | b4. a8 g4 |
fis4 a fis | <fis a>4. g8 fis4 |
g4 g8 s s s | g4. fis8 g4 |
g8[( a]) g4 fis | d2. |
}
\relative c' {
b4 b c | s4. d8 d4 |
d4 e e | d4. c8 b4 |
c4 b c | b2. |
g'4 g g | g4. a8 d,4 |
d4 d d | d4. d8 d4 |
d4 e8[( d]) c[( b]) | d4. d8 d4 |
e8[( e]) d4 c | b2. |
}
>>
}
\addlyrics {
God save our gra -- cious Queen,
Long live our no -- ble Queen,
God save the Queen:
Send her vi -- cto -- ri -- ous,
Ha -- ppy and glo -- ri -- ous,
Long to _ reign _ o -- ver us:
God _ save the Queen!
}
\new PianoStaff <<
\new Staff = "RH"
{
\tempo 4 = 80
\clef treble
\key g \major
\time 3/4
% tu prawa ręka
\new Voice = "mel2"
<<
\relative g' {
g4 g a | fis4. g8 a4 |
b4 b c | b4. a8 g4 |
a4 g fis | g2. |
d'4 d d | d4. c8 b4 |
c4 c c | c4. b8 a4 |
b4 c8[ b] a[ g] | b4. c8 d4 |
e8[ c] b4 a | g2. |
}
% \relative g' {
% d4 e e | d4. e8 fis4 |
% g4 g a | g4. fis8 e4 |
% e4 d d | d2. |
% b'4 b b | b4. a8 g4 |
% fis4 a fis | <fis a>4. g8 fis4 |
% g4 g8 s s s | g4. fis8 g4 |
% g8[ a] g4 fis | d2. |
% }
\relative c' {
b4 b c | s4. d8 d4 |
d4 e e | d4. c8 b4 |
c4 b c | b2. |
g'4 g g | g4. a8 d,4 |
d4 d d | d4. d8 d4 |
d4 e8[ d] c[ b] | d4. d8 d4 |
e8[ e] d4 c | b2. |
}
>>
}
\new Staff = "LH"
%\relative c
{
\clef bass
\key g \major
\time 3/4
% tu lewa ręka
<g, g>4 <e, e> <c, c> | <d, d>2 <d, d>4 |
<g, g>4 <e, e> <c, c> | <d, d>4. <dis, dis>8 <e, e>4 |
<c, c>4 <d, d> <d, d> | <g, g>2. |
g,4 b, d | <g, g>2 <g, g>4 |
d4 fis a | d2 d4 |
<g, g>4 <g, g> <g, g> | <g, g>4. <a, a>8 <b, b>4 |
c'8[( c]) d4 <d, d> | <g, g>2. |
}
>>
>>
\midi{}
\layout{}
}
</score>
== Hymn Ukrainy ==
https://commons.wikimedia.org/wiki/File:Shche_ne_vmerla_Ukraina.png
<score raw = "1" vorbis = "1">
\version "2.12.3"
\header {
title = "Hymn Ukrainy"
poet = "Słowa: Pawło Czubynski"
composer = "Muzyka: Mychajło Werbycki"
tagline = ""
}
\layout {
indent = #0
}
akordy = \chordmode {
\set chordChanges = ##t
bes,2 f, | bes, fis,:dim |
g,:m d, | g,:m f, |
bes,1 | bes,2 c,:m6 |
d, d, | g,1:m |
d,1 | g,2:m d, |
g,:m f,4 f,:7 | bes,1 |
d,1 | g,2:m d, |
g,:m f, | g,1:m |
\repeat volta 2 {
bes,1 | f,2 f,4. fis,8:dim |
g,2:m f, | bes, f,:7 |
bes,1 | f,2 f,4. fis,8:dim |
g,2:m d | g,1:m |
}
}
global = {
\autoBeamOff
\key g \minor
% es bes
\tempo 4 = 90
}
melodia = { \relative c'' {
\global
<<
\new Voice = "hi" { \stemUp
d4. d8 d[^( c d]) es | f4. es8 d4 c4 |
bes4 <bes d> a d | g,4.^( a8 bes4) <a c> |
d4. d8 d[^( c d]) es | f4. es8 d4 c4 |
bes4 <bes d> a d | g,2 g4 r4 |
a4 a d8[^( c bes]) a | g[^( a bes]) g a4 a |
bes4 bes <a c> <a c> | d2 d4 r4 |
a4 a d8[^( c bes]) a | g[^( a bes]) g a4 a |
bes4 bes a c | g4.^( a8 bes[ c d]) es |
\repeat volta 2 {
f4. e8 f4 d | c c f8[^( es d]) c |
bes4 bes c c | d4.^( c8 d4) es |
f4. e8 f4 d | c c f8[^( es d]) c |
bes4 <bes d> a d | g,2 g4 r4 |
}
}
\new Voice = "lo" { \stemDown
bes4. bes8 bes[_( a bes]) c | d4. c8 bes4 a |
g4 g a fis | g4. fis8 g4 f |
bes4. bes8 bes[_( a bes]) c | d4. c8 bes4 a |
g4 g a fis | g2 g4 r4 |
fis4 fis fis8[_( a g]) fis | g4. g8 fis4 fis |
g4 g f f | bes2 bes4 r4 |
fis4 fis fis8[_( a g]) fis | g4. g8 fis4 fis |
g4 g f f | g4._( fis8 g[ a bes]) c |
\repeat volta 2 {
d4. cis8 d4 bes | a a a8[_( c bes]) a |
g4 g a f | bes4._( a8 bes4) c |
d4. cis8 d4 bes | a a a8[_( c bes]) a |
g4 g fis fis | g2 g4 r4 |
}
}
>>
} }
tekst = \lyricmode {
Ще не вме -- рла У -- кра -- ї -- ни і сла -- ва, і во -- ля,
Ще нам, бра -- ття мо -- ло -- ді -- ї, у -- смі -- хне -- ться до -- ля.
Зги -- нуть на -- ші во -- рі -- жень -- ки, як ро -- са на со -- нці.
За -- па -- ну -- єм і ми, бра -- ття, у сво -- їй сто -- ро -- нці.
Ду -- шу й_ті -- ло ми по -- ло -- жим за на -- шу сво -- бо -- ду,
І по -- ка -- жем, що ми, бра -- ття, ко -- за -- цько -- го ро -- ду.
}
\score {
<<
\new ChordNames { \akordy }
\new Voice = "Air" { \melodia }
\new Lyrics \lyricsto "hi" { \tekst }
>>
\midi {}
\layout {}
}
</score>
== Śród opok i jarów ==
https://rcin.org.pl/dlibra/show-content/publication/edition/33975?id=33975 pieśń 66
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = ""
poet = ""
composer = ""
arranger = ""
tagline = ""
}
\score{
<<
%\new Voice = "mel" {
% \set Staff.midiInstrument = #"fiddle"
%\autoBeamOff
%\relative c'' {
%\clef treble
%\key d \major
%\time 2/4
%\tempo 4 = 120
% tu melodia
%} }
% \new Lyrics \lyricsto mel \lyricmode {
% tu liryka
%}
\new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\key d \major
\time 2/4
\tempo 4 = 120
\autoBeamOff
% tu prawa ręka
\partial 8 a8 | <fis d'>4 d'8 fis | <fis a>4 <d fis>8 <d fis> |
<cis e>8[( a']) <cis, e> a' | <a, fis'>4 <fis d'>8 a8 |
<fis d'>4 d'8 fis | <fis a>4 <d fis>8 <d fis> |
<cis e>8[( a']) <e a cis>8 <d gis b>8 | a'8 a r8 a,8 |
<a cis fis>4 <a cis fis>8 <a cis fis>8 ] | <b d>4 <b d>8 <b d>8 |
<b e g>4 <b e g>8 <b e g> | <a cis e>4 r8 a8 |
<a cis fis>4 <a cis fis>8 <a cis fis> | <b e g>4 <b e g>8 <b e g> |
% ?
<cis e>4 <cis e>8 <cis e> | <a d>4 r4 |
d4 a8 fis' | d4 a8 fis' |
a16 g e8 a16 g e8 | a16 g e8 a16 g e8 |
d4 a8 fis' | d4 a8 fis' |
a16 g e8 a16 g e8 | a16 g e8 a16 g e8 |
fis8 d a'4 | fis8 d a'4 |
<fis, a d>4.( <a fis'>8 ) | <fis a d>4 r4 \bar "|."
}
\addlyrics { \small {
Śród o -- pok i ja -- rów i plo -- nów i gło -- gów,
Przy dźwię -- ku o -- ga -- rów i ru -- sznic i ro -- gów,
Na ko -- niu, co w_cwa -- le so -- ko -- li ma lot,
I z_bro -- nią, co w_strza -- le hucz -- niej -- sza nad grzmot!
Da -- lej -- że, da -- lej -- że,
z_tro -- pu w_trop, z_tro -- pu w_trop,
z_tro -- pu w_trop, z_tro -- pu w_trop!
Da -- lej -- że, da -- lej -- że,
z_tro -- pu w_trop, z_tro -- pu w_trop,
z_tro -- pu w_trop, z_tro -- pu w_trop!
Z_tro -- pu w_trop, z_tro -- pu w_trop, hop, hop!
} }
\new Staff = "LH"
{
\clef bass
\key d \major
\time 2/4
% tu lewa ręka
\autoBeamOff
\partial 8 r8 | <d, a, d>4 fis8[ a] | <d a d'>4. r8 |
<a, a>8[ e] <a, a>8[ e] | <d, d>8[ a,] <d, d>8 r8 |
<d, a, d>4 fis8[ a] | <d a d'>4. r8 |
<e, e>4 <e, e>8[ <e, e>] | <a,, a,>4 r8 a,8 |
<fis, fis>4 <fis, fis>8[ <fis, fis>] | <b, fis>4 <b, fis>8[ <b, fis>] |
<e, e>4 <e, e>8[ <e, e>] | a,4 a,8[ a, ] |
<fis, fis>4 <fis, fis>8 <fis, fis> | <e, e>4 <e, e>8[ <e, e>] |
% ?
<a, g>4 <a, g>8[ <a, g> ] | <d fis>4 r4 |
% <g, g>4 <g, g>8[ <g, g> ] | <d fis>4 r4 |
<d, a, d>4 <d, a, d>8[ <d, a, d> ] | <d, a, d>4 <d, a, d>8[ <d, a, d> ] |
<a, cis e>8 r8 <a, cis e>8 r8 | <a, cis e>8 r8 <a, cis e>8 r8 |
<d, a, d>4 <d, a, d>8[ <d, a, d> ] | <d, a, d>4 <d, a, d>8[ <d, a, d> ] |
<a, cis e>8 r8 <a, cis e>8 r8 | <a, cis e>8 r8 <a, cis e>8 r8 |
<d fis>8[ <d fis> ] <a, e>4 | <d fis>8[ <d fis> ] <a, e>4 |
<d, a, d>4. <d, a, d>8 | <d, a, d>4 r4 \bar "|."
}
>>
>>
\midi{}
\layout{}
}
</score>
<!--
== Prząśniczka ==
https://polona.pl/item/trzeci-spiewnik-domowy-no-7-przasniczka,ODE2Mjg2MTk/2/#info:metadata
<score vorbis="1">
<<
\new Staff \with { midiInstrument = "flute" } {
\key fis \minor
\time 2/4
\tempo 4 = 135
\autoBeamOff
\relative fis' {
r2 | r |
\repeat volta 2 {
fis8.^\mf fis16 a8 b | cis4 fis,8 fis | d'4 cis8 b | cis4. cis8 |
cis8. gis16 cis8 gis | a4 fis8 a | cis4 gis8 gis | a4. cis8 |
e8.^\> d16 cis8. b16\!| a4. a8 | b8. b16 gis8 e | cis'4. r8 |
cis8. d16 cis8. cis16 | cis4^\> fis8\! r8 | d8. b16 gis 8 cis | fis,4. r8 |
r2 | r | r | }
fis8.^\mf fis16 a8 b | cis4 fis,8 fis | d'4 cis8 b | cis4. cis8 |
cis8. gis16 cis8 gis | a4 fis8 a | cis4 gis8 gis | a4. cis8 |
e8. d16 cis8. b16 | a4. a8 | b8. b16 gis8 e | cis'4. r8 |
cis8. d16 cis8. cis16 | cis4^\> fis8\! r8 | d8. b16 gis 8 cis | fis,4. r8 |
r2 | r | r |
fis8.^\mf fis16 a8 b | cis4 fis,8 fis | d'4 cis8 b | cis4. cis8 |
cis8. gis16 cis8 gis | a4 fis8 a | cis4 gis8 gis | a4. cis8 |
e8. d16 cis8. b16 | a4. a8 | b8. b16 gis8 e | cis'8 r8 r4 |
\tempo "Lento" 4 = 90 cis8. d16 cis8. bis16 | cis4^\> fis8\! r8 | \tempo "Presto" 4 = 135 d8.^\f b16 gis 8 cis | fis,4. r8 |
r2 | r | r | r | r | r \bar "|."
}
}
\addlyrics { \small
\set stanza = "1. " U przą -- śni -- czki sie -- dzą jak a -- nioł dzie -- we -- czki,
Przę -- dą so -- bie przę -- dą je -- dwa -- bne ni -- te -- czki.
Kręć się, kręć wrze -- cio -- no! wić się to -- bie, wić!
Ta pa -- mię ta le -- piej, czy -- ja dłu -- ższa nić.
\set stanza = "3. " Gła -- dko i -- dzie przę -- dza, we -- so -- ło dzie -- wczy -- nie,
Pa -- mię -- ta -- ła trzy dni o wie -- rnym chło -- pczy -- nie.
Kręć się, kręć wrze -- cio -- no! wić się to -- bie, wić!
Ta pa -- mię ta le -- piej, czy -- ja dłu -- ższa nić.
\set stanza = "4. " In -- ny się mło -- dzie -- niec po -- dsu -- wał z_u -- bo -- cza,
I in -- ne -- mu ra -- da dzie -- wczy -- na o -- cho -- cza.
Kręć się, kręć wrze -- cio -- no! pry -- sła wą -- tła nić...
Wsty -- dem dzie -- wczę pło -- nie___– wstydź się dzie -- wczę, wstydź!
}
\addlyrics {
\small \set stanza = "2. " Po -- szedł do Kró -- le -- wca mło -- dzie -- niec z_wi -- ci -- ną,
Łza -- mi się za -- le -- wał, że -- gna -- jąc z_dzie -- wczy -- ną.
}
\new GrandStaff {
<<
\new Staff {
\key fis \minor
\time 2/4
\tempo 4=135
\autoBeamOff
\relative fis'' {
fis16_\p([ gis fis cis] a[ cis fis a] | fis[ gis fis cis] a[ cis fis a]) |
\repeat volta 2 {
fis([ gis fis cis] a[ cis fis a] | fis[ gis fis cis] a[ cis fis a] |
fis[ gis fis b,] b[ d fis b] | fis[ gis fis cis] a[ cis fis a]) |
gis([ a gis eis] cis[ eis gis b] | a[ b a fis] cis[ fis a cis] |
gis[ a gis eis] cis[ eis gis b] | a[ gis fis gis] a[ fis cis fis]) |
e([ a e d] cis[ e cis b] | a[ cis e a] a,[ cis e a]) |
b,([ e b e] b[ e b e] | cis'[ b a b] cis[ a e a]) |
gis([ a gis eis] cis[ eis gis b] | a[ b a gis] fis[ gis fis e] |
d[ e d cis] b[ a gis a] | fis[ a cis fis] fis,[ b d fis]) |
fis,[ a cis fis] fis,[ b d fis] | cis[ fis a cis] b,[ d gis b] |
a,[ cis fis a] gis,[ cis eis gis] |
}
fis16[ gis fis cis] a[ cis fis a] | fis[ gis fis cis] a[ cis fis a] |
fis[ gis fis b,] b[ d fis b] | fis[ gis fis cis] a[ cis fis a] |
gis[ a gis eis] cis[ eis gis b] | a[ b a fis] cis[ fis a cis] |
gis[ a gis eis] cis[ eis gis b] | a[ gis fis gis] a[ fis cis fis] |
e[ a e d] cis[ e cis b] | a[ cis e a] a,[ cis e a] |
b,[ e b e] b[ e b e] | cis'[ b a b] cis[ a e a] |
gis[ a gis eis] cis[ eis gis b] | a[ b a gis] fis[ gis fis e] |
d[ e d cis] b[ a gis a] | fis[ a cis fis] fis,[ b d fis] |
fis,[ a cis fis] fis,[ b d fis] | cis[ fis a cis] b,[ d gis b] |
a,[ cis fis a] gis,[ cis eis gis] |
% ---
fis16[ gis fis cis] a[ cis fis a] | fis[ gis fis cis] a[ cis fis a] |
fis[ gis fis b,] b[ d fis b] | fis[ gis fis cis] a[ cis fis a] |
gis[ a gis eis] cis[ eis gis b] | a[ b a fis] cis[ fis a cis] |
gis[ a gis eis] cis[ eis gis b] | a[ gis fis gis] a[ fis cis fis] |
e[ a e d] cis[ e cis b] | a[ cis e a] a,[ cis e a] |
b,[ e b e] b[ e b e] | <a e cis'>8 r8 r4 |
\tempo "Lento" 4 = 90 r2 | a16[ b a gis] fis[ gis fis e] | \tempo "Presto" 4 = 135 d[ e d cis] b[ a gis a] |
fis[ a cis b] a[ cis fis gis] | a[ gis fis cis] a[ cis fis gis] |
a[ gis fis cis] a[ cis fis gis] | a[ gis fis cis] a[ cis fis gis] |
a8 r8 r4 | <cis, gis' cis>8 r8 r4 | <cis gis' gis'>8 r8 r4 \bar "|."
}
}
\new Staff {
\clef "bass"
\key fis \minor
\time 2/4
\tempo 4=135
\autoBeamOff
\stemUp fis,8^\p[ \stemDown <fis a>] cis[ <fis a>] | \stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] |
\repeat volta 2 {
\stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] | \stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] |
\stemUp fis,8[ \stemDown <fis b>] d[ <fis b>] | \stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] |
eis8_([ <gis cis'>] cis[ <gis b cis'>] | fis[ <a cis'>] cis[ <a cis'>] |
eis8[ <gis cis'>] cis[ <gis b cis'>]_) | fis[ <a cis'>] fis[ <a cis'>] |
a,8[ <e cis'>] a,8[ <e cis'>] | a,8[ <e cis'>] a,8[ <e cis'>] |
\stemUp a,8 \stemDown <e gis d>[ <e gis d> <e gis d>] | a,[ <e a cis'>] a,[ <a cis'>] |
eis8[ <gis b cis'>] cis[ <gis b cis'>] | fis[ <a cis'>] a,[ <cis fis a>] |
b,8[ <d fis gis>] cis[ <eis gis a>] | fis,8[ <fis a>] d[ <fis b>] |
fis,8[ <fis a>] d[ <fis b>] | a,_([ <cis fis a>] b,[ <d fis gis>] | cis_)[ <fis a>] cis[ <gis b>] |
}
\stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] | \stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] |
\stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] | \stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] |
\stemUp eis[ <gis cis'>] cis[ <gis b cis'>] | fis[ <a cis'>] cis[ <a cis'>] |
eis[ <gis cis'>] cis[ <gis b cis'>] | fis[ <a cis'>] fis[ <a cis'>] |
\stemDown a,[ <e cis'>] a,[ <e cis'>] | a,[ <e cis'>] a,[ <e cis'>] |
a,8 <e gis d'>[ <e gis d'> <e gis d'>] | a,[ <e a cis'>] a,[ <a cis'>] |
eis[ <gis b cis'>] cis[ <gis b cis'>] | fis[ <a cis'>] a,[ <cis fis a>] |
b,[ <d fis gis>] cis[ <eis gis b>] | \stemUp fis,8[ \stemDown <fis a>] d[ <fis b>] |
\stemUp fis,8[ \stemDown <fis a>] d[ <fis b>] | a,[ <cis fis a>] b,[ <d fis gis>] | cis[ <fis a>] cis[ <gis b>] |
\stemUp fis,8^\p[ \stemDown <fis a>] cis[ <fis a>] | \stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] |
\stemUp fis,8[ \stemDown <fis b>] d[ <fis b>] | \stemUp fis,8[ \stemDown <fis a>] cis[ <fis a>] |
eis[ <gis cis'>] cis[ <gis b cis'>] | fis[ <a cis'>] cis[ <a cis'>] |
eis[ <gis cis'>] cis[ <gis b cis'>] | fis[ <a cis'>] fis[ <a cis'>] |
a,^\f\>[ <e cis'>] a,[ <e cis'>]\! | a,[ <e cis'>] a,[ <e cis'>] |
\stemUp a, \stemDown <e gis d'>[ <e gis d'> <e gis d'>] | <a e cis> r8 r4 |
\tempo "Lento" 4 = 90 r4 <eis gis b> | <fis a>8 r8 <a, cis fis> r8 | \tempo "Presto" 4 = 135 <b, fis gis> r8 <cis eis gis> r8 |
<< a2 { a,4.( cis8) } >> | << a2 { a,4.( cis8) } >> | << a2 { a,4.( cis8) } >> | << a2 { a,4.( cis8) } >> |
<< a,8 a >> r8 r4 | \clef "violin" <cis' eis' b'>8 r8 r4 | <fis fis' a'>8 r8 r4 \bar "|."
}
>>
}
>>
</score>
-->
== Dalibóg, że powiem mamie ==
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = ""
poet = ""
composer = ""
arranger = ""
tagline = ""
}
% cis fis gis
\score{
<<
\new Staff \with { midiInstrument = "flute" } {
\new Voice = "mel" {
% \set Staff.midiInstrument = #"fiddle"
\autoBeamOff
\relative c'' {
\clef treble
\key a \major
\time 3/8
\tempo 4=100
% tu melodia
\autoBeamOff
e16^\f e, gis8 b |
cis16 e, a8 cis |
b16 e, fis8 gis |
a16 cis fis8 e |
e16 e, gis8 b |
cis16 e, a8 cis |
b16 e, fis8 gis |
a16 cis a8 a |
fis8. g16 gis fis |
b8. cis16 d e |
fis8. fis,16 gis ais |
b cis d8 dis |
e16 e, gis8 b16[ d] |
cis16 e, a8 cis |
cis16 e, fis8 gis |
a16 cis fis8.\> e16 |
e16 e, gis8 b16[ d] |
cis16 e, a8 cis |
cis16 e, fis8 gis |
a16 cis a8 a \bar "|."
}
}
}
\new PianoStaff <<
\new Staff = "RH"
\relative c'' {
\clef treble
\key a \major
\time 3/8
% tu prawa ręka
e16[ e,]^\p gis8[ b] |
cis16[ e,] a8[ cis] |
b16[ e,] fis8[ gis] |
a16[ cis] fis8[ e] |
e16[ e,] gis8[ b] |
cis16[ e,] a8[ cis] |
b16[ e,] fis8[ gis] |
a16[ cis] a8[ a] |
<fis fis'>8.[ <gis gis'>16 <ais ais'> <fis fis'>] |
<b b'>8.[ <cis cis'>16 <d d'> <e e'>] |
<fis fis'>8.[ <fis, fis'>16 <gis gis'> <ais ais'>] |
<b b'>8.[ <cis cis'>16 <d d'> <dis dis'>] |
<e e'>16[ e] a8[ cis16 e] |
<cis, cis'>16[ <e, e'>] <a a'>8[ <cis cis'>] |
<b b'>16[ <e, e'>] <fis fis'>8[ <gis gis'>] |
<a a'>16[ <cis cis'>] <fis fis'>8.[ <e e'>16] |
<e e'>16[ e] a8[ cis16 e] |
<cis, cis'>16[ <e, e'>] <a a'>8[ <cis cis'>] |
<b b'>16[ <e, e'>] <fis fis'>8[ <gis gis'>] |
<a a'>16[ cis'] a8 a \bar "|."
}
\new Staff = "LH" {
%\relative c {
\clef bass
\key a \major
\time 3/8
% tu lewa ręka
e,8^\mf[ <e cis'> <e e'>] |
a,[ <e a cis'> <e a cis'>] |
e,[ <e cis' gis'> <e cis' gis'>] |
a,[ <a cis'> <a cis'>] |
e,8[ <e cis'> <e e'>] |
a,[ <e a cis'> <e a cis'>] |
e[ <e b e'> <e b e'>] |
a,[ <a cis'> <a cis'>] |
e,[ <fis cis' e'> <fis cis' e'>] |
d <fis b d'>[ <fis b d'>] |
e,[ <cis e fis> <cis e fis>] |
<b, d fis>[ <b, fis b> <b, fis a>] |
<e gis>[ <e b> <e gis>] |
a,[ <e a cis> <e a cis>] |
e[ <e b e'> <e b e'>] |
a,[ <e a cis> <e a cis>] |
e,[ <e cis'> <e gis e'> |
a,[ <e a cis> <e a cis>] |
e[ <e b e'> <e b e'>] |
a,[ <e a cis> <e a cis>] \bar "|."
}
>>
>>
\midi{}
\layout{}
}
</score>
<!--
== Panicz i dziewczyna ==
https://polona.pl/item/pierwszy-spiewnik-domowy-no-9-panicz-i-dziewczyna,OTU3Nzk3NTg/2/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Panicz i dziewczyna"
poet = "Słowa: Antoni Odyniec"
composer = "Muzyka: Stanisław Moniuszko"
arranger = ""
tagline = ""
}
\score{
<<
\new Staff \with { midiInstrument = "flute" } {
\new Voice = "mel" {
\relative c'' {
\clef treble
\key g \major
\time 3/8
\tempo 4=90
\autoBeamOff
% tu melodia
r4. | r4. |
b16. b32 b8 c |
d4 g8 |
g,16. g32 g8 a |
b4 d8 |
d16. e32 c8 a |
b4 b8 |
b16. c32 a8 fis |
g4 d8 |
b'16. b32 b8 c |
d4 g8 |
g,16. g32 g8 a |
b4 d8 |
d16. e32 c8 a |
b4 b8 |
b16. c32 a8 fis |
\grace {a} g8 g r8 |
% -----
g16. fis32 d8 a' |
fis4 d'8 |
cis16. e32 d8 b |
a4 fis8 |
g16. fis32 d8 a' |
fis4 d'8 |
cis16. a32 g16[ a32 g] fis16[ e] |
fis16[ e] d8 r |
e16. e32 fis8 gis |
a4 a8 |
b16. b32 a8 b |
d4 c8 |
e16 b c8 a] |
fis4 fis8 |
a16 g fis8 g |
b4 a8 |
a16 a a8 g |
fis a4\> |
g16^\markup{ \italic ritar. } fis e8 fis |
\grace {e} d8 d r8 \fermata |
d'16^\markup{ \italic lento } d d8 d |
d4 d,8 |
d'16 d d8 d |
d4 d,16 r |
% -----
\time 2/4
\tempo 4=150
e8 e e e |
a4 a |
b8 b a b |
c4 a |
f8 f f f |
bes4 bes |
c8 c bes c |
d4 bes |
% -----
g8 g g g |
c4 c |
d8 d c d |
e4 c8 e |
d4 a8 a |
b4^\markup { \italic ritar. } g8 fis |
e4 a8 a |
d4.( fis16)[ e] |
d4 _\markup { \smaller \smaller {Długa pauza} } r \fermata |
\time 3/8
\tempo 4=90
b16. b32 b8 c |
d4 g8 |
g,16. g32 g8 a |
b4 d8 |
d16. e32 c8 a |
b4 b8 |
b16. c32 a8 fis |
g4 d8 |
b'16. b32 b8 c |
d4 g8 |
g,16. g32 g8 a |
b4 d8 |
% d16. e32 c8 a |
% b4 16 r |
d16. d32 cis8 d |
f8.[ es16] c[ a] |
d16 d, fis8 a |
\grace { a } g8 g r |
} }
\addlyrics { \small {
W_ga -- i -- ku zie -- lo -- nym
Dzie -- wczę rwie ja -- go -- dy,
Na ko -- ni -- ku wro -- nym
Je -- dzie pa -- nicz mło -- dy,
I grze -- cznie się skło -- ni,
I z_ko -- nia ze -- sko -- czy,
O -- na się za -- pło -- ni,
Na dół spu -- ści o -- czy.
„Dzie -- wczy -- no ko -- cha -- na!
Dziś na te dą -- bro -- wy
Z_ko -- le -- ga -- mi z_ra -- na
Przy -- by -- łem na ło -- wy.
Lecz tra -- fić nie mo -- gę,
Gdzie le -- ży mia -- ste -- czko,
Wskaż mi pro -- szę dro -- gę,
Pię -- kna pa -- ste -- re -- czko!
Czy prę -- dko mię z_la -- su
Ście -- żka ta wy -- wie -- dzie?”
„Je -- szcze pan za -- wcza -- su
Do do -- mu do -- je -- dzie!
Wi -- dzisz pan to drze -- wo,
Ko -- ło drze -- wa brzo -- zki,
Ztąd za -- raz na le -- wo,
Po -- tem ko -- ło wio -- ski;
Przez gę -- sty za -- ro -- stek,
W_pra -- wo po -- nad rze -- czką,
Tam mły -- nek i mo -- stek
I wi -- dać mia -- ste -- czko.”
Pa -- nicz po -- dzię -- ko -- wał,
Czu -- le rą -- czkę ści -- snął,
W_u -- sta po -- ca -- ło -- wał,
Na ko -- ni -- ka świ -- snął.
Siadł, o -- stro -- gą spi -- na,
Już nie wi -- dać je -- go.
We -- stchnę -- ła dzie -- wczy -- na,
Ja nie wiem, dla -- cze -- go.
} }
}
\new PianoStaff <<
\new Staff = "RH"
\relative g' {
\clef treble
\key g \major
\time 3/8
\tempo 4=90
% tu prawa ręka
r4.| r4. |
<g b>16.[ <g b>32 <g b>8 <a c>] |
<< \new Voice { \stemDown b8_([ g) b] } \new Voice { \stemUp d4^\>^( g8)\! } >> |
<b,, g'>16.[ <b g'>32 <b g'>8 <d a'>] |
<< \new Voice { \stemDown g8_([ d) b'] } \new Voice { \stemUp b4^\>^( d8)\!} >> |
<b d>16[ r32 <c e>32( <a c>8) <fis a>] |
<< \new Voice { \stemDown g8[ d d] } \new Voice { \stemUp g4 g8 } >> |
<d b'>16[ r32 <e c'>32 <c a'>8 <c fis>] |
<< \new Voice { \stemDown b8[ g b] } \new Voice { \stemUp g'4 d8 } >> |
<g b>16.[ <g b>32 <g b>8\staccato <a c>\staccato] |
<< \new Voice { \stemDown b8_([ g) b] } \new Voice { \stemUp d4^\>^( g8)\! } >> |
<b,, g'>16.[ <b g'>32 <b g'>8\staccato <d a'>\staccato ] |
<< \new Voice { \stemDown g8_([ d) b'] } \new Voice { \stemUp b4^\>^( d8)\!} >> |
<b d>16[ r32 <c e>32( <a c>8) <fis a>\staccato ] |
<< \new Voice { \stemDown g8[ d d] } \new Voice { \stemUp g4 g8 } >> |
<d b'>16[ r32 <e c'>32 <c a'>8 <a c fis>] |
<b g'>4 g'8 |
% -----
<e g>16.[ <d fis>32 <a e'>8 <cis a'> ] |
<d fis>8[ <d a'> <fis d'>] |
<ais cis>16.[ <cis e>32 <b d>8 <g b>] |
<fis a>8[ <d fis a d> <fis a d fis>] |
<e g>16.[ <d fis>32 <a e'>8 <cis a'> ] |
<d fis>8\staccato[ <d a'>\staccato <fis d'>\staccato ] |
<e g cis>8 r4 |
<fis d'>8[ d] r8 |
r8 <gis b d>[ <b d gis>] |
r <a, c e a>[ <a c e a> ] |
r <d e gis b>[ <d e gis b> ] |
r <c e c'>[ <c e c'> ] |
r8 <e a>[ <c e a>] |
fis16[ a <a, d>8 <a d fis>] |
<g b g'>8[ <c d fis> <b d g>] |
<d g b>4( <d fis>8) |
% -----
r8 <cis e a> <cis e g> |
<d fis>8 <e a>4^\> |
g16[ fis e8 <cis a>] |
d8 r8 r8\fermata |
r8 r <d e> |
<d fis>4( a8) |
r8 r <d e>( |
<d fis>4) r8 \bar "||"
% -----
\time 2/4
\tempo 4=150
<b e>4\staccato r4 |
<e a>\staccato r |
<d e b>\staccato r |
<c e c'>\staccato r |
<c f>\staccato r |
<f bes>\staccato r |
<es f c'>\staccato r |
<d f d'>\staccato r |
% -----
<d g>\staccato r |
<g c> r |
<fis g d'> r |
<e g e'> r |
<d a d'>4. r8 |
<d g b>4( g8)[ f] |
e4 a |
d2( | d4) r4 \fermata |
\time 3/8
\tempo 4=90
<g, b>16.[ <g b>32 <g b>8 <a c>] |
<< \new Voice { \stemUp \shiftOff d4^( g8) } \new Voice { \stemDown b,8[ g b] } >> |
<b, g'>16.[ <b g'>32 <b g'>8 <d a'>] |
<< \new Voice { \stemUp \shiftOff b'4^( d8) } \new Voice { \stemDown g,8[ d <g b>] } >> |
<b d>16.[ <c e>32( <a c>8) <fis a>\staccato ] |
<< \new Voice { \stemUp \shiftOff b4 b8 } \new Voice { \stemDown g8[ d d] } >> |
<d b'>16[ r32 <e c'>32( <c a'>8) <a e'>] |
<< \new Voice { \stemUp \shiftOff g'4( d8) } \new Voice { \stemDown b8[ g b] } >> |
<g' b>16.[ <g b>32 <g b>8 <a c>] |
<< \new Voice { \stemUp \shiftOff d4^( g8) } \new Voice { \stemDown b,8[ g b] } >> |
<b, g'>16.[ <b g'>32 <b g'>8 <d a'>] |
<< \new Voice { \stemUp \shiftOff b'4^( d16) r \fermata } \new Voice { \stemDown g,8[ d <g b>] } >> |
r4. |
<es g a>4. |
<d b'>8[ <d fis>\staccato <c fis a>\staccato] |
<b g'>4 <b g'>8 |
}
\new Staff = "LH" {
%\relative c {
\clef bass
\key g \major
\time 3/8
\tempo 4=90
% tu lewa ręka
<g, d>8[ <g, d> <g, d>] |
<g, d>8^\p[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8 g,8 r8 |
% -----
a,8[ cis a,] |
d[ fis d ] |
g[ b g] |
d'8 <d, d>8[ <d, d>] |
a,8[ cis a,] |
d[ fis d ] |
<a, a>8 r4 |
<d a>8[ d dis] |
e16([ e,16) e8\staccato d\staccato ] |
c16([ e16) a,8\staccato a,\staccato ] |
gis,16[ b,16) e,8\staccato e\staccato ] |
a,16([ c16) e8\staccato a,\staccato ] |
a,16([ b,) c8\staccato a,\staccato ] |
d8[ d, c] |
b,[ a, g,] |
\grace {e} d16[ cis d8 fis] |
% -----
a4. |
\grace { b } a16.[ gis32] a4 |
g16[ fis e8 <a, e g>] |
<d fis>8 r8 r8\fermata |
r8 r8 <g bes>8 |
<d a>4( fis8) |
r8 r8 <g bes>8 |
<d a>4 r8\fermata |
\time 2/4
\tempo 4=150
<d gis>4\staccato r4 |
<c a>\staccato r |
<gis, e>\staccato r |
<a, e>\staccato r |
<es a>\staccato r |
<d bes>\staccato r |
<a, f>\staccato r |
<bes, f>\staccato r |
% -----
<f b>\staccato r |
<e c>\staccato r |
<b, g>\staccato r |
<c g>\staccato r |
fis4. r8 |
g4 g8[ fis] |
e4 a |
d2( | d4) r4 \fermata |
\time 3/8
\tempo 4=90
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>] |
<g, d>8[ <g, d> <g, d>16] r |
r4. |
c4. |
d8\staccato[ d,\staccato d\staccato ] |
<g, d>8 <g, d>4 |
\clef treble
}
>>
>>
\layout{}
\midi{}
}
</score>
-->
== Do pracy, razem do pracy ==
https://polona.pl/item/echo-polskie-najwiekszy-zbior-piesni-polskich-obyczajowych-i-okolicznosciowych-z,OTIyOTA2NTE/56/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Do pracy, razem do pracy"
poet = ""
composer = ""
arranger = ""
tagline = ""
}
\score {
\new Staff {
\autoBeamOff
\relative c' {
\clef treble
\key g \major
\time 4/4
\tempo 4=120
\partial 4 d8. d16 |
g4 d b' a8. a16 |
g2 g4 r4 |
fis4 fis g g |
b4. a8 d,4 r4 |
\repeat volta 2 {
e4. gis8 a8. gis16 a8. b16 |
c2 e,4 r4 |
d4 g b8. a16 g8. fis16 |
g2. r4 |
}
a4 a a8. g16 fis8. e16 |
fis2 d4 r4 |
a'4 a b8. a16 g8. b16 |
d2. r4 |
b4. c8 d8. g,16 fis8. g16 |
d'2 c4 r4 |
b4 b d8. c16 b8. a16 |
g2 r2 |
b4. c8 d8. g,16 fis8. g16 | e'2 c4 r4 |
b4 b d8. c16 b8. a16 | g2. r4 \bar "|."
}
}
\layout{}
\midi{}
}
</score>
== Bywaj dziewczę zdrowe ==
<score raw=1 vorbis=1>
\version "2.20.0"
\header {
tagline = ""
}
global = {
\key f \major
\time 3/8
}
melodia = \new ChorStaff {
<<
\new Staff = "hi" {
<<
\new Voice = "sop" \relative c''{ \stemUp \autoBeamOff
r4. | r4. |
c16 c d8 a |
c8 bes4 |
r4. | r4. |
bes16 d c8 g |
bes8 a4 |
\repeat volta 2 {
f16 f a8 c |
f4 f8 |
a16 g f8 e |
e8 d4 |
f16 f e8 d |
c4 a8 |
d16 c bes8 f |
g8 f4 |
}
}
\new Voice = "alt" \relative f'{ \stemDown \autoBeamOff
r4. | r4. |
a16 a a8 fis |
a8 g4 |
r4. | r4. |
bes16 a g8 e |
g8 f4 |
\repeat volta 2 {
f16 f a8 g |
c4 c8 |
c16 cis d8 cis |
cis8 d4|
bes16 a gis8 gis |
a4 a8 |
bes16 a g8 e |
g8 f4 |
}
}
>>
}
\new Staff = "lo" {
\clef bass
\global
<<
\new Voice = "ten" { \stemUp \autoBeamOff
c16 c f8 a |
c'4 c'8 |
f16 g fis8 d |
es8 d4 |
c16 c e8 g |
bes8 bes4 |
g16 f es8 c |
d8 c4 |
\repeat volta 2 {
f16 f f8 es |
f4 a8 |
f16 g a8 g |
g8 f4 |
d16 d d8 fis |
fis4 fis8 |
fis16 es d8 c |
bes,8 a,4 |
}
}
\new Voice = "bss" { \stemDown \autoBeamOff
c16 c f8 a |
c'4 c'8 |
f16 es d8 d |
g,8 g,4 |
c16 c e8 g |
bes8 bes4 |
g16 f es8 c |
bes,8 a,4 |
\repeat volta 2 {
f16 f d8 c |
a,4 f,8 |
f16 es d8 a, |
bes,8 bes,4 |
bes,16 bes, b,8 b, |
c4 d8 |
bes,16 fis, g,8 c |
c8 f,4 |
}
}
>>
}
>>
}
\score {
\melodia
\layout{}
}
\score {
\unfoldRepeats
\melodia
\midi{ \tempo 4=100 }
}
</score>
== Pojedziemy na łów ==
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Pojedziemy na łów"
poet = ""
composer = ""
arranger = ""
tagline = ""
}
\score{
<<
\new Staff \with { midiInstrument = "english horn" } {
\new Voice = "mel" {
\autoBeamOff
\relative c'' {
\clef treble
\key g \major
\time 2/4
\tempo 4=120
% tu melodia
g8 a b c |
d4 b8 r8 |
d4 b8 r8 |
b8 b a a |
g4 r4|
\repeat volta 2 {
b8 b a a |
b b c4 |
b8 b a a |
b b c4 |
b8 b a a |
g4 r4|
}
} }
\addlyrics { \small {
Po -- je -- dzie -- my na łów, na łów,
To -- wa -- rzy -- szu mój.
Na łów, na łów, na ło -- wy,
Do zie -- lo -- nej dą -- bro -- wy,
To -- wa -- rzy -- szu mój.
} }
}
\new PianoStaff <<
\new Staff = "RH" {
%\relative c'' {
\clef treble
\key g \major
\time 2/4
\tempo 4=120
% tu prawa ręka
<b g'>8[ <fis' a'> <g' b'> <a' c''>] |
<b' d''>4 <g' b'>8 r8 |
<b' d''>4 <g' b'>8 r8 |
<d' g' b'>8[ <d' g' b'> <c' d' fis' a'> <c' d' fis' a'>] |
<b d' g'>4 r4 |
\repeat volta 2 {
<g' b'>8[ <g' b'> <fis' a'> <fis' a'>] |
<g' b'>8[ <g' b'>] <a' c''>4 |
<g' b'>8[ <g' b'> <fis' a'> <fis' a'>] |
<g' b'>8[ <g' b'>] <a' c''>4 |
<d' g' b'>8[ <d' g' b'> <c' d' fis' a'> <c' d' fis' a'>] |
<b d' g'>4 r4 |
}
}
\new Staff = "LH" {
% \relative c {
\clef bass
\key g \major
\time 2/4
\tempo 4 = 120
% tu lewa ręka
g,,8[ g, g, g,] |
g,, g <b d'> r8 |
g,, g <b d'> r8 |
g,[ b, d d,] |
g,4 r4 |
\repeat volta 2 {
g,8[ d d, d] |
g,[ d fis, d, ] |
g,8[ d d, d] |
g,[ d fis, d, ] |
g,[ b, d d,] |
g,4 r4 |
}
}
>>
>>
\midi{}
\layout{}
}
</score>
== Siedzi sobie zając pod miedzą ==
''Pieśni polskie i ruskie...'' s. 18 (nuty)
https://polona.pl/item/piesni-polskie-i-ruskie-ludu-galicyjskiego-z-2-nuty,MTIzMDcyMDU/18/#info:metadata
s. 65-66 (tekst) https://polona.pl/item/piesni-polskie-i-ruskie-ludu-galicyjskiego-z-1-slowa,ODA5MTk3NTk/126/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = ""
poet = ""
composer = ""
arranger = ""
tagline = ""
}
\score{
<<
\new Staff {
\new Voice = "mel" {
% \set Staff.midiInstrument = #"fiddle"
\autoBeamOff
\relative c'' {
\clef treble
\key bes \major
\time 4/4
% tu melodia
bes8 c d es f4 f |
g4 g f2 | g4 g f2 |
bes,8 c d es f4 f |
g4 g f2 | g4 g f2 |
\repeat volta 2 {
d8 f f f f es es d |
d8 f f f f es es d |
d4 c f2 | d4 c bes2 |
}
}
}
\addlyrics{ \small {
Sie -- dzi so -- bie za -- jac pod mie -- dzą, pod mie -- dzą,
A my -- śli -- wi o nim nie wie -- dzą, nie wie -- dzą.
Psy po po -- lu roz -- pu -- ści -- li,
Krzyk i łos -- kot u -- czy -- ni -- li:
Był tu kot, był tu kot.
} }
}
\new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\key bes \major
\time 4/4
% tu prawa ręka
<d bes'>8[ <f c'> <bes d> <c es>] <d f>4 <f, bes d f> |
<a c es g> <g bes es g> <g bes d f>2 |
<g bes es g>4 <g bes es g> <g bes d f>2 |
<d bes'>8[ <f c'> <bes d> <c es>] <d f>4 <f, bes d f> |
<f bes es g>4 <g bes es g> <f bes d f>2 |
<g bes es g>4 <g bes es g> <f bes d f>2 |
\repeat volta 2 {
<bes d>8[ <d f> <d f> <d f>] <d f>[ <c es> <c es> <bes d>] |
<bes d>8[( <d f>) <d f>\staccato <d f>\staccato] <d f>\staccato[ <c es>\staccato <c es>\staccato <bes d>\staccato] |
<f bes d>4 <f a c> <f a c f>2 |
<f bes d>4 <f a c> <d f bes>2 |
}
}
\new Staff = "LH" {
%\relative c {
\clef bass
\key bes \major
\time 4/4
% tu lewa ręka
<bes,, bes,>4 <bes, bes> <bes, bes> <bes, bes> |
<es, g, bes, es>4 <es, g, bes, es> <bes,, d, f, bes,>2 |
<es, g, bes, es>4 <es, g, bes, es> <bes,, d, f, d>2 |
<bes,, bes,>4 <bes, bes> <bes, bes> <bes, bes> |
<es, g, bes, es>4 <es, g, bes, es> <bes,, d, f, bes,>2 |
<es, g, bes, es>4 <es, g, bes, es> <bes,, d, f, bes,>2 |
\repeat volta 2 {
bes,,4\staccato bes,( a, bes,) |
bes,,4 bes,( a, bes,) |
bes,4 <f, f> <f, a, c f>2 |
<bes, f>4 <f, f> <bes, f>2 |
}
}
>>
>>
\midi{}
\layout{}
}
</score>
== Laura i Filon ==
''Pieśni polskie i ruskie...'' s. 95
<score vorbis="1">
% fis
<<
\new Staff {
\key g \major
\tempo "Andante"
\tempo 4 = 100
\relative g' { \autoBeamOff
b8.[( a16]) b8 c d4 d | e8.[( d16]) c8 b b8.[( a16]) a4 |
b8.[( a16]) b8 c d4 d | e8[( d cis]) e8 d4. \fermata r8 |
\repeat volta 2 { b4 c8 a g4. g8 | a4 a8 a |
d[( c b]) a | b4 c8 a g4. b8 | a8[( g a]) b8 g4 r |
}
}
}
\new GrandStaff {
<<
\new Staff {
\key g \major
<g' b'>8.[ <fis' a'>16 <g' b'>8 <a' c''>] <b' d''>4 <b' d''> |
<c'' e''>8.[ <b' d''>16] <a' c''>8[ <g' b'>] <g' b'>8.[( <fis' a'>16]) <fis' a'>4 |
<g' b'>8.[ <fis' a'>16 <g' b'>8 <a' c''>] <b' d''>4 <b' d''> |
<b' e''>8[( d'') <g' cis''>( e'')] <fis' d''>4. \fermata r8 |
\repeat volta 2 {
<g' b'>4 <a' c''>8[ <c' a'>] <a fis'>4. <a fis'>8 |
<d' a'>4 <d' a'>8[ <d' a'>] <d' fis' d''>[( <a' c''> <g' b'>) <fis' a'>] |
<g' b'>4 <a' c''>8[ <d' a'>] <b g'>4. <d' b'>8 |
<c' a'>8[( g' <c' a'>)( b')] <b g'>4 r |
}
}
\new Staff {
\clef "bass"
\key g \major
g,4( g) g,( g) | g,( g) d2 |
g,4( g) g,( g) | <e g> a <d a>4. r8 |
\repeat volta 2 { g4 d <g, g>2 |
<d, d>4 <d, d> <d, d>2 | <g, g>4 <d, d> <g, g>2 |
<d fis>4 <d fis> <g, d g>4 r |
}
}
>>
}
>>
</score>
== Szynkareczko, szafareczko ==
Barański s. 102
<score raw="1" vorbis="1" >
\version "2.12.3"
\header {
tagline = ""
}
\layout {
indent = #0
}
tekst = \lyricmode {
Szyn -- ka -- re -- czko, sza -- fa -- re -- czko,
Bój sie Bo -- ga, stój!
Tam się śmie -- jesz, a tu le -- jesz miód na ka -- ftan mój!
miód na ka -- ftan mój!
}
melodia=
\new GrandStaff {
<<
\new Staff {
\time 3/4
\tempo "Vivace"
\tempo 4 = 150
\relative c' { \autoBeamOff
e8 d c4. d8 | e f g4. a8 | g a g4 c | <g b d>2. \fermata |
\repeat volta 2 { f8 a f4 \grace { f8([ e] } d4) | e8 g e4 \grace { e8([ d] } c4) | }
\alternative { { d8 e f4 a | g2. } { d8 a' g4. b,8 | c2. } }
}
}
\addlyrics { \small { \tekst } }
\new Staff {
\clef "bass"
\relative c {
<c e g>4 <c e g> <c e g> | <c e g>4 <c e g> <c e g> | <c e g>4 <c e g> <c e g> | <g d' g>2. \fermata |
\repeat volta 2 { g4 <f' g b> <f g b> | c <e g> <e g> | }
\alternative { { g,4 <f' g b> <f g b> | c <e g> <e g> } {g,4 <f' g b> <f g > | <c e g> <c e g> r4 } }
}
}
>>
}
\score {
<<
\new Voide = "air" { \melodia }
% \new Lyrics \lyricsto "Air" { \tekst }
>>
\layout {}
}
\score {
<<
\unfoldRepeats
\new Voide = "air" { \melodia }
% \new Lyrics \lyricsto "Air" { \tekst }
>>
\midi {}
}
</score>
== Lutni moja ulubiona ==
https://polona.pl/item/piesniarz-polski-zbior-melodyi-swojskich-aryi-dumek-krakowiakow-marszow,MTEwNjI0OTUw/171/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header {
title = "Lutni moja ulubiona"
poet = "Słowa: Wespazjan Kochowski"
composer = "Muzyka: autor nieznany"
arranger = "Aranżacja: Stefan Surzyński"
tagline = ""
}
akordy = \chordmode {
\set chordChanges = ##t
%\transpose c' bes { c,2. | a,:m | d,:m | c, |
% f, | c, | f, | c, |
% }
bes,2. | g,:m | c,:m | bes, |
es, | bes, | es, | bes, |
}
% es bes
melodia = %\transpose bes c' {
\relative c' {
\key bes \major
\clef treble
\time 3/4
\tempo 4=120
f4.^\f es'8 d c |
bes^\p d f,4 f |
g8 g bes4^\< a8([ g)]\! |
f8^\> bes\! d,4 d |
\repeat volta 2 {
es4. c8 f es |
d f^\< bes4 d\! |
es4.^\> f,8\! g a |
bes^\> c d4\! bes
}
}
% }
\score {
<<
\new ChordNames { \akordy }
\new Voice = "Air" { \melodia }
% \new Lyrics \lyricsto "Air" { \tekst }
>>
\layout{}
\midi{}
}
</score>
== W murowanej piwnicy ==
<score vorbis="1">
%goralska = #`((0 . ,NATURAL) (1 . ,NATURAL) (2 . ,NATURAL)
% (3 . ,NATURAL) (4 . ,SHARP) (5 . ,NATURAL) (6 . ,NATURAL) (7 . ,FLAT))
\new Staff \with { midiInstrument = "fiddle" } {
\autoBeamOff
\clef "violin"
\key d \lydian
\time 2/4
\relative d'' {
d8. a16 a8 gis | fis gis a4 |
d8. a16 a8 gis | fis e d4 |
d8 e fis e | fis gis a4 |
d8. a16 a8 gis | fis e d4 |
d8 e fis e | fis gis a( gis) |
fis gis a gis | fis e d4 |
}
}
</score>
== Piękna nasza Polska cała ==
Melodia ludowa.<br>
'''Aranżacja''': Feliks Nowowiejski (1877–1946).
<score vorbis="1">
\new ChoirStaff \with {midiInstrument = "harmonica" } {
<<
\new Staff {
\key g \major
\time 3/4
<<
\new Voice = "sopr" { \autoBeamOff \relative g' { \stemUp
b4. ais8 b ais | b8. b16 g4 d |
c'8. c16 a4 fis | d'8. d16 e4 d |
b4. ais8 b ais | b8. b16 g4 d |
c'8. c16 a4 fis | g8. fis16 a4 g8 r8 |
\repeat volta 2 { a8. a16 fis'4 d | a8. a16 b4 a |
cis8. cis16 cis4 cis | d8. cis16 d4 d, | }
b'4. ais8 b ais | b8. b16 g4 d |
c'8. c16 a4 fis | d'8. d16 e4 d |
b4. ais8 b ais | b8. b16 g4 d |
c'8. c16 a4 fis | g8. fis16 a4 g8 r8 |
} }
\new Voice = "alt" { \autoBeamOff \relative g' { \stemDown
g 4. g8 g g | g8. g16 d4 d |
fis8. fis16 d4 d | d8. g16 g4 g |
g 4. g8 g g | g8. g16 d4 d |
fis8. fis16 fis4 d | d8. d16 d4 d |
\repeat volta 2 { fis8. fis16 a4 fis |
fis8. fis16 g4 fis | a8. gis16 g4 e | fis8. g16 fis4 d | }
g 4. g8 g g | g8. g16 d4 d |
fis8. fis16 d4 d | d8. g16 g4 g |
g 4. g8 g g | g8. g16 d4 d |
fis8. fis16 fis4 d | d8. d16 d4 d |
} }
\new Lyrics \lyricsto "sopr" {
}
>>
}
\new Staff {
\clef "bass"
\key g \major
\time 3/4
<<
\new Voice = "ten" { \autoBeamOff \relative c' { \stemUp
d4. cis8 d cis | d8. d16 b4 b |
a8. a16 c4 c | b8. b16 ais4 b |
d4. cis8 d cis | d8. d16 b4 b |
a8. a16 c4 a | b8. a16 c4 b8 r8 |
\repeat volta 2 { a8. a16 a4 a | a8. a16 d4 d |
e8. e16 e4 a, | a8. a16 a4 fis | }
d'4. cis8 d cis | d8. d16 b4 b |
a8. a16 c4 c | b8. b16 ais4 b |
d4. cis8 d cis | d8. d16 b4 b |
a8. a16 c4 a | b8. a16 c4 b8 r8 |
} }
\new Voice = "bass" { \autoBeamOff \relative g { \stemDown
g4. g8 g g | g8. g16 g4 g |
d8. d16 fis4 a | g8. g16 g4 g |
g4. g8 g g | g8. g16 g4 g |
d8. d16 fis4 a | g,8. g16 g'4 g |
\repeat volta 2 { d8. d16 d4 d | d8. d16 d4 d |
a'8. a16 a4 a | d,8. a16 d4 d | }
g4. g8 g g | g8. g16 g4 g |
d8. d16 fis4 a | g8. g16 g4 g |
g4. g8 g g | g8. g16 g4 g |
d8. d16 d4 d | g,8. g16 g'4 g |
} }
>>
}
>>
}
</score>
<br>
'''Źródło''': {{Cytuj | autor= Feliks Nowowiejski | tytuł=Nowy śpiewnik polski : na chór mieszany (60 pieśni) | miejsce=Poznań | wydawca=nakł. Księgarni Św. Wojciecha | data=1924 | s=59–61 | url=https://crispa.uw.edu.pl/object/files/142171/display/Default }}
== Płynie Wisła, płynie ==
Melodia ludowa.<br>
'''Aranżacja''': Feliks Nowowiejski (1877–1946).
<score vorbis="1">
\new ChoirStaff \with {midiInstrument = "harmonica" } {
<<
\new Staff {
\key g \minor
\time 2/4
<<
\new Voice = "sopr" { \autoBeamOff \relative d' { \stemUp
d4^\< es^\> | d es | r8 f4 f8 |
g8 a bes c | es g, a8. bes16 | bes8 d4 r8 |
es g, a8. bes16 | bes8 d4 r8 | f,8 es' es4 | f8 d4 d8 |
es c c a | bes16[ c] d4 r8 | f,8 es' es4 |
f8 d4 d8 | es c c a | bes16[ a] bes8 r8 |
} }
\new Voice = "alt" { \autoBeamOff \relative c' { \stemDown
bes4 a | bes a | r8 d4 d8 |
f es d es | g8 es f8. g16 | g8 d4 r8 |
g8 es f8. g16 | g8 d4 r8 | f a g4 | a8 bes4 as8 |
g ges f f | f8 f4 r8 | f a g4 |
a8 bes4 as8 | g ges f f | f f4 r8 |
} }
\new Lyrics \lyricsto "sopr" {
}
>>
}
\new Staff {
\clef "bass"
\key g \minor
\time 2/4
<<
\new Voice = "ten" { \autoBeamOff \relative e { \stemUp
f4 f | f f | bes4. f8 |
d'8 c bes a | g bes a8. g16 | g8 f4 r8 |
g bes a8. g16 | g8 f4 r8 |
f8 c' bes4 | c8 d4 f8 |
bes,8 c a es' | d bes4 r8 |
f8 c' bes4 | c8 d4 f8 |
bes,8 c a es' | d d4 r8 |
} }
\new Voice = "bass" { \autoBeamOff \relative e { \stemDown
bes8[ f] c'[ f,] |bes[ f] c'[ f] | r8 bes,4 bes8 |
bes bes bes bes | bes g' f8. es16 | d8 bes4 r8 |
bes g' f8. es16 | d8 bes4 r8 | f'8 f f4 | f8 bes4 bes,8 |
es8 es f f | bes bes,4 r8 | f'8 f f4 |
f8 bes4 bes,8 | es es f f | bes,8 bes'4 r8 |
} }
>>
}
>>
}
</score>
<br>
'''Źródło''': {{Cytuj | autor= Feliks Nowowiejski | tytuł=Nowy śpiewnik polski : na chór mieszany (60 pieśni) | miejsce=Poznań | wydawca=nakł. Księgarni Św. Wojciecha | data=1924 | s=66–68 | url=https://crispa.uw.edu.pl/object/files/142171/display/Default }}
== Gaude mater ==
https://crispa.uw.edu.pl/object/files/142171/display/Default
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Gaude mater Polonia"
tagline = ""
}
global = {
\key as \major
\time 4/4
\tempo 4=100
\set Staff.midiInstrument = "choir aahs"
\set Staff.midiReverbLevel = 1
\shiftOff
}
% as bes des es
sop = \new Voice {
\stemUp \shiftOff
\relative c''{
as2^( bes8[ as g]) as \noBreak |
bes2 as4 as |
bes8[^( c des c] bes4) as4 |
as1 | \break
c2 es4 des |
c4^( bes) as2 |
bes2 g |
as1 | \break
c2^( es4) es |
f2 es4^( es) |
des2 c |
bes2^( c4 as)^\p \fermata | \break
as2 bes8^([ as g]) as |
bes2 as |
bes8^([ c des c] bes4) as |
as1 \fermata |
}
}
alt = \new Voice {
\stemDown \shiftOff
\relative c'{
es4_( f2 es8) es |
g2 f4 f |
g8_([ as g as] g4) es |
f2_( es) | \break
f2 es4 es |
es4_( g) f2 |
f2 es |
es1 | \break
as2_( g4 as) |
as2 as4_( as) |
as_( bes) as2 |
g2._( f4) | \break
f2 f4_( es8) es |
g2 f |
g8_([ as g as] g4) f |
f2_( es) _\fermata |
}
}
tnr = \new Voice {
\stemUp \shiftOff
c'2^( des'4.) c'8 |
es'^(4 des') c' c' |
es'2. c'4 |
des'2 c' | \break
as2 g4 bes |
g4^( des') c'2 |
des'2 des' |
c'1 | \break
f'2^( es'8[ des']) c'4 |
des'2 c'4 c' |
f'^( es') es'2 |
es'4^( des' c'2) \fermata | \break
des'^( c') des'4. c'8 |
es'4( des') c'2 |
es'2. c'4 |
des'2^( c') \fermata |
}
bss = \new Voice {
\stemDown \shiftOff
as4_( f des es8) as |
es2 f4 f |
es8[_( as bes as] es4) as |
des4_( f as2) | \break
f2 c4 es |
as_( es) f2 |
des es |
as,1 | \break
f2_( c'8[ bes]) as4 |
des_( f) as_( as) |
f_( g) as2 |
es2 es4 f \fermata | \break
des4_( f) des_( es8) as |
es2 f |
es8_([ as bes as] es4) f |
des4_( f as2) \fermata |
}
\score {
\new PianoStaff {
<<
\new Staff {
\global
\clef treble
<<
\sop
\alt
>>
}
\addlyrics { \small {
Gau - - - - de, ma -- ter Po -- lo - - - - ni -- a -,
pro -- le foe -- cu -- nda no -- bi - li;
Sum -- mi Re -- gis ma -- gna -- li -- a,
Lau -- de fre -- que -- nte vi -- gi -- li.
} }
\new Staff {
\global
\clef bass
<<
\tnr
\bss
>>
}
>>
}
\midi{}
\layout{}
}
</score>
== Bogurodzica ==
https://crispa.uw.edu.pl/object/files/142171/display/Default s. 222–224
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Bogurodzica"
tagline = ""
}
global = {
\key g \major
\tempo 4 = 80
\autoBeamOff
\cadenzaOn
}
melodia = {
\global
\relative c' {
^\f ^\markup{ \italic Uroczyście }
e2 d4 g \bar "'"
\tuplet 3/2 { fis( e d) } e g \bar "'"
\tuplet 3/2 { a( g a) } b \bar "'"
d2 e4 d \bar "'"
\tuplet 3/2 { \stemUp b( a g) } g2 \bar "'"
^\< g4( a b8[ a]) fis2( \!
%\bar "'"
^\> d4) e2 \! \bar "'"
b'2 a4( g) \bar "'"
\tuplet 3/2 { a( g a) } b2 \bar "'"
^\f \stemDown d2 e \bar "'"
d2 \stemUp \tuplet 3/2 { b4( a g) } \bar "'"
% Matko
d'4( d4) \tuplet 3/2 { b4( a g) } \bar "'"
g4( a b8[ a]) ^\< fis2( \!
%\bar "'"
^\> d4) e2 \! \bar "'"
^\< g4 a( \! b8[ a]) fis2(
%\bar "'"
^\> d4) e2 ^\p \! \bar "'"
^\< \tuplet 3/2 { a4( g a) } \! \bar "'"
b2 ^\ff \stemDown d \bar "'"
cis2 e \fermata \bar "'"
^\p ^\markup{ \italic wolniej } d4 b \stemUp a4.( g8) \bar "'"
^\< g4( a \! b8[ a]) \bar "'"
^\> ^\pp ^\markup { \italic rall. } fis4 \! e2 \bar "'"
% -----
^\f ^\markup { \italic { a tempo (trochę prędzej) } }
e8([ fis)] e([ d)] g4 a \bar "'"
fis d e2 \bar "'"
g4( a b8[ a] fis4)(( fis^\>) d) e2\! \bar "'"
b'2^\mf a4( g) \bar "'"
\tuplet 3/2 { a4( g a) } b2 \bar "'"
e,4 d g a \bar "'"
fis( d) e2 \bar "'"
d4 g \tuplet 3/2 { a8[ fis e] } fis4 \bar "'"
d4 e fis e \fermata \bar "'"
b'2 ^\p a4( g) \bar "'"
\tuplet 3/2 { a( g a) } b2 \bar "'"
e,8 ^\markup { \italic { cresc } } ([ fis)] e([ d)] \bar "'"
g4 a b2 \bar "'"
d2^\f b \bar "'"
d a \bar "'"
d2 \tuplet 3/2 { b4( a g) } \bar "'"
\tuplet 3/2 { a( g a) } b2 \bar "'"
b2 d \bar "'"
e a, \bar "'"
d4 \tuplet 3/2 { b4( a g) } \bar "'"
\tuplet 3/2 { a4( g a) } b2 \fermata \bar "'"
% -----
b4^\p ^\markup { \italic {Wolniej} } a g \bar "'"
g4^\<( a b8\![ a]) \bar "'"
^\>fis2.^\markup { \italic {rall.} }\! \bar "'"
e2.^\pp \fermata \bar "|."
}
}
tekst = \lyricmode {
Bo -- gu Ro -- dzi -- ca, Dzie -- wi -- ca,
Bo -- giem sła -- wie -- na Ma -- ry -- ja!
Twe -- go Sy -- na, Go -- spo -- dzi -- na,
Ma -- tko zwo -- le -- na, Ma -- ry -- ja,
Zi -- ści nam, spu -- ści nam,
Ky -- ri -- e e -- lei -- son.
Twe -- go dzie -- la Krzci -- cie -- la,
Bo -- ży -- cze,
U -- słysz gło -- sy,
na -- pełń my -- śli człe -- cze:
Słysz mo -- dli -- twę, jąż no -- si -- my,
A dać ra -- czy, je -- goż pro -- si -- my.
A na świe -- cie zbo -- żny po -- byt,
Po ży -- wo -- cie raj -- ski prze -- byt.
Ky -- ri -- e e -- lei -- son.
}
\score {
\new Staff {
\set Staff.midiInstrument = "choir aahs"
\set Staff.midiReverbLevel = 1
<<
\new Voice = "Air" { \melodia }
\new Lyrics \lyricsto "Air" { \tekst }
>>
}
\layout{}
\midi{}
}
</score>
<br>
<score vorbis="1" >
\new Staff {
\set Staff.midiInstrument = "choir aahs"
\transpose d e {\relative c' {
\autoBeamOff
\tempo 4. = 40
\cadenzaOn
d8 c f e[ d c] d4 \bar "'" f8 g[ f g] a4 \bar "'"
c8 d c a[ g f] f4 f8^\<[ g a g\!] e^\>[ c] d4\! \bar "|"
d'8 c a[ g f] g[ f g] a4 \bar "'" c8 d c[ a g] f4 \bar"'"
c'8 a[ g f] f^\<[ g a g\!] e^\>[ c] d4\! \bar "'" f8^\<[ g a g\!] e^\>[ c] d4\! \bar "|"
f8 g[ f g] a4 \bar "'" c8 b d4 \bar "'"
c8 a g[ f] f[ g a g] e[ d] d4 \bar "||"
}
}
\addlyrics {
Bo -- gu Ro -- dzi -- ca, Dzie -- wi -- ca,
Bo -- giem sła -- wie -- na Ma -- ry -- ja!
U Twe -- go Sy -- na, Go -- spo -- dzi -- na,
Ma -- tko zwo -- le -- na, Ma -- ry -- ja,
Zi -- ści nam, spu -- ści nam,
Ky -- ri -- e e -- lei -- son.
Twe -- go dzie -- la Krzci -- cie -- la,
Bo -- ży -- cze,
U -- słysz gło -- sy,
na -- pełń my -- śli człe -- cze:
Słysz mo -- dli -- twę, jąż no -- si -- my,
A dać ra -- czy, je -- goż pro -- si -- my.
A na świe -- cie zbo -- żny po -- byt,
Po ży -- wo -- cie raj -- ski prze -- byt.
Ky -- ri -- e e -- lei -- son.
}
}
</score>
== Bóg się rodzi ==
<score vorbis="1" >
% es as bes
<<
\new Staff \with { midiInstrument="violin" } {
\relative e' {
\autoBeamOff
\key es \major
\time 3/4
r2. | r2. |r2. | r2. |
es8 es' es4 d16[ c16 bes8] |
c8 c8 c4 bes8[ as] |
g8 bes es bes as g | g4 f r |
es8 es' es4 d16[ c16 bes8] |
c8 c8 c4 bes8[ as] |
g8 bes es bes as g | g4 f r |
as4. f8 g as | bes8 bes g4 bes |
as4. f8 g as | bes8 bes g4 bes |
as4. f8 d bes | es8 es g4 bes |
as4. f8 g as | bes8 bes es,4 es( | es2) r4 | r2. |
}
}
\new PianoStaff {
<<
\new Staff {
\autoBeamOff
\key es \major
\time 3/4
es'4 << g2 { es''4 d'' } >> | <as' c''>2 <g' bes'>8[ <f' as'>] |
g'4( <es' bes'> <d' as'> | <es' g'>) <g bes es'> r4 |
<g bes es'>2. | <as c' es'>2 <as bes d'>4 |
<g bes es'> <bes es' bes'> << <c' es'>4 { as'8[ g'] } >> | <as es' g>4 << <d' f'>2 { as4( g) } >> |
<g c' es'>4( <c' es' g'> <bes d' g'>) | <c' f'>( <c' f' as'>) << <c' f'>4 { bes'8[ as'] } >> |
%<bes es' g'>2 <as es' as'>8[ <des' es' g'>] |
<c' es' g'>2 <as es' as'>8[ <des' es' g'>] |
<c' es' g'>4 << <d' f'>2 { c'4( b) } >> |
<c' d' as'>4( <bes d' f'> <bes d' g'>8[ <c' es' as'>]) | <bes es' bes'>4( <c' es' g'> <d' f' bes'>) |
<c' f' as'>4( <bes d' f'> <f bes d'>) | <es bes es'>4( <bes es' g'> <bes e' bes'>) |
<< as'4 { fes'8[ es'] } >> <d'( as'>4 <bes d'> | <bes es'>4( <b g'> <bes bes'>) |
% << as'4. c' 4 << es'4 { s8 f'8 } >> << d'4 { g'8[ as'] } >> >>
<< { as'4. s4. } { s4. f'8 g'[ as'] } { c'4 es' d' } >> |
<des' bes'>4( <as c' es'>) <f ces' es'> |
<g bes es'>2.( | <g bes es'>2 r4 |
}
\new Staff {
\clef "bass"
\autoBeamOff
\key es \major
\time 3/4
<es g>4 << es2 { bes4 b } >> | << es2 { c'4 des' d'} >> |
es4 <g bes> <f bes> | <es bes> es, r4 |
es,2. | as,4( f, bes,) |
es,( g, as,) | f,( bes, b,) |
c2( g,4) | as,( f, d,) |
des,4( des) c8([ bes,)] | as,2( g,4) |
f,4 (bes,4. as,8) | g,4( c bes,) |
g,( bes, as,) | g, % ???
es c |
<ces as>4 <bes, as> <f as> | <es g> <d f> <des f> |
<c f> <ces f> <bes f> | <es, g> as2 | es,2( c8[ bes,]) | <es, es>2 r4 |
}
>>
}
>>
</score>
== Cicha noc ==
https://polona.pl/item/swieta-noc,MjgxMTA2MTE/1/#info:metadata
<score vorbis="1">
%\new StaffGroup {
<<
\new Staff \with { midiInstrument="flute" } {
\tempo "Moderato"
\time 6/8
<<
\new Voice = "hi" { \relative g' { \stemUp
g8.[( a16]) g8 e4. | g8.[( a16]) g8 e4. |
d'4 d8 b4 b8 | c4 c8 g4. |
a4 a8 c8.[ b16] a8 | g8.[ a16] g8 e4 e8 |
a4 a8 c8.[ b16] a8 | g8.[ a16] g8 e4 e8 |
d'4 d8 f8.[ d16] b8 | c4.( e4) r8 |
c8.[( g16]) e8 g8.[ f16] d8 | c4.( c4) r8 |
} }
\new Lyrics \lyricsto "hi" { \lyricmode {
Ci -- cha noc, świę -- ta noc,
Po -- kój nie -- sie lu -- dziom wszem,
A u żłó -- bka Ma -- tka świę -- ta
Czu -- wa sa -- ma u -- śmie -- chnię -- ta
Nad Dzie -- cią -- tka snem,
Nad Dzie -- cią -- tka snem.
} }
\new Voice = "lo" { \relative g' { \stemDown
e8.[( f16]) e8 c4. | e8.[( f16]) e8 c4. |
f4 f8 f4 f8 | e4 e8 e4. |
f4 f8 a8.[ g16] f8 | e8.[ f16] e8 c4 c8 |
f4 f8 a8.[ g16] f8 | e8.[ f16] e8 c4 c8 |
g'4 g8 g4 f8 | e4.( g4) r8 |
e4 c8 b4 b8 |c4.( c4) r8 |
} }
>>
}
\new GrandStaff
<<
\new Staff {
<<
\new Voice = "hi" { \relative g' { \stemUp
g8.[( a16 g8]) e4. | g8.[( a16 g8]) e4. |
d'4 d8 b4 b8 | c4 c8 g4. |
a4 a8 c8.[( b16 a8]) | g8.[( a16 g8]) e4 e8 |
a4 a8 c8.[( b16 a8]) | g8.[( a16 g8]) e4 e8 |
d'4 d8 f8.[ d16 b8] | c4.( e4) r8 |
c8.[( g16 e8]) g8.[( f16 d8]) | c4.( c4) r8 |
} }
\new Voice = "lo" { \relative g' { \stemUp
e8.[( f16 e8]) c4. | e8.[( f16 e8]) c4. |
f4 f8 f4 f8 | e4 e8 e4. |
f4 f8 a8.[( g16 f8]) | e8.[( f16 e8]) c4 c8 |
f4 f8 a8.[( g16 f8]) | e8.[( f16 e8]) c4 c8 |
g'4 g8 g4. | g4.( g4) r8 |
e4 c8 b4 b8 |c4.( c4) r8 |
} }
>>
}
\new Staff {
\clef "bass"
<c g>4. <c g>4. | <c g>4. <c g>4. |
<g b>4 <g b>8 | <g d'>4 <g d'>8 | <c c'>4 <c c'>8 <c c'>4. |
<f c'>4. <f c'>4. | <c c'>4. <c c'>4. |
<f c'>4. <f c'>4. | <c c'>4. <c c'>4. |
<g b>4 <g b>8 << g4. { b4( f'8) } >> | <c' e'>4.( <c' e'>4) r8 |
<g, g>4 <g, g>8 <g, d>4 <g, f>8 | << { c4.( c4) } { e4( g8 e4) } >> r8 |
}
>>
>>
%}
</score>
<score raw = "1" vorbis = "1">
\version "2.12.3"
\header {
tagline = ""
}
\layout {
indent = #0
}
akordy = \chordmode {
\set chordChanges = ##t
c,1*3/4 c, g, c,
f, c, f, c,
g, a,:m
c,1*3/8 g, c,1*3/4
}
global = {
\autoBeamOff
% \key d \major
\time 6/8
\tempo 4. = 50
}
melodia = {
\global
\relative g' { \stemUp
g8.[( a16]) g8 e4. | g8.[( a16]) g8 e4. |
d'4 d8 b4 b8 | c4 c8 g4. |
a4 a8 c8.[ b16] a8 | g8.[ a16] g8 e4 e8 |
a4 a8 c8.[ b16] a8 | g8.[ a16] g8 e4 e8 |
d'4 d8 f8.[ d16] b8 | c4.( e4) r8 |
c8.[( g16]) e8 g8.[ f16] d8 | c4.( c4) r8 |
}
}
tekst = \lyricmode {
Ci -- cha noc, świę -- ta noc,
Po -- kój nie -- sie lu -- dziom wszem,
A u żłó -- bka Ma -- tka świę -- ta
Czu -- wa sa -- ma u -- śmie -- chnię -- ta
Nad Dzie -- cią -- tka snem,
Nad Dzie -- cią -- tka snem.
}
\score {
<<
\new ChordNames { \akordy }
\new Voice = "Air" { \melodia }
\new Lyrics \lyricsto "Air" { \tekst }
>>
\midi {}
\layout {}
}
</score>
== Marzenie o grajku ==
https://polona.pl/item/spiewnik-dla-przemyslowcow,OTM4NTAxNzg/57/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header {
tagline = ""
}
\score {
\relative c''{
\clef treble
\key es \major
\time 2/2
\tempo 4=120
es4 c g es | es d d2 |
d4 as' g d | f es es2 |
c'4 c bes bes | as as g g |
bes bes g g | f f es es |
g g as g | es'2. r4 |
g, g as g | c,2. r4 \bar "|."
}
\addlyrics { \small {
Że -- by mi też Pan Bóg dał,
By mnie ja -- ki gra -- jek chciał:
Gę -- ślę za nim bym no -- si -- ła,
Chle -- ba bym mu u -- pro -- si -- ła,
Niech -- by i -- no grał,
Niech -- by i -- no grał!
} }
\layout{}
\midi{}
}
</score>
== Hej z góry, z góry ==
https://polona.pl/item/piesni-ludu,MTE1OTUwMjk/154/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = ""
poet = ""
composer = ""
arranger = ""
tagline = ""
}
\score{
<<
\new Staff \with { midiInstrument = "flute" } {
\new Voice = "mel"
% \set Staff.midiInstrument = #"fiddle"
\relative c' {
\key f \major
\clef treble
\time 2/4
\tempo 4=120
\cadenzaOn s2 \cadenzaOff % problem techniczny: ozdobnik (\acciaccatura) na początku taktu powodował podwójne wyświetlanie metrum
r2 | r2 |
c4 c8 f |
g4. f8 |
e f g e |
c4 r4 |
bes'4 bes8 a |
g4. g8 |
c d c b |
c4 r4|
a8 c f4 f |
f8 e e4 g, |
bes8 bes d4 d |
d8 c c4 f, |
c'8 c bes4 g |
c2. |
a8 c g4 c |
f,2 r4 \bar "|."
}
}
\addlyrics { \small {
Hej, z_gó -- ry, z_gó -- ry
ja -- dą Ma -- zu -- ry.
Hej, z_gó -- ry, z_gó -- ry
ja -- dą Ma -- zu -- ry.
Je -- dzie, je -- dzie Ma -- zu -- re -- czek,
Wie -- zie, wie -- zie mi wia -- ne -- czek
Roz -- ma -- ry -- no -- wy,
roz -- ma -- ry -- no -- wy.
} }
\new PianoStaff <<
\new Staff = "RH"
\relative c'' {
\clef treble
\key f \major
\time 2/4
\tempo 4=120
% tu prawa ręka
\cadenzaOn s2 \cadenzaOff
\acciaccatura { fis8 } g8\staccato^\f [ c,\staccato ] \acciaccatura { dis8 } e \staccato [ g, \staccato ] |
\acciaccatura { b8 } c \staccato [ e, \staccato ] \acciaccatura { fis8 } g \staccato [ b, \staccato ] |
<g c>4 <a c>8 \staccato [ e' \staccato ] |
<< { g4. f8 } \\ { b,4 b } >> |
<c e>8[ f \staccato g \staccato e \staccato ] |
c4 r |
<bes f' bes>4 <d f bes>8[ a' \staccato ] |
<e g>4 <f g> |
<g c> <d as'> |
<e g>8 r \acciaccatura { fis8 } g8\staccato [ c,\staccato ] |
<a f'>8 \staccato [ c \staccato a \staccato c \staccato <a f'> \staccato ] r |
<b e>8 \staccato [ c \staccato b \staccato c \staccato <bes e> \staccato ] r |
<bes g'>8 \staccato [ c \staccato bes \staccato c \staccato <bes g'> \staccato ] r |
<a f'>8 \staccato [ c \staccato a \staccato c \staccato <a f'> \staccato ] r |
<c f> \staccato [ f, \staccato <d' f> \staccato bes \staccato <c e> \staccato g \staccato ] |
<c e> \staccato [ g \staccato <c d> \staccato f, \staccato <bes e> \staccato c \staccato ] |
<a f'> \staccato [ c \staccato <b f'> \staccato g \staccato <bes e> \staccato g \staccato ] |
<a f'> \staccato [ c \staccato ] <a f'>4-> r \bar "|."
}
\new Staff = "LH" {
%\relative c' {
\clef bass
\key f \major
\time 2/4
\tempo 4=120
% tu lewa ręka
\cadenzaOn s2 \cadenzaOff
\acciaccatura { fis'8 } g'8\staccato^\f [ c'\staccato ] \acciaccatura { dis'8 } e' \staccato [ g \staccato ] |
\acciaccatura { b8 } c' \staccato [ e \staccato ] \acciaccatura { fis8 } g \staccato [ b, \staccato ]
<c e>4 <a, e> |
<e, e> <g, d> |
c8\staccato [ d\staccato e\staccato g\staccato ] |
e4 \acciaccatura { fis8 } g \staccato [ c \staccato ] |
d4 g, |
c <d b> |
<e c> <f c> |
<c c'>8^\> \staccato [ b \staccato ] bes8\! \staccato r8 |
\time 3/4
<f, c>4-> r4 \acciaccatura { b,8 } c \staccato [ f, \staccato ] |
<g, c>4-> r4 \acciaccatura { b,8 } c \staccato [ c, \staccato ] |
<e, c>4-> r4 \acciaccatura { dis8 } e \staccato [ c \staccato ] |
f4 r4 \acciaccatura { b,8 } c \staccato [ f, \staccato ] |
a,4 \staccato g, \staccato c \staccato |
bes, \staccato a, \staccato g, \staccato |
f, \staccato d, \staccato c, \staccato |
c8 \staccato [ a, \staccato ] f,4-> r4 \bar "|."
}
>>
>>
\midi{}
\layout{}
}
</score>
== Skrzypek ==
https://polona.pl/item/spiewnik-dla-przemyslowcow,OTM4NTAxNzg/56/#item
<score raw=1 vorbis=1>
\version "2.20.0"
\header {
tagline = ""
}
melodia = \relative f' {
\clef treble
\key f \major
\time 3/4
\tempo 4=120
f4 a g | f2 c4 |
f4 a g | f2 c4 |
f e f | g a bes |
g2( c4) | c4 r2 |
\repeat volta 2 {
c4 c bes | g2 bes4 |
bes bes a | f2 a4 |
c,4 c e | g bes a |
}
\alternative {
{ f2( c'4) | c4 r 2 | }
{ f,2. | f4 r 2 \bar "|." }
}
}
\score {
\new Staff {
\melodia
\addlyrics { \small {
We -- zmę ja skrzy -- pki
z_zie -- lo -- nej li -- pki
i ze stru -- na -- mi zło -- te -- mi,
I na nich gra -- jąc,
lu -- dziom śpie -- wa -- jąc,
bę -- dę ja cho -- dził po zie -- mi,
zie -- mi.
} }
}
\layout{}
}
\score {
\new Staff \with { midiInstrument="fiddle" } {
\unfoldRepeats
\melodia
}
\midi{}
}
</score>
== Duma ukrainna ==
...na Górnym Szląsku - Rogera
<score vorbis="1" >
\relative cis' {
\key b \minor
\time 3/4
\tempo 4. = 45
b8 d d d d fis | e4 d r |
\time 2/4
d8 fis fis fis | fis a a fis |
g e e e | e fis g e |
\time 3/4
fis e d d d fis | e4 d r |
}
</score>
<score vorbis="1" >
\transpose d c {
\relative cis' {
\key d \major
\time 3/4
\tempo 4. = 45
b8 d d d d fis | e4 d r |
\time 2/4
d8 fis fis fis | fis a a fis |
g e e e | e fis g e |
\time 3/4
fis e d d d fis | e4 d r |
}
}
</score>
<score raw = "1" vorbis = "1">
\version "2.12.3"
\header {
tagline = ""
}
\layout {
indent = #0
}
akordy = \chordmode {
\set chordChanges = ##t
a,4:m a,:m a,:m | g, c, c, | c,4 c, c, c,
d,:m d,:m d,:m d,:m | a,4:m a,:m a,:m | g, c,2
}
global = {
\autoBeamOff
\key d \major
\time 3/4
\tempo 4. = 50
}
melodia = \transpose d c { \relative e' {
\global
b8 d d d d fis | e4 d r |
\time 2/4
d8 fis fis fis | fis a a fis |
g e e e | e fis g e |
\time 3/4
fis e d d d fis | e4 d r |
} }
tekst = \lyricmode {
Po -- wiedz, wdzię -- czna ko -- bzo mo -- ja,
U -- mie li -- co du -- ma two -- ja?
Cóż mo -- że być pię -- kniej -- sze -- go
nad czło -- wie -- ka ry -- cer -- skie -- go?
}
\score {
<<
\new ChordNames { \akordy }
\new Voice = "Air" { \melodia }
\new Lyrics \lyricsto "Air" { \tekst }
>>
\midi {}
\layout {}
}
</score>
== Wezmę ja kontusz ==
Gloger, ''Pieśni ludu'', s. 190
<score vorbis="1">
<<
\new Staff \with { midiInstrument = "flute" } {
%\set Staff.midiInstrument = #"flute"
% bes es
\autoBeamOff
\tempo "Poco andante"
\key g \minor
\time 3/4
\relative g' {
\unfoldRepeats {
\repeat volta 3 {
r2. | r2. |
g4^\p bes8^\markup{ \italic { śpiewnie } } a g fis | g4 bes8 a g fis |
g8 a bes4 c | d2. |
d8 d es d c b | c c d c bes a |
g8 bes d4 fis, | g2 r4 |
g4 bes8 a g fis | g4 bes8 a g fis |
g8 a bes4 c | d2. |
d8 d es d c b | c c d c bes a |
g8 bes d4 fis, | g2 r4 |
}
}
}
\addlyrics {
% _ _ Wez -- mę ja kon -- tusz, wez -- mę ja żu -- pan, sza -- blę przy -- pa -- szę,
}
}
\new PianoStaff {
<<
\new Staff {
\tempo 4. = 70
\key g \minor
\time 3/4
\unfoldRepeats {
\repeat volta 3 {
\clef "violin" a'4( c''8[ bes' a' g')] | << fis'2. { c'4. es'8[ d' c'] } >> |
<bes g'>4( <bes cis' es'> << <a c'>4 { g'8[ fis']) } >> |
<bes d' g'>4( <bes es' g'> << c'4) { <es' g>8[ <d' fis'>] } >> |
<< bes'4( { g'8[ a'] } >> <g' bes'>4 <c' g' c''>) |
<d' f' bes'>( <c' fis'> <bes g'>) |
<b e' as'>4( <c' e' g'>2) | <a es' ges'>4( << <bes d'>2) { f'4( fis') } >> |
<bes es' g'>4( <bes f'> <c' d' fis'>) | <bes d' g'>4 r2 |
<bes g'>4 <bes es'> <a c'> | <c' es'>4( <fis d'> <g e'>8[ <c' fis'>]) |
<bes g'>4 r <bes g'> | <a d' fis'>2 \clef "bass" << <c' d'>4 { d8([ a)] } >> |
<< d'4( { <g bes>8[ f] } >> <es as c' es'>4) <es as c'> | <es a c'>4( <f a d'>) <g bes d'> |
<g bes d'> <fis bes d'>( <fis a c'>) | <g bes>2 r4 |
} }
}
\new Staff {
\tempo 4. = 70
\clef bass
\key g \minor
\time 3/4
\relative c' {
\unfoldRepeats {
\repeat volta 3 {
c4( es8[ d c bes)] | r8 es,8([ d c bes a)] | g2. | g'4( es a,) |
bes( g es') | bes( a g) |
g4( c2) | f,4( bes2) |
es4( d2 ) | g4( bes8[ a g f] ) |
es4( g8[ f es d]) | c4( d8[ c bes a)] |
g4( g'8[ f es d]) | c4( bes8[ a g fis]) |
g4( c8[ bes] as4) | fis4( d g) |
es4( bes d) | g8[ d] <g, g'>4 r |
}
} }
}
>>
}
>>
</score>
== Idzie żołnierz borem, lasem ==
Gloger, ''Pieśni ludu'', s. 181
<score vorbis="1">
%\unfoldRepeats
<<
\new Staff \with { midiInstrument = "flute" } {
%\set Staff.midiInstrument = #"flute"
% as bes des es
\autoBeamOff
% \tempo 4. = 50
\tempo "Moderato assai"
\key f \minor
\time 3/4
\relative f' {
r2. | r2. | r2. | r2. | r2. | r2. |
\repeat volta 2 {
\autoBeamOff
f8 f c'4. f,8 | c'8 c es c | bes bes c f, | as as bes g | bes des c4. f,8 | \tuplet 3/2 { bes8[( as] g) } f4 f |
f8 f c'4. f,8 | c'8 c es c | bes bes c f, | as as bes g | bes des c4. f,8 | \tuplet 3/2 { bes8[( as] g) } f4 f | r2. | r2. |
}
f8^\pp^\markup{ \italic { dolcissimo } } f c'4. f,8 | c'8 c es c | bes bes c f, | as^\< as bes g\! | bes des c4.->^\> f,8\! |\tuplet 3/2 { bes8[( as] g) } f4 f( | f2.)( | f2 r4 \fermata \bar "|."
}
\addlyrics {
I -- dzie żoł -- nierz bo -- rem, la -- sem, bo -- rem, la -- sem,
Przy -- mie -- ra -- jąc gło -- du cza -- sem, gło -- du cza -- sem.
}
}
\new PianoStaff {
<<
\new Staff {
\tempo 4. = 50
\clef bass
\key f \minor
\time 3/4
<f c'>8^\markup{ \italic { Bardzo umiarkowanie. } }^\staccato[ <f c'>^\staccato] r4 <f bes>8^\staccato[ <f bes>^\staccato] |
r4 <f des'>8^\staccato[ <f des'>^\staccato] r4 |
<f bes>8^\staccato[ <f bes>^\staccato] r4 <es c'>8^\staccato[ <es c'>^\staccato] |
r4 <f as>8^\staccato[ <f as>^\staccato] r4 |
<es c'>8[ <es c'>] r4 <f as>4^\staccato |
r4 <f as>2 |
\repeat volta 2 {
<f as>2^\p <f as f'>4 | r4 <f as f'>4 <g bes f'>
<as c' f'>4 <f as f'> <g c f'> | <g bes es>4 <f as f'>2 | <bes des' g'>4 <as c' f'>2 |
r16 f[( as c']) r f[( as c'] f'[ c' as f]) | r es[( as c'] es'[ c' as es]) r es[ g <des' es'>] |
r es[( f <c' es'>]) r es[( as <c' es'>]) r es[( g <des' es'>]) |
r es[( g <des' es'>]) r es[( as <c' es'>]) r f[( as <c' es'>]) |
r g[( bes <c' e'>]) r f[( as c'] e'8) r8 |
<f c'>8^\staccato[ <f c'^\staccato>] r4 <f bes>8^\staccato[ <f bes^\staccato>] | r4 <f bes>2
}
\clef "violin" r16 f[( a( c'(] <f a c' f'>2))) | <f' as' f''>( <ges' bes' bes''>4) | <as' c'' as''> <as c' as'> <bes f' as'> |
<bes f' bes'> <as es' as'>2-> | <g des' g'>4 <f c' f'>2 |
<f c' f'>4^\pp <f bes f'>2 | <f c' f'>2. \fermata \bar "\."
}
\new Staff {
\tempo 4. = 50
\clef bass
\key f \minor
\time 3/4
r4 <des, des>8_\staccato[ <des, des>_\staccato] r4 |
<g,, g,>8_\staccato[ <g,, g,>_\staccato] r4 <c, c>8_\staccato[ <c, c>_\staccato] |
r4 <c, c>8_\staccato[ <c, c>_\staccato] r4 |
<f, c>8_\staccato[ <f, c>_\staccato] r4 <c, c>8_\staccato[ <c, c>_\staccato] |
r4 <f, c>8_\staccato[ <f, c>_\staccato] r4 |
<f, c>8_\staccato[ <f, c>_\staccato] r4 <f, c>4 |
\repeat volta 2 {
r4^\p <f, c>2 | <f, es >2 <f, des>4 |
<f, c>4 r8 es8[( des bes,]) | <f, des>4 <f, c>2 | <f, e>4 <f, c>2 |
<es, es>4 <des, des>2 | <as,, as,>2 <g,, g,>4 | <g,, g,> es, f,8[ des,] |
des8[ bes,] as,[ g] f4 | <c, c>4 <g, c>( <g, c>8) r8 |
r4 <des, des>8\staccato[ <des, des>_\staccato] r4 |
<f, c>8\staccato[ <f, c>_\staccato] r4 <f, c>4 |
}
<f, es>2. | << f2. { es'2( des'4) } >> | <f c'>4 <es f>^\< <des f>\! |
<bes, f>4 <f, c f>2^\> | <f, bes,>4\! << as,2 { f,4( es,) } >> |
<des, as,>4^\pp <des, g,>2 | <f,, f,>8.[ c,16] f,2 \fermata \bar "|."
}
>>
}
>>
% as bes des es
</score>
zbiór W. Adamskiego:
<score vorbis="1" >
\relative e' {
\key fis \minor
\time 3/4
\tempo 4. = 45
e8. e16 cis'4 a | cis8( e4) e8 cis a | cis8( e4) e8 cis a |
b8 b cis4 e, | a8( cis4) cis8 b a | a8( cis4) cis8 b a |
b8 b cis4. e,8 | fis( a4) a8 gis fis |
b8 b cis4. e,8 | fis( a4) a8 gis fis \bar "|."
}
</score>
Kolberg, ''Sandomierskie'', s. 156
<score vorbis="1" >
\relative a' {
\autoBeamOff
\key a \minor
\time 3/4
\tempo 4. = 60
a8 a e'4. a,8 | e' e g e d d | e a,
c8 c d4 b8 | d f e4. a,8 | \tuplet 3/2 [d8 c b] a4 a \bar "|."
}
</score>
ze zbioru W. Świerczka:
<score vorbis="1" >
\relative e' {
\autoBeamOff
\key e \minor
\tempo 4. = 45
\time 3/4
e8 e <g b>4 <e g> |
\time 2/4
<fis d'>8 <b d> <b d>16[ <a c>] <g b>8
<fis a>8 <fis a> <g b> <e g> \break
\time 3/4
<fis a>8 <e c'> <dis b'>4 e |
\time 2/4
<fis a>8 <fis a> <g b> <e g>
\time 3/4
<dis b'>16[ a'] <e g>8 <b fis'>4 e |
}
\addlyrics {
I -- dzie żoł -- nierz bo -- rem, la -- sem, bo -- rem, la -- sem,
Przy -- mie -- ra -- jąc z_gło -- du cza -- sem, z_gło -- du cza -- sem.
}
</score>
wersja [?]
<score vorbis="1" >
\relative e' {
\autoBeamOff
\key e \minor
\tempo 4. = 45
\time 3/4
e8 e <g b>4 <e g>
\time 2/4
g8 b <fis d'>8 <b d> |
\time 3/4
<b d>16[ <a c>] <g b>8
<fis a>4 <g b> |
% \time 3/4
<fis a>8 <e c'> <dis b'>4 e
\time 2/4
<fis a>8 <fis a> <g b> <e g>
\time 3/4
<dis b'>16[ a'] <e g>8 <b fis'>4 e \bar "|."
}
\addlyrics {
I -- dzie żoł -- nierz bo -- rem, la -- sem, bo -- rem, la -- sem,
Przy -- mie -- ra -- jąc z_gło -- du cza -- sem, z_gło -- du cza -- sem.
}
</score>
== Jeszcze jeden mazur dzisiaj ==
=== (Śpiewnik strzelecki) ===
<score vorbis="1" midi="1">
%VoiceLo = relative g' {
%}
%VoiceHi = relative {}
\new Staff {
%\set Staff.midiInstrument = #"fiddle"
\autoBeamOff
\tempo 4. = 116
\key d \minor
\time 3/4
<<
\new Voice { \relative d' {
d4. e8 f g | a8. f16 d4 f |
e8 e a4. g8 f4 a r |
d,4. e8 f g | a8. f16 d4 f |
e8. e16 a4. cis,8 | e4 d r |
c4. e8 g bes | d8. c16 b4 c |
e4. d8 c g | bes4 a r |
d,4. e8 f g | a8. f16 d4 f |
e8 e a4. g8 f4 a r |
d,4. e8 f g | a8. f16 d4 f |
e8. e16 a4. cis,8 | e4 d r |
} }
\new Voice { \relative d' {
d4. d8 d e | f8. f16 d4 d |
e8 d cis4 e | d f r |
d4. d8 d e | f8. f16 d4 d |
e8. d16 cis4 a | cis4 d r |
c4. e8 g e | f8. a16 gis4 a |
c4 e, e8 e | g4 f r |
d4. d8 d e | f8. f16 d4 d |
e8 d cis4 e | d f r |
d4. d8 d e | f8. f16 d4 d |
e8. d16 cis4 a | cis4 d r |
} }
>>
}
\addlyrics {
}
</score>
=== Śpiewnik Barańskiego ''Jeszcze Polska...'' ===
<score vorbis="1" >
\new GrandStaff {
<<
\new Staff {
\tempo 4 = 160
\time 3/4
\key d \minor
\new Voice = "high" { \relative d' {
d4. e8 f g | a8. f16 d4 f |
e8. a16 e4 a | d,4 <f a>2 |
d4. e8 f g | a8. f16 d4 f |
e8. a16 e4 a | d, d r |
c4. e8 g bes | <bes d>8. <a c>16 <gis b>4 <a c> |
<c e>4. \fermata <d bes>8 <bes g> <g e> | <bes g>4 <a f>2 |
d,4. e8 f g | a8. f16 d4 f |
e8. a16 e4 a | d, d r |
d4. e8 f g | a8. f16 d4 f |
e8. a16 e4 a | d, <f a d>\arpeggio r |
% f16[a16 d a f] r8. |
} }
}
\new Lyrics \lyricsto "high" { \lyricmode {
Je -- szcze je -- den ma -- zur dzi -- siaj,
Choć po -- ra -- nek świ -- ta,
„Czy po -- zwo -- li pan -- na Kry -- sia?“
Mło -- dy u -- łan py -- ta.
I nie -- dłu -- go bła -- ga, pro -- si,
Boć to w_pol -- skiej zie -- mi,
W_pier -- wszą pa -- rę ją u -- no -- si,
A sto par za ni -- mi,
W_pier -- wszą pa -- rę ją u -- no -- si,
A sto par za ni -- mi.
} }
\new Staff {
\clef "bass"
\key d \minor
\time 3/4
d,4 <f a> <f a> | d, <f a> <f a> |
a, <e g a> <e g a> | d, <f a>2 |
d,4 <f a> <f a> | d, <f a> <f a> |
a, <e g a> <e g a> | d, <f a> r |
c <e g bes> <e g bes> | f, <f a> <f a> |
c <g bes c'> <g bes c'> | f, <f a c>2 |
d,4 <f a> <f a> | d, <f a> <f a> |
a, <e g a> <e g a> | d, <f a> r |
d,4 <f a> <f a> | d, <f a> <f a> |
a, <e g a> <e g a> | d, <f a> r |
}
>>
}
</score>
== O mój rozmarynie ==
<score raw = "1" vorbis = "1">
\version "2.12.3"
%\language "deutsch"
\header {
tagline = ""
}
\layout {
indent = #0
}
akkorde = \chordmode {
\germanChords
\set chordChanges = ##t
\transpose e d {
e,2:m a,:m b, e,:m | e,2:m c, a,4:m d,4:7 g,2
e,:m a,:m b,:7 a,:m | b,: e,:m
e,:m a,:m a,:m a,:m | b,:7 e,:m
}
}
global = {
\autoBeamOff
\tempo 4. = 55
\time 4/4
% \key e \minor
}
melodie = \relative e' {
\global
\transpose e d { \relative e' {
e8 e e e a4 g | fis g8 fis e2 |
b'8 b b b e4 d | c d8 c b2 |
b8 b b b c4 b | a8. g16 fis8 g a4 b | fis g8 a b2 |
b8 b b b c4 b | a8. g16 fis8 g a4 g | fis g8 fis e2 |
}
}
}
text = \lyricmode {
}
\score {
<<
\new ChordNames { \akkorde }
\new Voice = "Lied" { \melodie }
\new Lyrics \lyricsto "Lied" { \text }
>>
\midi {}
\layout {}
}
</score>
=== Wersja 2 ===
<score vorbis="1" >
\relative e' {
\key e \minor
\time 4/4
e8. e16 es8 e a4 g | fis g8 fis e2 |
b'8. b16 bes8 b e4 d | c d8 c b2 |
b8. b16 bes8 b c4 b | a8. g16 fis8 e a4 g | fis g8 a b2 |
b8. b16 bes8 b c4 b | a8. g16 fis8 g a4 g | fis g8 fis e2 |
}
</score>
=== Wersja 3 ===
Śpiewnik legionisty
<score raw="1" vorbis="1" >
\version "2.12.3"
%\language "deutsch"
\header {
tagline = ""
}
\layout {
indent = #0
}
akkorde = \chordmode {
\germanChords
\set chordChanges = ##t
\transpose e d {
e,2:m a,:m b, e,:m | e,2:m c, a,4:m d,4:7 g,2
e,:m a,:m b,:7 a,:m | b,: e,:m
e,:m a,:m a,:m a,:m | b,:7 e,:m
}
}
global = {
\autoBeamOff
\tempo 4. = 60
\time 4/4
\key d \minor
}
melodie = {
\relative d' {
\global
d8 d d d g4 f | e f8 e d2 |
a'8 a a a d4 c | bes c8 bes a2 |
a8 a a a bes4 a | g8 f e d | g4 f |
e4 f8 g a2 |
a8 a a a bes4 a | g8 f e d | g4 f |
e4 f8 e d2 |
}
}
text = \lyricmode {
}
\score {
<<
\new ChordNames { \akkorde }
\new Voice = "Lied" { \melodie }
\new Lyrics \lyricsto "Lied" { \text }
>>
\midi {}
\layout {}
}
</score>
== Mazurek Dąbrowskiego ==
=== (aranżacja K. Sikorskiego, mkdin.gov.pl) ===
==== Na głos ====
<score raw="1" vorbis="1">
\version "2.12.3"
\header {
tagline = ""
}
\layout {
indent = #0
}
global = {
\set Staff.midiInstrument="fiddle"
\autoBeamOff
\tempo 4 = 116
\time 3/4
\key f \major
}
melodia =
\relative f' { \global
a8. bes16 c4 c | c8. a16 d8[ c] bes[ a] | g8. g16 c4. bes8 | bes4 a r |
a8. bes16 c4 c | c8. a16 d8[ c] bes[ a] | g8. g16 c4. e,8 | g4 f r |
\repeat volta 2 {
g4 g4. bes8 | bes[ a] a2 | bes8. bes16 bes4 bes8 d | d4 c2 |
a8 c f4. e8 | e[ d] d2 | c8 c bes4. e,8 | g4 f r |
}
}
tekst = \lyricmode {
Je -- szcze Pol -- ska nie zgi -- nę -- ła, kie -- dy my ży -- je -- my,
Co nam ob -- ca prze -- moc wzię -- ła, sza -- blą od -- bie -- rze -- my.
Marsz, marsz, Dą -- bro -- wski, z_zie -- mi wło -- skiej do Pol -- ski!
Za two -- im prze -- wo -- dem złą -- czym się z_na -- ro -- dem.
}
\score {
<<
\new Staff \with { midiInstrument="violin" } {
\new Voice = "Air" \with { midiInstrument="violin" } { \melodia }
}
\new Lyrics \lyricsto "Air" { \tekst }
>>
\layout {}
}
\score {
<<
% \unfoldRepeats
% \new ChordNames { \akkorde }
\unfoldRepeats
\new Voice = "Air" { \melodia }
% \unfoldRepeats
% \new Lyrics \lyricsto "Lied" { \text }
>>
\midi {}
}
</score>
<br>
==== Na fortepian 1 ====
<score vorbis="1">
\new PianoStaff <<
\new Staff {
\autoBeamOff
\tempo 4 = 116
% \relative f {
\time 3/4
\key f \major
<<
\new Voice { \relative f' {
\stemUp a8. bes16 c4 c | c8. a16 d8[ c] <bes g>[ <a f>] | g8. g16 <c g>4. <bes f>8 | bes4 a r |
a8. bes16 c4 c | c8. a16 d8[ c] bes[ a] | g8. g16 c4. e,8 | <bes e g>4 <c f> r |
g'4 g4. bes8 | bes[ a] a2 | bes8. bes16 bes4 <f bes>8 <g d'> | d'4 c2 |
a8 c f4. e8 | e[ d] d2 | c8 c bes4. e,8 | g4 f r |
g4 g4. bes8 | bes[ a] a2 | bes8. bes16 bes4 <f bes>8 <g d'> | d'4 c2 |
a8 c f4. e8 | e[ d] d2 | c8 c bes4. e,8 | g4 f r |
} }
\new Voice {
\stemDown <c' f'>4 <c' f'> <c' e' g'> | <c' f' a'> <c' f'> d' | <c' f'> c' \grace {e'8[ f']} <c' g'>4 | c'2 r4 |
<c' f'>4 <c' f'> <c' e' g'> | <c' f' a'>4 <c' f'> d' | <c' f'>4 c' \grace {e'8[ d'] e' [c']} \afterGrace r4 { bes8 } | c'2 r4 |
<c' e'>4 << e' { c'8[ f'] } >> <c' e'>4 | << f'2 { d'8[ c'] c'4 } >> <d' f'> | << d'2 { f'4. f'8 } >> d'4 |
f'4 \grace { bes'8[ a'] } <f' a'>2 |
<c' f'>4 f' \grace { a'8[ bes'] } <f' c'>4 | <f' c'> \afterGrace f' { bes'8[ a'] } \afterGrace d'4 { g'8[ f'] } | << <c' g'>2 { f'4. e'8 } >> d'8[ c'] |
<< c'2 { <bes e' g'>4 <a f'> } >> r4 |
<c' e'>4 << e' { c'8[ f'] } >> <c' e'>4 | << f'2 { d'8[ c'] c'4 } >> <d' f'> | << d'2 { f'4. f'8 } >> d'4 %f'8[ g']
| f'4 \grace { bes'8[ a'] } <f' a'>2 |
<c' f'>4 f' \grace { a'8[ bes'] } <f' c'>4 | <f' c'> \afterGrace f' { bes'8[ a'] } \afterGrace d'4 { g'8[ f'] } | << <c' g'>2 { f'4. e'8 } >> d'8[ c'] |
<< c'2 { <bes e' g'>4 <a f'> } >> r4 |
}
>>
}
\new Staff {
\clef "bass"
\key f \major
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>4. <d, d>8 <e, e>4 | <f, f>4. <c, c>8 <a,, a,>[ <g,, g,>] |
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>2 r4 |
}
>>
</score>
==== Na fortepian 2 ====
<score vorbis="1">
\new PianoStaff <<
\new Staff {
\autoBeamOff
\tempo 4 = 116
% \relative f {
\time 3/4
\key f \major
<<
\new Voice { \relative f' {
\stemUp a8. bes16 c4 c | c8. a16 d8[ c] <bes g>[ <a f>] | g8. g16 <c g>4. <bes f>8 | bes4 a r |
a8. bes16 c4 c | c8. a16 d8[ c] bes[ a] | g8. g16 c4. << e,8 bes >> | <bes e g>4 <c f> r |
g'4 g4. bes8 | bes[ a] a2 | bes8. bes16 bes4 <f bes>8 <g d'> | d'4 c2 |
a8 c f4. e8 | e[ d] d2 | c8 c bes4. e,8 | g4 f r |
g4 g4. bes8 | bes[ a] a2 | bes8. bes16 bes4 <f bes>8 <g d'> | d'4 c2 |
a8 c f4. e8 | e[ d] d2 | c8 c bes4. e,8 | g4 f r |
} }
\new Voice {
\stemDown <c' f'>4 <c' f'> <c' e' g'> | <c' f' a'> <c' f'> d' | <f' c''> << c' { e'8[ f'] } >> <c' g'>4 | c'2 r4 |
<c' f'>4 <c' f'> <c' e' g'> | <c' f' a'>4 <c' f'> d' | <c' f'>4 << c'4 { e'8[ d'] e'8[ c'] } >> | c'2 r4 |
<c' e'>4 << e' { c'8[ f'] } >> <c' e'>4 | << f'2 { d'8[ c'] c'4 } >> <d' f'> | << d'2 { f'4. f'8 } >> d'4 |
<< f'4 { bes'8[ a'] } >> <f' a'>2 |
<c' f'>4 << f' { a'8[ bes'] } >> <f' c'>4 | <f' c'>4 << f' { bes'8[ a'] } >> << d'4 { g'8[ f'] } >> |
<< <c' g'>2 { f'4. e'8 } >> d'8[ c'] |
<< c'2 { <bes e' g'>4 <a f'> } >> r4 |
<c' e'>4 << e' { c'8[ f'] } >> <c' e'>4 | << f'2 { d'8[ c'] c'4 } >> <d' f'> | << d'2 { f'4. f'8 } >> d'4
| << f'4 { bes'8[ a'] } >> <f' a'>2 |
<c' f'>4 << f' { a'8[ bes'] } >> <f' c'>4 | <f' c'> << f' { bes'8[ a'] } >> << d'4 { g'8[ f'] } >> | << <c' g'>2 { f'4. e'8 } >> d'8[ c'] |
<< c'2 { <bes e' g'>4 <a f'> } >> r4 |
}
>>
}
\new Staff {
\clef "bass"
\key f \major
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>4. <d, d>8 <e, e>4 | <f, f>4. <c, c>8 <a,, a,>[ <g,, g,>] |
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>2 r4 |
}
>>
</score>
==== Na głos i fortepian ====
<br>
<score vorbis="1">
<<
\new Staff {
\set Staff.midiInstrument = #"fiddle"
\relative f' {
\autoBeamOff
\tempo 4 = 116
\time 3/4
\key f \major
\new Voice = "Air" {
a8. bes16 c4 c | c8. a16 d8( c) bes( a) | g8. g16 c4. bes8 | bes4 a r |
a8. bes16 c4 c | c8. a16 d8( c) bes( a) | g8. g16 c4. e,8 | g4 f r \bar ".|:"
g4 g4. bes8 | bes( a) a2 | bes8. bes16 bes4 bes8 d | d4 c2 |
a8 c f4. e8 | e( d) d2 | c8 c bes4. e,8 | g4 f r \bar ":|."
g4 g4. bes8 | bes( a) a2 | bes8. bes16 bes4 bes8 d | d4 c2 |
a8 c f4. e8 | e( d) d2 | c8 c bes4. e,8 | g4 f r \bar "|."
}
}
}
\new Lyrics \lyricsto "Air" {
\lyricmode {
Je -- szcze Pol -- ska nie zgi -- nę -- ła, kie -- dy my ży -- je -- my,
Co nam ob -- ca prze -- moc wzię -- ła, sza -- blą od -- bie -- rze -- my.
Marsz, marsz, Dą -- bro -- wski, z_zie -- mi wło -- skiej do Pol -- ski!
Za two -- im prze -- wo -- dem złą -- czym się z_na -- ro -- dem.
Marsz, marsz, Dą -- bro -- wski, z_zie -- mi wło -- skiej do Pol -- ski!
Za two -- im prze -- wo -- dem złą -- czym się z_na -- ro -- dem.
}
}
\new PianoStaff <<
\new Staff {
\relative f {
\time 3/4
\key f \major
<f a c>4 <f c' f> <c' e g> | <c f a> <c f> <g d' g>8 f'8 | <g, c f>4 <g c e>8 f'8 <g, c g'>4 | << c2 { <bes g'>4 <a c f> } >> r |
<f a c>4 <f c' f> <c' e g> | <c f a> <c f> <g d' g>8 f'8 | <g, c f>4 <g c e>8 d'8 <bes c e>4 | << c2 { <bes e>4 <a c f> } >> r |
<g c e>4 <g c e>8[ <d' f>] <c e g>8[ bes] | << f'2 { <d bes>8[ <a c>] <a c>4 } >> <a d f>4 | <bes d f>4. <bes d f>8 <bes d f>[ g'] | <d f bes>8[ a'] <c, f a>2 |
<< <c f> { a'4. bes8 } >> <c, f c'>4 | << <d f>2 { c'4 bes8[ a] } >> <bes, d g>8[ f'] | << <g, c>2 { f'4. e8 } >> <g, bes d>8[ e'] | << c2 { <bes e>4 <a c f> } >> r |
<g c e>4 <g c e>8[ <d' f>] <c e g>8[ bes] | << f'2 { <d bes>8[ <a c>] <a c>4 } >> <a d f>4 | <bes d f>4. <bes d f>8 <bes d f>[ g'] | <d f bes>8[ a'] <c, f a>2 |
<< <c f> { a'4. bes8 } >> <c, f c'>4 | << <d f>2 { c'4 bes8[ a] } >> <bes, d g>8[ f'] | << <g, c>2 { f4. e'8 } >> <g, bes d>8[ e'] | << c2 { <bes e>4 <a c f> } >> r |
}
}
\new Staff {
\clef "bass"
\key f \major
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>4. <d, d>8 <e, e>4 | <f, f>4. <c, c>8 <a,, a,>[ <g,, g,>] |
<f,, f,>4 <a,, a,> <c, c> | <f, f> <a,, a,> <bes,, bes,> | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <bes,, bes,>] |
<c, c>2 <c, c>4 | <f, f>4. <e, e>8 <d, d>[ <c, c>] | <bes,, bes,>2 <bes,, bes,>4 | <f,, f,>4. <f,, f,>8 <a,, a,>[ <c, c>] |
<f, f>2 <a,, a,>4 | <bes,, bes,>2 <bes,, bes,>4 | <c, c>2 <c, c>4 | <f,, f,>2 r4 |
}
>>
>>
</score>
=== Lead sheet ===
<score raw="1" vorbis="1" >
\version "2.12.3"
\header {
tagline = ""
}
\layout {
indent = #0
}
akkorde = \chordmode {
\germanChords
\set chordChanges = ##t
f,2 c,4 f,2 bes,4 c,1*3/4 f,1*3/4
f,2 c,4 f,2 bes,4 c,1*3/4 f,1*3/4
\repeat volta 2 {
c,1*3/4 f,1*3/4 bes,1*3/4 f,1*3/4
f,1*3/4 bes,1*3/4 c,1*3/4 c,4 f,2
}
% c,1*3/4 f,1*3/4 bes,1*3/4 f,1*3/4
% f,1*3/4 bes,1*3/4 c,1*3/4 c,4 f,2
}
global = {
\autoBeamOff
\tempo 4 = 116
\time 3/4
\key f \major
}
melodie = \relative f' {
\global
a8. bes16 c4 c | c8. a16 d8( c) bes( a) | g8. g16 c4. bes8 | bes4 a r |
a8. bes16 c4 c | c8. a16 d8( c) bes( a) | g8. g16 c4. e,8 | g4 f r \bar ".|:"
\repeat volta 2 {
g4 g4. bes8 | bes( a) a2 | bes8. bes16 bes4 bes8 d | d4 c2 |
a8 c f4. e8 | e[ d] d2 | c8 c bes4. e,8 | g4 f r \bar ":|."
}
% g4 g4. bes8 | bes[ a] a2 | bes8. bes16 bes4 bes8 d | d4 c2 |
% a8 c f4. e8 | e[ d] d2 | c8 c bes4. e,8 | g4 f r \bar "|."
}
text = \lyricmode {
Je -- szcze Pol -- ska nie zgi -- nę -- ła, kie -- dy my ży -- je -- my,
Co nam ob -- ca prze -- moc wzię -- ła, sza -- blą od -- bie -- rze -- my.
Marsz, marsz, Dą -- bro -- wski, z_zie -- mi wło -- skiej do Pol -- ski!
Za two -- im prze -- wo -- dem złą -- czym się z_na -- ro -- dem.
% Marsz, marsz, Dą -- bro -- wski, z_zie -- mi wło -- skiej do Pol -- ski!
% Za two -- im prze -- wo -- dem złą -- czym się z_na -- ro -- dem.
}
\score {
<<
\new ChordNames { \akkorde }
\new Voice = "Lied" { \melodie }
\new Lyrics \lyricsto "Lied" { \text }
>>
\layout {}
}
\score {
<<
\unfoldRepeats
\new ChordNames { \akkorde }
\unfoldRepeats
\new Voice = "Lied" { \melodie }
% \unfoldRepeats
\new Lyrics \lyricsto "Lied" { \text }
>>
\midi {}
%\vorbis {}
%\layout {}
}
</score>
=== Barański, ''Jeszcze Polska nie zginęła'' ===
<score vorbis="1">
% es as bes
\new GrandStaff {
<<
\new Staff {
\autoBeamOff
\tempo 8 = 116
\key es \major
\time 3/8
% \partial 8 s8 |
{
<es' g'>16 <f' as'> <g' bes'>8 <g' bes'> | <g' bes'>16 <es' g'> <as' c''>16[ <g' bes'>] <f' as'>[ <es' g'>] |
<d' f'> <d' f'> <f' bes'>8. <f' as'>16 | <f' as'>[ <es' g'>] <es' g'>8 r |
<es' g'>16 <f' as'> <g' bes'>8 <g' bes'> | <g' bes'>16 <es' g'> <as' c''>16[ <g' bes'>] <f' as'>[ <es' g'>] |
<bes g'> <d' f'> <f' bes'>8. <bes d'>16 | <as d' f'>8 <g bes es'> r |
<as bes d' f'>8 <as bes d' f'>8. <d' f' as'>16 | <f' as'>16.[ <es' g'>32] <es' g'>8 r |
<f' as'>16 <f' as'> <f' as'>[( <es' g'>]) <f' as'>16 <as' c''> | <as' c''>16[ <g' bes'>] <g' bes'>8 r |
<es' g'>16 <g' bes'> <g' es''>[ <bes' d''>] <as' c''>[ <g' bes'>] | <gis' b'>16.[ <as' c''>32] <as' c''>8 r |
<d' f'>16 <d' f'> <d' bes'>8. <f' as'>16 | <f' as'>[( <es' g'>]) <es' g'>8 r |
<as bes d' f'>8 <as bes d' f'>8. <d' f' as'>16 | <f' as'>16.[ <es' g'>32] <es' g'>8 r |
<f' as'>16 <f' as'> <f' as'>[( <es' g'>]) <f' as'>16 <as' c''> | <as' c''>16[ <g' bes'>] <g' bes'>8 r |
<es' g'>16 <g' bes'> <g' es''>[ <bes' d''>] <as' c''>[ <g' bes'>] | <gis' b'>16.[ <as' c''>32] <as' c''>8 r |
<d' f'>16 <d' f'> <d' bes'>8. <bes d'>16 | <as d' f'>16[( <g bes es'>]) <g bes es'>8 r |
}
}
\new Staff {
\clef "bass"
\key es \major
<es, es>8[ <bes, es g> <bes, es g>] | <es, es>8[ <bes, es g> <bes, es g>] |
<bes,, bes,>[ <d f as bes> <d f as bes>] | <es, es>8[ <bes, es g> <bes, es g>] |
<es, es>8[ <bes, es g> <bes, es g>] | <es, es>8[ <bes, es g> <bes, es g>] |
<bes,, bes,>[ <bes, f as> <bes, f as>] | bes,[ <es, es>] r |
<bes,, bes,>8[ <d, d> <bes,, bes,>] | <es, es>[ <es g bes> <es g bes>] |
<bes,, bes,>[ <d f as bes> <d f as bes>] | <es, es>[ <es g bes> <es g bes>] |
<es, es>[ <g bes es'> <g bes es'>] | <as, as>[ <es as c'> <es as c'>] |
<bes, bes>[ <bes f as> <bes f as>] | <es, es>[ <bes es g> <bes es g>] |
<bes,, bes,>8[ <d, d> <bes,, bes,>] | <es, es>[ <es g bes> <es g bes>] |
<bes,, bes,>[ <d f as bes> <d f as bes>] | <es, es>[ <es g bes> <es g bes>] |
<g, g>[ <g bes es'> <g bes es'>] | <as, as>[ <es as c'> <es as c'>] |
<bes, bes>[ <bes, f as>8. <bes, f as>16] | bes,8[ <es, es>] r |
}
>>
}
</score>
== Pieśń poranna / wieczorna ==
<score vorbis="1">
% fis
<<
\new ChordNames { \chordmode {
\set chordChanges = ##t
s4 f,2 | s4 c,2 |
s4 c,2:7 | s4 f,2 |
s4 f,2 | s4 d,2:7 |
s4 g,2 | s4 f,2 |
}
}
\new Voice = "hi" {
\autoBeamOff
\tempo 4 = 100
\key f \major
\time 3/4
\relative d' { \stemUp
f8 g a4 a | bes8 a a4 g |
g8 a bes4 bes | c8 bes bes4 a |
a8 bes c4 c | d8 c c4 bes |
bes8 g f4 a | bes8 e, g4 f |
}
}
>>
</score>
<score vorbis="1">
% bes
\new Staff {
<<
\new Voice = "hi" {
\autoBeamOff
\tempo 4 = 100
\key f \major
\time 3/4
\relative d' { \stemUp
f8 g a4 a | bes8 a a4 g |
g8 a bes4 bes | c8 bes bes4 a |
a8 bes c4 c | d8 c c4 bes |
bes8 g f4 a | bes8 e, g4 f |
}
}
\new Voice = "lo" {
\autoBeamOff
\tempo 4 = 100
\key f \major
\time 3/4
\relative d' { \stemDown
f8 e f4 f | g8 f f4 e |
e8 f g4 g | a8 g g4 f |
f8 g a4 a | bes8 a a4 g |
g8 e f4 f | d8 c e4 f |
}
}
>>
}
</score>
== na 2 głosy ==
<score vorbis="1">
\new GrandStaff {
<<
% \new Voice = "hi" {
\new Staff
%\with { midiInstrument="flute" }
{
\autoBeamOff
\relative e' {
e4^\f a8 b c4 a | b gis a2 |
e4 a8 b c4 d | e2 d |
g,4 c8 d e4 d | c b a2 |
a4 d8 e f4 d | c2 b |
e,4 a8 b c4 a | b gis a2 |
a4^\cresc a8 a d4 e | f1^\ff |
e2 e,4 d' | c2-> b-> | a1-> \fermata \bar "|."
} }
% \new Voice = "lo" {
\new Staff
%\with { midiInstrument="piano" }
{
\autoBeamOff
\relative e' {
e4^\f a8 b c4 a | b gis a2 |
e4 a8 b c4 fis, | g4( c) b2 |
g4 e8 g c4 g | a4 e f2 |
a4 f8 a d4 f, | e( a) gis2 |
e4 a8 b c4 a | b gis a2 |
a4_\cresc g8 g f4 a | d1_\ff |
e2 e,4 b' | a2-> e-> | a1-> \fermata \bar "|."
} }
>>
}
</score>
<br>
== na 3 głosy ==
<score vorbis="1">
\new ChoirStaff {
<<
\new Staff \with { midiInstrument="violin" } {
<<
\new Voice = "hi" {
\autoBeamOff
\relative e' { \stemUp
e4^\f a8 b c4 a | b gis a2 |
e4 a8 b c4 d | e2 d |
g,4 c8 d e4 d | c b a2 |
a4 d8 e f4 d | c2 b |
e,4 a8 b c4 a | b gis a2 |
a4^\cresc a8 a d4 e | f1^\ff |
e2 e,4 d' | c2-> b-> | a1-> \fermata \bar "|."
}
}
\new Voice = "lo" {
\autoBeamOff
\relative e' { \stemDown
e4^\f a8 b c4 a | f e e2 |
e4 a8 b c4 c | c( a) b2 |
g4 g8 b c4 b | a4 g f2 |
a4 a8 c d4 a | a2 gis |
e4 a8 b c4 a | f e e2 |
a4_\cresc a8 a a4 cis | d1_\ff |
e2 e,4 b' | a2-> gis-> | a1-> \fermata \bar "|."
}
}
>>
}
\new Staff \with { midiInstrument="cello" }
{
\autoBeamOff
\relative e' {
e4^\f a8 b c4 a | d, e c2 |
e4 a8 b a4 fis | g2 g, |
g'4 e8 g c4 g | a e f2 |
a4 f8 a d,4 f | e( dis) e2 |
e4^\f a8 b c4 a | d, e c2 |
a'4_\cresc g8 g f4 e | d( c b2) \ff |
e2 e4 e | a2 e | a,1 \fermata |
}
}
>>
}
</score>
<br>
=== wersja 2 ===
<score raw = "1" vorbis = "1">
\version "2.12.3"
\header {
tagline = ""
}
\layout {
indent = #0
}
akordy = \chordmode {
\set chordChanges = ##t
a,2:m a,:m e, a,:m | a,:m a,:m c, g,
c, c, a,:m a,:m | d,:m d,:m a,:m e,
a,2:m a,:m e, a,:m | a,:m d,:m | d,:m d,:m
e,2 e, a,:m e, | a,:m
}
global = {
\autoBeamOff
% \key g \minor
\tempo 4 = 120
}
melodia = {
\global
% es bes
\relative g' {
e4 a8 b c4 a | b gis a2 |
e4 a8 b c4 d | e2 d |
g,4 c8 d e4 d | c b a2 |
a4 d8 e f4 d | c2 b |
e,4 a8 b c4 a | b gis a2 |
a4 a8 a d4 e | f1 |
e2 e,4 d' | c2 b | a1 \fermata |
}
}
tekst = \lyricmode {
Nie rzu -- cim zie -- mi, skąd nasz ród,
Nie da -- my po -- grześć mo -- wy!
Pol -- ski my na -- ród, pol -- ski lud,
Kró -- lew -- ski szczep Pia -- sto -- wy.
Nie da -- my, by nas gnę -- bił wróg.
Tak nam do -- po -- móż Bóg!
Tak nam do -- po -- móż Bóg.
}
\score {
<<
\new ChordNames { \akordy }
\new Voice = "Air" { \melodia }
\new Lyrics \lyricsto "Air" { \tekst }
>>
\midi {}
\layout {}
}
</score>
<br>
=== Śpiewnik Nowowiejskiego ===
<score vorbis="1">
\new ChoirStaff \with {midiInstrument = "church organ" } {
<<
\new Staff {
<<
\new Voice = "sopr" { \autoBeamOff \relative e' {
e4^\f a8 b c4 a | b gis a2 |
e4 a8 b c4 d | e2 d |
g,4 c8 d e4 d | c b a2 |
a4 d8 e f4 d | c2 b |
e,4 a8 b c4 a | b gis a2 |
a4^\cresc a8 a d4 e | f1^\ff |
e2 e,4 d' | c2-> b-> | a1-> \fermata |
} }
\new Voice = "alt" { \autoBeamOff \relative e' {
e4 a8 b c4 a | f e e2 |
e4 a8 b c4 fis, | g4 fis g2 |
g4 e8 g c4 b | a g f2 |
a4 f8 a d4 a | a2 gis |
e4 a8 b c4 a | b gis a2 |
a4 a8 a a4 a | a1 |
gis2 e4 b' | a2 gis | e1 |
} }
\new Lyrics \lyricsto "sopr" {
Nie rzu -- cim zie -- mi, skąd nasz ród,
Nie da -- my po -- grześć mo -- wy,
Pol -- ski my na -- ród, pol -- ski lud,
Kró -- lew -- ski szczep Pia -- sto -- wy!
Nie da -- my, by nas gnę -- bił wróg.
Tak nam do -- po -- moż Bóg!
Tak nam do -- po -- moż Bóg!
}
>>
}
\new Staff {
\clef "bass"
<<
\new Voice = "ten" { \autoBeamOff \relative e {
e4 a8 b c4 a | d b c2 |
e,4 a8 b c4 c | c2 b |
g4 c8 d e4 f | e d c2 |
a4 d8 e f4 f | e( dis) e2 |
e,4 a8 b c4 a | b gis a2 |
a4 a8 a b4 cis | d1 |
b2 e,4 f' | e2-> d-> | c1-> \fermata |
} }
\new Voice = "bass" { \autoBeamOff \relative e {
e4_\f a8 b c4 a | d, e a,2 |
e'4 a8 b c4 a | g2 b, |
g'4 e8 g c4 g | a e f2 |
a4 f8 a d4 d, | e2 e |
e4 a8 b c4 a | b gis a2 |
a4_\cresc g8 g f4 e | d4_\ff( c) b2 |
e2 e4 d | e2 e | a,1 |
} }
>>
}
>>
}
</score>
=== (muz. Feliks Nowowiejski, zbiór W. Świerczka, 1917) ===
<score vorbis="1" midi="1">
%VoiceLo = relative g' {
%}
%VoiceHi = relative {}
\new Staff {
\set Staff.midiInstrument = #"fiddle"
\autoBeamOff
\tempo "Andante"
\key g \minor
<<
\new Voice { \relative g' { d4 g8 a bes4 g | a fis g2 |
d4 g8 a bes4 c | d2 c2 |
f,4 bes8 c d4 c | bes a g2 |
g4 c8 d es4 c | bes2 a |
d,4 g8 a bes4 g | a fis g2 |
g4 g8 g c4 d | es1 |
d2 a4 c | bes2 a g1 |
} }
\new Voice { \relative g' { d4 g8 a bes4 g | a fis g2 |
d4 bes8 d g4 e | f4( bes) a2 |
f4 d8 f bes4 a | g d es2 |
g4 es8 g c4 es, | d4( g) fis2 |
d4 g8 a bes4 g | a fis g2 |
g4 f8 d es4 g | c1 |
d2 d,4 a' | g2 d g1 |
} }
>>
}
\addlyrics {
}
</score>
== Leci liście z drzewa (zbiór W. Adamskiego) ==
<score vorbis="1" midi="1">
\new Staff {
\tempo "Andante"
% \key d \major
\transpose d c {
\relative a' {
a a b cis | d2 fis,4 r | e b' a cis, | e2 d4 r |
d d e fis | a2 g4 r | fis fis e d | fis2 e4 r |
a a g g | fis2 fis4 r | e b' a4. cis,8 | e2 d4 r |
a' a b cis | d2. a4 | e' a, gis a | fis'2. e4 |
e d cis b | b( a gis) a | cis4. b8 a4. cis,8 | e2 d4 r \bar "|."
}
}
\addlyrics {
Le -- cą li -- ście z_drze -- wa,
co wy -- ro -- sło wol -- ne,
Nad mo -- gi -- łą śpie -- wa
ja -- kieś pta -- szę pol -- ne,
Nie by -- ło, nie by -- ło
Pol -- sko, do -- bra to -- bie,
Wszy -- stko się prze -- śni -- ło,
a twe dzie -- ci w_gro -- bie.
Wszy -- stko się prze -- śni -- ło,
a twe dzie -- ci w_gro -- bie.
}
}
</score>
<score raw = "1" vorbis = "1">
\version "2.12.3"
\header {
tagline = ""
}
\layout {
indent = #0
}
akordy = \chordmode {
\set chordChanges = ##t
g,1:7 c, g,:7 g,2:7 c,2
c,1:7 a,:m c, g,:7
c,2 g,2:7 c,1 g,:7 g,2:7 c,2
g,1:7 c, g,:7 c
f,2:6 fis,2:m6 c,1 g,:7 g,2:7 c,2
}
global = {
\autoBeamOff
\tempo 4 = 100
}
melodia = {
\global
\transpose d c {
\relative a' {
a4 a b cis | d2 fis,4 r | e b' a cis, | e2 d4 r |
d d e fis | a2 g4 r | fis fis e d | fis2 e4 r |
a a g g | fis2 fis4 r | e b' a4. cis,8 | e2 d4 r |
a' a b cis | d2. a4 | e' a, gis a | fis'2. e4 |
e d cis b | b( a gis) a | cis4. b8 a4. cis,8 | e2 d4 r \bar "|."
}
}
}
tekst = \lyricmode {
Le -- cą li -- ście z_drze -- wa,
co wy -- ro -- sło wol -- ne,
Nad mo -- gi -- łą śpie -- wa
ja -- kieś pta -- szę pol -- ne,
Nie by -- ło, nie by -- ło
Pol -- sko, do -- bra to -- bie,
Wszy -- stko się prze -- śni -- ło,
a twe dzie -- ci w_gro -- bie.
Wszy -- stko się prze -- śni -- ło,
a twe dzie -- ci w_gro -- bie.
}
\score {
<<
\new ChordNames { \akordy }
\new Voice = "Air" { \melodia }
\new Lyrics \lyricsto "Air" { \tekst }
>>
\midi {}
\layout {}
}
</score>
== Leci liście z drzewa (zbiór W. Świerczka, 1917) ==
<score vorbis="1" midi="1">
\relative c' {
\new Staff {
\tempo "Andante"
\key c \major
<e g> <e g> <f a> <d b'> | <e c'>2 <e c>4 r |
<b d> <c a'> <b g>4. b8 | <b d>2 c4 r |
c c <b d> <bes e> | <a g'>( <e' g>) <d f> r |
<c e> <c e> <b d> c | <c e>2 <b d>4 r|
<e g> <e g> <d f> <d f> | <c e>2 <c e>4 r |
<b d> <c a'> <b g'>4. b8 | <b d>2 c4 r |
<e g> g <f a> <d b'> | <e c'>2. <e g>4 |
<f d'> g fis g | <c e>2( <g e'>4) <gis e'>4 |
<a d> <a c> <gis b> <f a> | <f a>( <e g> <dis fis>) <e g> |
<g b>4. <f a>8 <d f>4. b8 | <b d>2 c4 r \bar "|."
}
\addlyrics {
Le -- cą li -- ście z_drze -- wa,
co wy -- ro -- sło wol -- ne,
Nad mo -- gi -- łą śpie -- wa
ja -- kieś pta -- szę pol -- ne,
Nie by -- ło, nie by -- ło
Pol -- sko, do -- bra to -- bie,
Wszy -- stko się prze -- śni -- ło,
a twa dzia -- twa w_gro -- bie.
Wszy -- stko się prze -- śni -- ło,
a twa dzia -- twa w_gro -- bie.
}
}
</score>
== Leci liście z drzewa ==
Franciszek Barański, ''[https://polona.pl/item/jeszcze-polska-nie-zginela-piesni-patryotyczne-i-narodowe-czesc-1-muzyka,Nzg5OTEwMjU/4/#info:metadata Jeszcze Polska nie zginęła : pieśni patriotyczne i narodowe]'', nr 14, s. 12.
<score vorbis="1" midi="1">
<<
\new Staff \with {midiInstrument = "fiddle"} {
\relative g' {
\tempo "Andante"
\key c \major
g g a b | c2 e,4 r | d a' g4. b,8 | d2 c4 r |
c c d e | g2 f4 r | e e d c | e2 d4 r |
g g f f | e2 e4 r | d a' g4. b,8 | d2 c4 r |
g' g a b | c2. g4 | d' g, fis g | e'2. d4 |
d c b a | a( g fis) g | b4. a8 f4. b,8 | d2 c4 r \bar "|."
}
\addlyrics {
Le -- ci li -- ście z_drze -- wa,
co wy -- ro -- sło wol -- ne,
Nad mo -- gi -- łą śpie -- wa
ja -- kieś pta -- szę pol -- ne,
Nie by -- ło, nie by -- ło
Pol -- sko, do -- bra to -- bie,
Wszy -- stko się prze -- śni -- ło,
a twa dzia -- twa w_gro -- bie.
Wszy -- stko się prze -- śni -- ło,
a twa dzia -- twa w_gro -- bie.
}
}
\new GrandStaff {
<<
\new Staff {
%\with {midiInstrument = "flute"} {
\relative g' {
\tempo "Andante"
\key c \major
g g a b | c2 e,4 r | d a' g4. b,8 | d2 c4 r |
c c d e | g2 f4 r | e e d c | e2 d4 r |
g g f f | e2 e4 r | d a' g4. b,8 | d2 c4 r |
g' g a b | c2.( g4) | d' g, fis g | e'2. d4 |
d c b a | a( g fis) g | b4. a8 f4. b,8 | d2 c4 r \bar "|."
}
}
\new Staff {
\clef bass
\tempo "Andante"
\key c \major
g,4 <f g b> d <f g b> | e <g c'> c <e g c'> |
g,4 <f g b> g, <f g b> | g, <f g b> <c e g> r |
c4 <e g> bes, <e g> | a, <c f> as, <c f> |
g,4 <e g c'> fis, <d fis a> | g,4 <f g b> <f g b> <f g b> |
e <g c'> d <f g b> | c <e g c'> <e g c'> <e g c'> |
g,4 <f g b> g, <f g> | g, <f g b> <c e g> r |
g,4 <f g b> g, <f g> | c <e g c'> <e g c'> <e g c'> |
d <f g b> <f g b> <f g b> | <c, c> <e g c'> <e g c'> <e g c'> |
f <a c' d'> fis <a cis' d'> | g <e g c'> <e g c'> <e g c'> |
g, <f g b> g, <f g> | g, <f g b> <c e g > r \bar "|."
}
>>
}
>>
</score>
<!--
<score>
\new PianoStaff <<
\new Staff {
\time 4/4
}
\new Staff {
\clef "bass"
}
>>
</score>
-->
== Kołysanka Brahmsa - music box ==
<score vorbis="1">\new PianoStaff
<<
\new Staff {
\set Staff.midiInstrument = #"music box"
\time 3/4 \key d \major \tempo "Andantino" \partial 4 <<
\new Voice = "melody" { \relative f' { \stemUp
fis8 fis | a4.^\p^\( fis8\) fis4 |
<a fis> r fis8( a) |
<d g,>4^\(^\< cis4. b8\)\! |
b4^\(^\> a e8( fis)\! |
g4^\( e e8[ fis]\) |
<g cis,>4 r e8( g) |
cis8^\(^\< b a4\) cis4\!^\< |
<d fis,>4\! r d,8 d |
d'2^\p^\( b8 g\) |
a2^\( fis8 d\) |
g4^\(^\< <a fis>\!^\> <b g>\)\! |
<a fis d>2 d,8 d |
<d' g,>2^\p^\( b8 g\) |
<a d,>2^\(^\< fis8 d\) |
<g d b>4^\dim^\( <fis d a>\! <e cis>\) | d2 \bar "|." } }
\new Voice = "two" { \relative f' { \stemDown
s4 fis2 s4 s2.*2 d2 s4 cis2. |
s2. g'2 fis8( e) | s2. g2 d4 d2 s4 |
d2. s s2 d4 } } >> }
\new Lyrics \lyricsto "melody" { \set stanza = #"1. " Lul -- la -- by and good -- night, with ro -- ses be -- dight, _ With li -- lies be -- _ decked is __ ba -- _ by's wee bed; Lay thee down now and rest, may thy slum -- ber be blest, Lay thee down now and rest, may thy slum -- ber be blest. }
\new Lyrics \lyricsto "melody" { \set stanza = #"2. " Lul -- la -- by and good -- night, thy moth -- er's de -- light, _ Bright an -- gels a -- _ round my __ dar -- _ ling shall stand; They will guard thee from harms, thou shalt wake in my arms, They will guard thee from harms, thou shalt wake in my arms. }
\new Staff {
\set Staff.midiInstrument = #"music box"
\clef bass \key d \major
r4 | <d a>2 r4 | q2 r4 |
b4( a4. g8 | g4( fis) r | <a, e>2 r4 |
<a, a>2 r4 | a,2( a4) | d4 r r |
b2( g8 e) | fis4( d) a |
b,( a, g,) | d,( d) r |
b2( g8 e) | fis4( d) r |
g,( a,) <a, g> | <d fis>2 } >> </score>
Source: [[s:The Child's Own Music Book/Cradle Song (Brahms)|Cradle Song (Brahms)]], in: Albert Ernest Wier, ''[[s:Index:Childs own music book.djvu|The Child's Own Music Book]]'', New York : Mumil Publishing Co., Inc., 1918, p. [[s:Page:Childs own music book.djvu/33|25]].
== Polish maiden song ==
Franklin Square Song Collection vol. 1 p. 70
<score vorbis="1">
\relative d' {
\key g \minor
\time 3/4
d8 es f4 g8 a | bes c d2 | d8 c f,2 | c'8 bes d,2 |
d8 es f4 g8 a | bes c d2 | d8 c f,2 | d'8 c bes2 |
}
</score>
== Anioł pasterzom mówił ==
Gloger, ''Pieśni ludu'', s. 41
<score vorbis="1">
<<
\new Staff {
\relative g' {
\key g \major
g4 g a a | b a g2 |
d'4 d e e | d cis d2 |
d4 d e2 |
d4 d c c | b b a2 |
d4 d c c | b b a2 |
d2 b4 c | b a g2 \fermata |
}
\addlyrics {
A -- nioł pa -- ste -- rom mó -- wił: Chry -- stus się wam na -- ro -- dził,
W_Be -- tle -- em, nie -- bar -- dzo po -- dłem mie -- ście,
Na -- ro -- dził się w_u -- bó -- stwie,
Pan wsze -- go stwo -- rze -- nia.
}
}
\new PianoStaff {
<<
\new Staff {
\key g \major
<b g'>4 <d' g'> <e' a'> <d' a'> | <d' b'> <c' a'> <b g'>2 |
<d' g' d''>4 <g' d''> <g' e''> <a' e''> | <a' d''> <e' g' cis''> <fis' a' d''>2 |
<d' g' d''>4 <f' d''> << e''2 { e'4( fis') } >> |
<g' d''>4 <g' d''> <e' c''> <fis' c''> | <fis' b'> <e' b'> << a'2 { e'4( d') } >> |
<d' a' d''>4 <d' g' d''> <c' g' b'> <c' fis' b'> | <b fis' b'> <b e' b'> <a fis' a'>2 |
<d' fis' d''>2 <e' g' b'>4 <e' g' c''> | <d' fis' b'> <c' fis' a'> <b g'>2 \fermata |
}
\new Staff {
\clef bass
\key g \major
<g, g>4 <b, g> <c g> <d fis> | <b, fis> <d fis> <e g> d8[ c] |
b,4 <e b> <a b> <g cis'> | <fis d'> e d c |
b,4 <g b> << c'2 { c4( d) } >> |
<g b>4 <e b> <fis a> <d a> | <dis a> <e g> <c g> <d fis> |
<b, fis> <e, e> <a, e> <d, d> | <g, d> <c, c> <d, d> <c, c> |
<b,, b,>2 <e, e>4 <a,, a,> | <d, d>2 <g, d> \fermata |
}
>>
}
>>
</score>
== Hatikvah ==
https://nationalanthems.info/il~.gif
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = ""
poet = ""
composer = ""
arranger = ""
tagline = ""
}
\score{
\new PianoStaff <<
\new Staff = "RH"
\relative c' {
\clef treble
\key e \minor
\time 2/4
\tempo 4=120
% tu prawa ręka
<<
\new Voice { \stemUp \shiftOff
e8[ fis g a] |
b4 b |
c8[ b c e] |
b2 |
a4 a8[ a] |
g4 g |
fis8[ e fis g] |
e4. b8 |
e8[ fis g a] |
b4 b |
c8[ b c e] |
b2 |
a4 a8[ a] |
g4 g |
fis8[ e fis g] |
e2 |
}
\new Voice { \stemDown
e8[ b e fis] |
g[ fis g e] |
fis[( g a fis]) |
g[ fis g e] |
c[ e c e] |
cis[ e cis e] |
dis[ cis dis b] |
b4. b8 |
c[ dis e fis] |
g[ fis g e] |
fis[ g a fis] |
g[ d e f] |
e4 e8[ e] |
e8[ g fis e] |
dis[ cis dis b] |
b2 |
}
>>
}
\new Staff = "LH"
\relative c {
\clef bass
\key e \minor
\time 2/4
\tempo 4=120
% tu lewa ręka
<<
\new Voice { \stemUp \shiftOff
g'8 a b c |
b4 b |
a a |
b^( b) |
e,4 e8 e |
e4 e |
a a |
g4. e8 |
e4 c' |
b b |
a d |
d2 |
c4 c8[ c] |
b4 b |
a a |
g2 |
}
\new Voice { \stemDown
e2 |
e4 e |
e e |
e_( e) |
a,4 a8[ a] |
ais4 ais |
b b |
e8[ d c b] |
a4 a' |
e e |
d d |
g2 |
a8[ fis g a] |
b4 b |
b, b |
e2 |
}
>>
}
>>
\midi{}
\layout{}
}
</score>
== Zielona łączka, piękny kwiat ==
Gloger, ''Pieśni ludu'', s. 198
<score vorbis="1">
\relative c'' {
\time 3/4
c4 g8 g e c | a' a16[( c]) g2 | f8 f16[( g]) e2 | d8 d16[( e]) c2 |
c'8.[( d16]) e8 c d g, | d'8.[( e16]) f8 d e g, |
g8 g16[( b]) c2 | f,8 f16[( g]) e2 | g16[( f]) d[( e]) c2 |
}
</score>
== Witaj gwiazdko złota ==
https://polona.pl/item/koleda-witaj-gwiazd-k-o-zlota,MTA5MTMxNTY4/2/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Witaj gwiazdko złota"
poet = ""
composer = "Muzyka: Zygmunt Noskowski"
arranger = ""
tagline = ""
}
\score{
<<
\new Voice = "mel" {
\set Staff.midiInstrument = #"flute"
\autoBeamOff
\relative c' {
\clef treble
\key bes \major
\time 3/8
\autoBeamOff
% tu melodia
r4. | r4. | r4. | r4. | r4. | r4. | r4. | r4. |
\f d16 g a([ bes)] a([ g)] | d'4 c8 | bes16 a g([ fis)] g([ bes)] d4 c8 |
bes16 bes a8 bes | c4 f,8 | c'16 c d8 es | d4 d,8 |
d16 g a([ bes)] a([ g)] | d'4 c8 | bes16 a g([ fis)] g([ bes)] d4 d8 |
d16 d f8 es16[ d] | d4 c8 | bes16. ^\markup{ \italic rall } d,32 bes'8 a16[ bes] | a8 g r8 |
r4. | r4. | r4. | r4. | r4. | r4. | r4. | r4. |
d'4 d8 | c16 d es8 es | d16 es d8 bes | c8 f, r8 |
d'4 d8 | c16 d es8 es | d16 es d8 bes | c8 f, r8 |
f16 g a8 g16([ f)] | f4 bes8 | f16 g a8 bes16([ c)] | d4 d8 |
c16 d es8 d16([ c)] | d8 bes4 | a16 bes d[( c]) g([ a)] | c8 bes r8 |
r4. | r4. | r4. | r4. |
\key g \major
^\f d,16 g a([ b)] a([ g)] | d'4 c8 | b16 a g([ fis)] g([ b)] | d4 c8 |
b16 b a8 b | c16([ d)] e4 | d16 a d8 c | b8([ d)] d, |
d16 g a([ b)] a([ g)] | d'4 c8 | b16 a g([ fis)] g([ b)] | d4 d8 |
^\markup{ \italic ritenuto } d16 d g8 fis16 e | d8 c r8 | ^\p bes16. ^\markup{ \italic rallent } d,32 bes'8 a16 bes | a8 g r8 |
\key bes \major
r4. | r4. | r4. | r4. | r4. | r4. | r4. | r4. |r4. | r4.
} }
%\new Lyrics \lyricsto mel \lyricmode {
\addlyrics { \small {
Wi -- taj gwiazd -- ko zło -- ta na nie -- bios prze -- stwo -- rze,
Wi -- taj nam ra -- doś -- nie, Dzie -- cią -- te -- czko Bo -- że!
Wznieś łask peł -- ne dło -- nie nad gło -- wy na -- sze -- mi,
My Ci za -- śpie -- wa -- my po ca -- lu -- tkiej zie -- mi.
Świe -- ci gwiazd -- ka w_gó -- rze, cud -- nym bla -- skiem wie -- ści,
W_u -- bo -- żuch -- nej szop -- ce Mat -- ka sy -- na pie -- ści,
Je -- zus dło -- nie wzno -- si nad pro -- sta -- cze gło -- wy,
Bło -- go -- sła -- wi, cie -- szy ra -- do -- sne -- mi sło -- wy.
O -- to lir -- nik sta -- ry śpie -- wną li -- rę stro -- i,
Niech -- że za -- gra na niej, pa -- stu -- szko -- wie mo -- i!
Wszak Chry -- stus się ro -- dzi, śpie -- wać nam się go -- dzi.
Hej, ko -- lę -- da, ko -- lę -- da!
Hej, ko -- lę -- da, ko -- lę -- da!
}
}
\new PianoStaff <<
\new Staff = "RH" {
% \relative c'' {
\clef treble
\key bes \major
\time 3/8
% tu prawa ręka
d''16([ g'' a'' bes'' a'' g'')] | <d'' d'''>4( c'''8 ) | <d'' bes''>16([ a'' g'' fis'' g'' bes'')] | <d'' d'''>4 d''8 |
\repeat volta 2 {
<g' d''>16.[ d''32] <g' f''>8^>([ es''16 d'')] |
<< \new Voice { \stemDown <es' g'>4. } \new Voice { \stemUp d''8( c''4) } >> |
<d' g' bes'>16.[ d'32] <cis' g' bes'>8[ <c' fis' a'>16( bes')] |
_\p <bes g'>8[ <bes g'> <bes g'>] |
<bes g'>8[ <bes g'> <bes g'>] | <c' fis'>16([ bes')] <c' a'>8[ <c' fis'> ] | <bes g'>16[ fis' ] <bes d'>8[ <bes g'>] |
<c' fis'>16([ bes')] <c' a'>8[ <c' fis'> ] | <bes g'>8[ <bes f'> <bes f'>] | <a es' f'>8[ <a es' f'> <a es' f'>] |
<a es' f'>8[ <d' bes'> <c' es' a'>] | <bes d' f'>8 <c' d' fis'>4 | <bes d' g'>8[ <bes g'> <bes g'>] | <c' fis'>16([ bes')] <c' a'>8[ <c' fis'>] |
<bes d'>16([ es']) <bes d'>8[ <bes g'>] | <c' bes'>16([ a')] <a d' fis>8[ <a d' fis'>] | <g d' g'>8 <g d' f'>4 ^> |
<< \new Voice { \stemDown g4. } \new Voice { \stemUp <d' f'>4( <c' es'>8) } >> |
_\markup{ \italic rall } <bes d'>8([ <cis' e'> <c' fis'>)] | <c' a'>8 [ <bes g'> ] r8 |
d''16([ g'' a'' bes'' a'' g'')] | <d'' d'''>4( c'''8 ) | <d'' bes''>16([ a'' g'' fis'' g'' bes'')] | <d'' d'''>4 d''8 |
}
<g' d'>16.[ d'32] <b' f''>8^>[ <g' b' es''>16( d'' )] |
<< \new Voice { \stemDown g'4( es'8) } \new Voice { \stemUp d''8 c''4 ^> } >> |
<< \new Voice { \stemDown s4 <es' a'>8 } \new Voice { \stemUp <es' a' c''>16[ b' c'' es'' d'' c''] } >> |
<d' bes'>8[ <d' bes'> <d' bes'> ] |
\repeat volta 2 {
<d' bes'>8[ <d' bes'> <d' bes'> ] | <es' c''>8[ <es' a'> <es' c''>] |
<d' bes'>8[ <d' f'> <bes f' bes'>] | <c' f' a'>8[ <a f'> <es' a'>] |
<es' c''>8[ <es' a'> <es' c''>] | <d' bes'>8[ <d' f'> <bes f' bes'>] |
<d' bes'>8 [ <d' f'> <bes f' bes'>] |
<c' f' a'>8[ <a f'> <c' a'>] |
<a c f'>4. | <b f'>4. | <a es' f'>4. | <as d' f'>4 <g d' f'>8 |
<g c' es'>4. | <bes d'>4. |
<a es'>4. | <bes d'>4 r8 |
}
<< \new Voice { \stemDown g'8[ g' g'] } \new Voice { \stemUp c''16([ d'' f'' es'' bes' c'')] } >> |
<g' d''>16.[ cis''32] <g' d''>8[ bes'] |
<c' fis' a'>16.[ gis'32] <c' fis' a'>8[ <c' d'>] |
<b g'>8[ <b g'> <b g'>] |
\key g \major
<b g'>8[ <b d'> <b g'>] | <c' fis'>16([ e') <c' d'>8 <c' e'>16 fis'] | <b g'>8[ <b d'> <b g'>] |
<c' fis'>16([ b') <c' a'>8 <c' e'>16( fis')] | <b g'>8[ <b d'> <b g'>] | <a e' g'>8[ <a e' g'> <c' e' g'>] |
<c' d' fis'>8[ <c' e' g'> <c' fis' a'>] | <b g'>8 <a fis'>4 | <b d'>16[ g' <b a'> b' <b a'> g'] |
<d' a' c''>8[ <fis' a'c''> <d' a' c''>] | <d' g' b'>8[ <b d'> <b g'>] | <d' a' c''>8[ <fis' a'c''> <d' a' c''>] |
<d' g' b'>8 <d' g' d''>4 ^> |
<< \new Voice { \stemDown s8 e'8[ es'] } \new Voice { \stemUp <e' g' d''>8 <g' d''>4 } >> | <d' g' bes'>8[ <c' es' g' bes'> <c' fis' a>] |
<c' es' a>8[ <bes d' g'>] r8 |
\key bes \major
d''16([ g'' a'' bes'' a'' g'')] | <d'' d'''>4( c'''8 ) |
<d'' bes''>16([ a'' g'' fis'' g'' bes'' )] | <d'' d'''>4 d''8 | <g' d''>8[ <as' f''>] <f' es''>16[ d''] |
<< \new Voice { \stemDown <e' g'>4. } \new Voice { \stemUp d''8( c''4) } >> |
<d' g' bes'>16.[ d'32] <d' f' bes'>8[ <c' fis' a'> ] | <bes g'>8[ <bes d'> <bes fis'>] | <bes g'>4. | <bes d' g'>4. \fermata \bar "|."
}
\new Staff = "LH" {
% \relative c' {
\clef bass
\key bes \major
\time 3/8
% bes es
% tu lewa ręka
\arpeggio <bes d g,>8 [ <bes d> <bes d> ] | \arpeggio <a d g,>8 [ <a d> <a d> ] |
\arpeggio <bes d g,>8 [ <bes d> <bes d> ] | \arpeggio <a fis d>8 [ <bes g d> <c' a d> ] |
\repeat volta 2 {
<bes g>8 <b g>4^> | ^\markup{ \italic diminuendo } c4( a,8) | d8( d,4) |
g,8 [ <g, d> <g, d> ] | <g, d>8 [ <g, d> <g, d> ] | <g, d>8 [ <g, d> <g, d> ] |
<g, d>8 [ <g, d> <g, d> ] | <g, d>8 [ <g, d> <g, d> ] | <g, d>8 [ <bes, d> d ] |
c8 [ c c] | f,8 [ f, f, ] | ^\markup{ \italic ritenuto } bes, [ a,( d ]) |
g,8 [ <g, d> <g, d> ] | <g, d>8 [ <g, d> <g, d> ] | <g, d>8 [ <g, d> <g, d> ] |
^\< <fis, d>8 [ d c ] \! | ^\mf bes,8 b,4 _> | c8( c,4) | d,4. | <g, d>8 [ <g, d> <g, d> ] |
\arpeggio <bes d g,>8 [ <bes d> <bes d> ] | \arpeggio <a d g,>8 [ <a d> <a d> ] |
\arpeggio <bes d g,>8 [ <bes d> <bes d> ] | \arpeggio <a fis d>8 [ <bes g d> <c' a d> ] |
}
<g b>8 [ < g d'> f ] | es4 c8 | ^\markup{ \italic diminuendo } f4 f,8 | bes,8 [ <bes, f> <bes, f> ] |
\repeat volta 2 {
^\p <bes, f>8 [ <bes, f> <bes, f> ] | << \new Voice { \stemDown bes,8 [ bes, bes, ] } \new Voice { \stemUp a16[( g) f8 g16[( a]) } >> |
<bes, f>8 [ <bes, f> d ] | f4 <f f,>8 | <bes, f>8 [ <bes, f> <bes, f> ] |
<< \new Voice { \stemDown bes,8 [ bes, bes, ] } \new Voice { \stemUp a16[( g) f8 g16[( a]) } >> | <bes, f>8 [ <bes, f> d ] |
f4 f,8 |
<es, es>4. | <d, d>4. | <c, c>4. | <bes,, bes,>4 <b,, b,>8 | <c, c>4( <es, es>8 ) | <f, f>4 r8 | <f, f>4. | <bes, g>8[ <bes, g> <bes, g> ] |
}
^\p <e c'>8 [ <e c'> <e c'> ] | <d b>8 [ <d b> ] r8 | d8[ d,] r8 |
\key g \major
%fis
<g, d>8 [ <g, d> <g, d> ] |
<g, d>8 [ <g, d> <g, d> ] | <g, d>8 [ <g, d> <g, d> ] | <g, d>8 [ <g, d> <g, d> ] |
<g, d>8 [ <g, d> <g, d> ] | <g, d>8 [ <g, d> <g, d> ] | c8 [ c a, ] |
d4 <d, d>8 | <g, d>8 <d, d>4 | <g, d>8 [ <g, d> <g, g> ] |
<< \new Voice { \stemDown g,8 [ g, g, ] } \new Voice { \stemUp fis16[( e) d8 e16[( fis]) } >> | <g, g>8 [ <g, d> <g, g> ] |
<< \new Voice { \stemDown g,8 [ g, g, ] } \new Voice { \stemUp fis16[( e) d8 e16[( fis]) } >> |
^\ff ^\markup{ \italic colla parte } <g, g>8 <b, b,,>4 _> | ^\markup{ \italic rit } ^\> <c, c>4 <a,, a,>8 \! |
^\p ^\markup{ \italic rallent } <d, d>4. |
^\< <g, d>8 [ <g, d> <g, d> ] \! |
\bar "||" \key bes \major
^\mf ^\markup { \italic a tempo } \arpeggio <bes d g,>8 [ <bes d> <bes d> ] | \arpeggio <a d g,>8 [ <a d> <a d> ] |
\arpeggio <bes d g,>8 [ <bes d> <bes d> ] | \arpeggio <a fis d>8 [ <bes g d> <c' a d> ] |
<g bes>8 <g b>4 | ^\> c'4( a8 ) \! | d4 d,8 | <g, d>8 [ <g, d> <g, d> ] | <g, d>8 [ d, bes,, ] | <g,, g,>4. \fermata \bar "|."
}
>>
>>
\midi{}
\layout{}
}
</score>
<!--
== LaTeX ==
Poniżej przedstawione są podstawowe symbole matematyczne, domyślnie dostępne w systemie LaTeX. Dodatkowe symbole są dostępne w osobnych pakietach, np. w <code>amslatex</code>.
{| class="wikitable" latexfontsize="scriptsize"
|+ Symbole relacji
|-
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="10"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="10"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="10"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="10"|
!scope="col"| Symbol !!scope="col"| Komenda
|-
| <math><\,</math>||<code><</code>
| <math>>\,</math>||<code>></code>
| <math>=\,</math>||<code>=</code>
| <math>\parallel\,</math>||<code>\parallel</code>
| <math>\nparallel\,</math>||<code>\nparallel</code>
|-
| <math>\leq\,</math>||<code>\leq</code>
| <math>\geq\,</math>||<code>\geq</code>
| <math>\doteq\,</math>||<code>\doteq</code>
| <math>\asymp\,</math>||<code>\asymp</code>
| <math>\bowtie\,</math>||<code>\bowtie</code>
|-
| <math>\ll\,</math>||<code>\ll</code>
| <math>\gg\,</math>||<code>\gg</code>
| <math>\equiv\,</math>||<code>\equiv</code>
| <math>\vdash\,</math>||<code>\vdash</code>
| <math>\dashv\,</math>||<code>\dashv</code>
|-
| <math>\subset\,</math>||<code>\subset</code>
| <math>\supset\,</math>||<code>\supset</code>
| <math>\approx\,</math>||<code>\approx</code>
| <math>\in\,</math>||<code>\in</code>
| <math>\ni\,</math>||<code>\ni</code>
|-
| <math>\subseteq\,</math>||<code>\subseteq</code>
| <math>\supseteq\,</math>||<code>\supseteq</code>
| <math>\cong\,</math>||<code>\cong</code>
| <math>\smile\,</math>||<code>\smile</code>
| <math>\frown\,</math>||<code>\frown</code>
|-
| <math>\nsubseteq\,</math>||<code>\nsubseteq</code>
| <math>\nsupseteq\,</math>||<code>\nsupseteq</code>
| <math>\simeq\,</math>||<code>\simeq</code>
| <math>\models\,</math>||<code>\models</code>
| <math>\notin\,</math>||<code>\notin</code>
|-
| <math>\sqsubset\,</math>||<code>\sqsubset</code>
| <math>\sqsupset\,</math>||<code>\sqsupset</code>
| <math>\sim\,</math>||<code>\sim</code>
| <math>\perp\,</math>||<code>\perp</code>
| <math>\mid\,</math>||<code>\mid</code>
|-
| <math>\sqsubseteq\,</math>||<code>\sqsubseteq</code>
| <math>\sqsupseteq\,</math>||<code>\sqsupseteq</code>
| <math>\propto\,</math>||<code>\propto</code>
| <math>\prec\,</math>||<code>\prec</code>
| <math>\succ\,</math>||<code>\succ</code>
|-
| <math>\preceq\,</math>||<code>\preceq</code>
| <math>\succeq\,</math>||<code>\succeq</code>
| <math>\neq\,</math>||<code>\neq</code>
| <math>\sphericalangle\,</math>||<code>\sphericalangle</code>
| <math>\measuredangle\,</math>||<code>\measuredangle</code>
|-
| <math>\therefore\,</math>||<code>\therefore</code>
|}
{| class="wikitable" latexfontsize="scriptsize"
|+ Operatory binarne
|-
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="9"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="9"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="9"|
!scope="col"| Symbol !!scope="col"| Komenda
|-
| <math>\pm\,</math> || <code>\pm</code>
| <math>\cap\,</math> || <code>\cap</code>
| <math>\diamond\,</math> || <code>\diamond</code>
| <math>\oplus\,</math> || <code>\oplus</code>
|-
| <math>\mp\,</math> || <code>\mp</code>
| <math>\cup\,</math> || <code>\cup</code>
| <math>\bigtriangleup\,</math> || <code>\bigtriangleup</code>
| <math>\ominus\,</math> || <code>\ominus</code>
|-
| <math>\times\,</math> || <code>\times</code>
| <math>\uplus\,</math> || <code>\uplus</code>
| <math>\bigtriangledown\,</math> || <code>\bigtriangledown</code>
| <math>\otimes\,</math> || <code>\otimes</code>
|-
| <math>\div\,</math> || <code>\div</code>
| <math>\sqcap\,</math> || <code>\sqcap</code>
| <math>\triangleleft\,</math> || <code>\triangleleft</code>
| <math>\oslash\,</math> || <code>\oslash</code>
|-
| <math>\ast\,</math> || <code>\ast</code>
| <math>\sqcup\,</math> || <code>\sqcup</code>
| <math>\triangleright\,</math> || <code>\triangleright</code>
| <math>\odot\,</math> || <code>\odot</code>
|-
| <math>\star\,</math> || <code>\star</code>
| <math>\vee\,</math> || <code>\vee</code>
| <math>\bigcirc\,</math> || <code>\bigcirc</code>
| <math>\circ\,</math> || <code>\circ</code>
|-
| <math>\dagger\,</math> || <code>\dagger</code>
| <math>\wedge\,</math> || <code>\wedge</code>
| <math>\bullet\,</math> || <code>\bullet</code>
| <math>\setminus\,</math> || <code>\setminus</code>
|-
| <math>\ddagger\,</math> || <code>\ddagger</code>
| <math>\cdot\,</math> || <code>\cdot</code>
| <math>\wr\,</math> || <code>\wr</code>
| <math>\amalg\,</math> || <code>\amalg</code>
|}
{| class="wikitable" latexfontsize="scriptsize"
|+ Logika i teoria mnogości
|-
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="13"|
!scope="col"| Symbol !!scope="col"| Komenda
|-
| <math>\exists\,</math> || <code>\exists</code>
| <math>\rightarrow\,</math> || <code>\rightarrow</code> lub <code>\to</code>
|-
| <math>\nexists\,</math> || <code>\nexists</code>
| <math>\leftarrow\,</math> || <code>\leftarrow</code> lub <code>\gets</code>
|-
| <math>\forall\,</math> || <code>\forall</code>
| <math>\mapsto\,</math> || <code>\mapsto</code>
|-
| <math>\neg\,</math> || <code>\neg</code>
| <math>\implies\,</math> || <code>\implies</code>
|-
| <math>\subset\,</math> || <code>\subset</code>
| <math>\Rightarrow\,</math> || <code>\Rightarrow</code> lub <code>\implies</code>
|-
| <math>\supset\,</math> || <code>\supset</code>
| <math>\leftrightarrow\,</math> || <code>\leftrightarrow</code>
|-
| <math>\in</math>||<code>\in</code>
| <math>\iff\,</math> || <code>\iff</code>
|-
| <math>\notin\,</math> || <code>\notin</code>
| <math>\Leftrightarrow\,</math> || <code>\Leftrightarrow</code> (preferowane dla równoważności (wtw))
|-
| <math>\ni\,</math> || <code>\ni</code>
| <math>\top\,</math> || <code>\top</code>
|-
| <math>\land\,</math> || <code>\land</code>
| <math>\bot\,</math> || <code>\bot</code>
|-
| <math>\lor\,</math> || <code>\lor</code>
| <math>\emptyset\,</math> i <math>\varnothing\,</math> || <code>\emptyset</code> i <code>\varnothing</code><ref>Nie zdefiniowane w LaTeX 2. Należy użyć jednego z pakietów: <code>latexsym, amsfonts, amssymb, txfonts, pxfonts,</code> lub <code>wasysym</code>.</ref>
|-
| <math>\angle\,</math> || <code>\angle</code>
| <math>\rightleftharpoons\,</math> || <code>\rightleftharpoons</code>
|}
{| class="wikitable" latexfontsize="scriptsize"
|+ Nawiasy i separatory
|-
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="5"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="5"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="5"|
!scope="col"| Symbol !!scope="col"| Komenda
|-
| <math>|\,</math> || <code><nowiki>|</nowiki></code> lub <code>\mid</code> (różnica w odstępach)
| <math>\|\,</math> || <code>\<nowiki>|</nowiki></code>
| <math>/\,</math> || <code>/</code>
| <math>\backslash\,</math> || <code>\backslash</code>
|-
| <math>\{\,</math> || <code>\{</code>
| <math>\}\,</math> || <code>\}</code>
| <math>\langle\,</math> || <code>\langle</code>
| <math>\rangle\,</math> || <code>\rangle</code>
|-
| <math>\uparrow\,</math> || <code>\uparrow</code>
| <math>\Uparrow\,</math> || <code>\Uparrow</code>
| <math>\lceil\,</math> || <code>\lceil</code>
| <math>\rceil\,</math> || <code>\rceil</code>
|-
| <math>\downarrow\,</math> || <code>\downarrow</code>
| <math>\Downarrow\,</math> || <code>\Downarrow</code>
| <math>\lfloor\,</math> || <code>\lfloor</code>
| <math>\rfloor\,</math> || <code>\rfloor</code>
|}
<!--
Uwaga: To use the Greek Letters in LaTeX that have the same appearance in the Latin alphabet, just use Latin: e.g., A instead of Alpha, B instead of Beta, etc.
{| class="wikitable" latexfontsize="scriptsize"
|+ Greek Letters
|-
!scope="col"| Symbol !!scope="col"| Script
|rowspan="13"|
!scope="col"| Symbol !!scope="col"| Script
|-
| <math>\Alpha\,</math> and <math>\alpha\,</math>|| <code>A</code> and <code>\alpha</code>
| <math>\Nu\,</math> and <math>\nu\,</math>|| <code>N</code> and <code>\nu</code>
|-
| <math>\Beta\,</math> and <math>\beta\,</math>|| <code>B</code> and <code>\beta</code>
| <math>\Xi\,</math> and <math>\xi\,</math>|| <code>\Xi</code> and <code>\xi</code>
|-
| <math>\Gamma\,</math> and <math>\gamma\,</math>|| <code>\Gamma</code> and <code>\gamma</code>
| <math>\Omicron\,</math> and <math>\omicron\,</math>|| <code>O</code> and <code>o</code>
|-
| <math>\Delta\,</math> and <math>\delta\,</math>|| <code>\Delta</code> and <code>\delta</code>
| <math>\Pi\,</math>, <math>\pi\,</math> and <math>\varpi</math>|| <code>\Pi</code>, <code>\pi</code> and <code>\varpi</code>
|-
| <math>\Epsilon\,</math>, <math>\epsilon\,</math> and <math>\varepsilon\,</math>|| <code>E</code>, <code>\epsilon</code> and <code>\varepsilon</code>
| <math>\Rho\,</math>, <math>\rho\,</math> and <math>\varrho\,</math>|| <code>P</code>, <code>\rho</code> and <code>\varrho</code>
|-
| <math>\Zeta\,</math> and <math>\zeta\,</math>|| <code>Z</code> and <code>\zeta</code>
| <math>\Sigma\,</math>, <math>\sigma\,</math> and <math>\varsigma\,</math>|| <code>\Sigma</code>, <code>\sigma</code> and <code>\varsigma</code>
|-
| <math>\Eta\,</math> and <math>\eta\,</math>|| <code>H</code> and <code>\eta</code>
| <math>\Tau\,</math> and <math>\tau\,</math>|| <code>T</code> and <code>\tau</code>
|-
| <math>\Theta\,</math>, <math>\theta\,</math> and <math>\vartheta\,</math>|| <code>\Theta</code>, <code>\theta</code> and <code>\vartheta</code>
| <math>\Upsilon\,</math> and <math>\upsilon\,</math>|| <code>\Upsilon</code> and <code>\upsilon</code>
|-
| <math>\Iota\,</math> and <math>\iota\,</math>|| <code>I</code> and <code>\iota</code>
| <math>\Phi\,</math>, <math>\phi\,</math>, and <math>\varphi\,</math>|| <code>\Phi</code>, <code>\phi</code> and <code>\varphi</code>
|-
| <math>\Kappa\,</math>, <math>\kappa\,</math> and <math>\varkappa\,</math> || <code>K</code>, <code>\kappa</code> and <code>\varkappa</code>
| <math>\Chi\,</math> and <math>\chi\,</math>|| <code>X</code> and <code>\chi</code>
|-
| <math>\Lambda\,</math> and <math>\lambda\,</math>|| <code>\Lambda</code> and <code>\lambda</code>
| <math>\Psi\,</math> and <math>\psi\,</math>|| <code>\Psi</code> and <code>\psi</code>
|-
| <math>\Mu\,</math> and <math>\mu\,</math>|| <code>M</code> and <code>\mu</code>
| <math>\Omega\,</math> and <math>\omega\,</math>|| <code>\Omega</code> and <code>\omega</code>
|}
{| class="wikitable" latexfontsize="scriptsize"
|+ Inne symbole
|-
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="4"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="4"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="4"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="4"|
!scope="col"| Symbol !!scope="col"| Komenda
|-
| <math>\partial\,</math> || <code>\partial</code>
| <math>\imath\,</math> || <code>\imath</code>
| <math>\Re\,</math> || <code>\Re</code>
| <math>\nabla\,</math> || <code>\nabla</code>
| <math>\aleph\,</math> || <code>\aleph</code>
|-
| <math>\eth\,</math> || <code>\eth</code>
| <math>\jmath\,</math> || <code>\jmath</code>
| <math>\Im\,</math> || <code>\Im</code>
| <math>\Box\,</math> || <code>\Box</code>
| <math>\beth\,</math> || <code>\beth</code>
|-
| <math>\hbar\,</math> || <code>\hbar</code>
| <math>\ell\,</math> || <code>\ell</code>
| <math>\wp\,</math> || <code>\wp</code>
| <math>\infty\,</math> || <code>\infty</code>
| <math>\gimel\,</math> || <code>\gimel</code>
|}
{| class="wikitable" latexfontsize="scriptsize"
|+ Funkcje trygonometryczne
|-
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="5"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="5"|
!scope="col"| Symbol !!scope="col"| Komenda
|rowspan="5"|
!scope="col"| Symbol !!scope="col"| Komenda
|-
| <math>\sin\,</math> || <code>\sin</code>
| <math>\arcsin\,</math> || <code>\arcsin</code>
| <math>\sinh\,</math> || <code>\sinh</code>
| <math>\sec\,</math> || <code>\sec</code>
|-
| <math>\cos\,</math> || <code>\cos</code>
| <math>\arccos\,</math> || <code>\arccos</code>
| <math>\cosh\,</math> || <code>\cosh</code>
| <math>\csc\,</math> || <code>\csc</code>
|-
| <math>\tan\,</math> || <code>\tan</code>
| <math>\arctan\,</math> || <code>\arctan</code>
| <math>\tanh\,</math> || <code>\tanh</code>
| ||
|-
| <math>\cot\,</math> || <code>\cot</code>
| <math>\arccot\,</math> || <code>\arccot</code>
| <math>\coth\,</math> || <code>\coth</code>
| ||
|}
Jeżeli LaTeX nie zawiera komendy dla operatora matematycznego, którego zamierzasz użyć, np. <code>\cis</code> (<strong>c</strong>osinus plus <strong>i</strong> times <strong>s</strong>inus), dodaj do preambuły:
\DeclareMathOperator\cis{cis}
Możesz wówczas stosować <code>\cis</code> w swoim dokumencie tak jak <code>\cos</code> lub dowolny inny operator.
-->
== Znaszli ten kraj? ==
https://polona.pl/item/raptularzyk-lutni-1887-1901,OTIyOTA1OTY/79/#info:metadata
<score raw=1 vorbis=1>
\version "2.20.0"
\header{
title = "Znaszli ten kraj?"
poet = "Słowa: Johann W. von Goethe"
meter = "Przeklad: Adam Mickiewicz"
composer = "Muzyka: Stanisław Moniuszko"
arranger = "Aranżacja: Piotr Maszyński"
tagline = ""
}
\score{
\new PianoStaff <<
\new Staff = "RH"
\with { midiInstrument = "harmonica" } {
%\relative g' {
\clef treble
\key g \major
\time 12/8
\tempo 4=120
<<
\new Voice = "sop" \relative g' { \stemUp
\shiftOff
\autoBeamOff
b4.^\p g4 b8 d4.^( d4) d8 |
c4^( gis8) a4 e'8 e4.-> d4 r8 |
d4. c4 b8 b4.^( b4) b8 |
b4 b8 d4 c8 a4. d,4. |
d'4.^\< f4\! f8 f4.^\>^( f4\!) es8 |
d4 c8 bes4 c8 d4.^( d4) a8 |
bes4. d4 d8 d4.^( d4) c8 |
bes4 bes8 a4 g8 d'4.^( d4) d8 |
d4.^\pp d4 d8 d2. |
d8^\< d\! d fis^\>[ e\!] d d4.^( d4) d8 |
d4.^\< b4\! ^\f d8^\> g2.\! |
b,4.^\p g4 e'8 d2. |
d4.^\< d4\! d8 fis4.^( e4^\>) d8\! |
d2. b2. |
d4.^\< b4 d8\! g2. |
fis4.^\f g4 fis8 e2. |
e4. d4^\> g,8\! b4.^( a4) d8 |
d2.^\p b4. r8 \bar "|."
}
\new Voice = "alt" \relative g' { \stemDown
\shiftOff
\autoBeamOff
g4. d4 g8 b4._( b4) b8 |
fis4_( fis8) fis4 c'8 c4. c4 r8 |
b4. a4 g8 b4._( b4) g8 |
g4 g8 g4 g8 fis4. d4. |
bes'4. bes4 bes8 c4._( c4) c8 |
bes4 a8 g4 a8 bes4._( c4) a8 |
g4. g4 g8 a4._( a4) a8 |
g4 g8 g4 g8 fis4._( g4) a8 |
b4. b4 b8 c2. |
b8 b b b4 b8 a4 a8 c[ b] a |
b4. g4 b8 d2. |
b4. g4 g8 g4._( b4.) |
c4. c4 c8 d4._( d4) d8 |
b2. b |
b4. b4 b8 d2. |
dis4. dis4 dis8 e8 e, fis g4. |
g4. g4 g8 g4._( a4) c8 |
b2. b4. r8 \bar "|."
}
>>
}
\addlyrics { \small {
Znasz -- li ten kraj, gdzie cy -- try - na doj -- rze -- wa,
po -- ma -- rańcz blask zie -- lo - ne zło -- ci drze -- wa?
Gdzie wień -- cem bluszcz - ru -- i -- ny da - wne stro -- i,
gdzie bu -- ja laur i cy - prys ci - cho sto -- i?
Znasz -- li ten kraj? ach, tam, o mo - ja mi -- ła, - ach -,
Tam był mi raj, tam był mi raj, -
pó -- kiś ty ze - mną by -- ła;
Tam był mi raj, tam był mi raj (był mi raj),
pó -- kiś ty ze - mną by -- ła!
} }
\new Staff = "LH"
\with { midiInstrument = "harmonica" }
{
%\relative c {
\clef bass
\key g \major
\time 12/8
\tempo 4=120
\shiftOff
\autoBeamOff
<<
\new Voice = "tnr" { \stemUp
\shiftOff
\autoBeamOff
d4. d4 d8 g4.^( g4) d8 |
d4^( d8) d4 fis8 a4. a4 r8 |
g4. g4 g8 g4.^( fis4) e8 |
e4 e8 e4 e8 fis4. d |
f4. f4 f8 g4.^( g4) g8 |
f4 f8 f4 f8 f4._( fis4) fis8 |
g4. d4 d8 es4.^( es4) es8 |
e4 e8 e4 e8 fis4.^( g4) a8 |
gis4. gis4 gis8 a2. |
g8 g g g4 g8 fis4 fis8 a8[ g] fis |
g4. d4 g8 b2.
g4. g4 g8 g2. |
fis4. <eis gis>4 <eis gis>8 <fis a>4.^( g4) fis8 |
g2. g4. b,4 e8 |
d4. d4 g8 g2. |
a4. a4 a8 a4.^( ais4.) |
b4. b4 e8 g4.^( fis4) fis8 |
g2. g4. r8 \bar "|."
}
\new Voice = "bss" { \stemDown
\shiftOff
\autoBeamOff
g,4. b,4 d8 g4._( g,4) g,8 |
a,4_( d8) d4 d8 d4. fis4 r8 |
g4. g4 g8 e4._( dis4) e8 |
a,4 a,8 a,4 a,8 d4. d |
d4._\< d4\! d8 c4._\>_( c4\!) c8 |
f4 f8 f4 f8 bes,4._( a,4) d8 |
g,4. bes,4 bes,8 c4._( c4) c8 |
cis4 cis8 cis4 cis8 d4._( e4) f8 |
eis4. eis4 eis8 fis4._( fis4) d8 |
d8 d d d4 d8 d4._( d4) d8 |
_\< g,2. \! g,4._\> b,4 \! d8 |
g4. e4 c8 b,4._( g,4.) |
d4. d4 d8 d4._( d4) d8 |
g,4. b,4 d8 g2. |
g,4. g,4 g,8 b,2. |
b,4. b,4 b,8 c4._( cis4.) |
d4. d4 e8 d4. d |
<g, d>2. <g, d>4. r8 \bar "|."
}
>>
}
>>
\midi{}
\layout{}
}
</score>
==Timeline==
<timeline>
Define $cy = 2020
ImageSize = width:600 height:1300
PlotArea = width:500 height:1200 left:40 bottom:10
DateFormat = yyyy
Period = from:1000 till:$cy
TimeAxis = orientation:vertical
ScaleMajor = unit:year increment:25 start:1000
# there is no automatic collision detection,
# so shift texts up or down manually to avoid overlap
Define $dx = 10 # shift text to right side of bar
PlotData=
bar:Dokumenty color:blue width:15 mark:(line,white) align:left fontsize:M
from:1950 till:$cy shift:($dx,0) text:© – utwory objęte prawem autorskim
bar:Dokumenty color:skyblue width:15 mark:(line,white) align:left fontsize:M
from:1870 till:1950 shift:($dx,0) text:(©) – utwory mogą być objęte prawem autorskim
from:1900 till:1900 shift:($dx,0) text:(jeśli autor jest znany i nie zmarł przed 1950 r.)
bar:Dokumenty color:red width:15 mark:(line,white) align:left fontsize:M
from:1858 till:1860 shift:($dx,0) text: Pieśni op. 74 Fryderyka Chopina (1859)
from:1791 till:1793 shift:($dx,0) text:„Pieśni nabożne” F. Karpińskiego (m.in. Bóg się rodzi) (1792)
from:1599 till:1599 shift:($dx,0) text:Duma ukrainna (1599)
from:1579 till:1579 shift:($dx,0) text:Psałterz Dawidów (1579)
from:1250 till:1350 shift:($dx,0) text:Powstanie Bogurodzicy (XIII/XIV w.)
</timeline>
<br><br>
<hr>
<timeline>
Define $cy = 2020
ImageSize = width:600 height:900
PlotArea = width:500 height:800 left:40 bottom:10
DateFormat = yyyy
Period = from:-1000 till:500
TimeAxis = orientation:vertical
ScaleMajor = unit:year increment:100 start:-1000
# there is no automatic collision detection,
# so shift texts up or down manually to avoid overlap
Define $dx = 10 # shift text to right side of bar
PlotData=
bar:Dokumenty color:blue width:15 mark:(line,white) align:left fontsize:M
bar:Dokumenty color:skyblue width:15 mark:(line,white) align:left fontsize:M
bar:Dokumenty color:red width:15 mark:(line,white) align:left fontsize:M
from:476 till:477 shift:($dx,0) text:476 r. n.e. – upadek zachodniego cesarstwa rzymskiego
from:395 till:396 shift:($dx,0) text:395 r. n.e. rozpad cesarstwa na część wschodnią i zachodnią
from:313 till:314 shift:($dx,0) text:313 r. n.e. cesarz Konstantyn legalizuje chrześcijaństwo
from:-30 till:-29 shift:($dx,0) text:Cesarstwo rzymskie
bar:Dokumenty color:skyblue width:15 mark:(line,white) align:left fontsize:M
from:-100 till:-44 shift:($dx,0) text:ok. 100–44 r. p.n.e. – życie Gajusza Juliusza Cezara
bar:Dokumenty color:red width:15 mark:(line,white) align:left fontsize:M
from:-149 till:-146 shift:($dx,0) text:149–146 r. p.n.e. – III wojna punicka
from:-218 till:-201 shift:($dx,0) text:218–201 r. p.n.e. – II wojna punicka
from:-264 till:-241 shift:($dx,0) text:264–241 r. p.n.e. – I wojna punicka
from:-509 till:-508 shift:($dx,0) text:509 r. p.n.e – wygnanie ostatniego króla, Tarkwiniusza Pysznego – początek republiki
from:-753 till:-752 shift:($dx,0) text:752 r. p.n.e. – założenie Rzymu
</timeline>
== Przypisy ==
<references />
4ohevsitfpgn2gez01pjltod6ebrq39
Siewki roślin flory Polski/Różowate
0
32610
542742
484561
2026-05-12T22:39:50Z
Kenraiz
3283
/* Jabłoń dzika (Malus sylvestris Mill.) */ + foto
542742
wikitext
text/x-wiki
{{NawigacjaG|Siewki roślin flory Polski|[[Siewki roślin flory Polski/Krzyżownicowate|Krzyżownicowate]]|[[Siewki roślin flory Polski/Oliwnikowate|Oliwnikowate]]}}
<center><big><big>Różowate (''Rosaceae'')</big></big></center>
<center>Zobacz też: [[Siewki roślin uprawianych w Polsce/Różowate|różowate uprawiane]]</center>
{{TOC limit|2}}
=== Rzepik (''Agrimonia'') ===
==== [[w:Rzepik pospolity|Rzepik pospolity]] (''Agrimonia eupatoria'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Agrimonia eupatoria kz11.jpg|Siewka rzepika pospolitego.
File:Agrimonia eupatoria kz05.jpg|Siewka rzepika pospolitego.
File:Agrimonia eupatoria kz04.jpg|Siewka rzepika pospolitego.
File:Agrimonia eupatoria kz08.jpg|Siewka rzepika pospolitego.
File:Agrimonia eupatoria 2018-05-22 2590.jpg|Siewka rzepika pospolitego.
File:Agrimonia eupatoria 2018-05-22 2588.jpg|Siewka rzepika pospolitego.
</gallery>
{{Commons ilustr kat|Agrimonia eupatoria (seedlings)|siewki rzepika pospolitego}}
==== [[w:Rzepik szczeciniasty|Rzepik szczeciniasty]] (''Agrimonia pilosa'' Ledeb.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Agrimonia pilosa 2018-05-04 1010.jpg|Siewka rzepika szczeciniastego.
File:Agrimonia pilosa 2018-05-06 1715.jpg|Siewka rzepika szczeciniastego.
</gallery>
{{Commons ilustr kat|Agrimonia pilosa (seedlings)|siewki rzepika szczeciniastego}}
==== [[w:Rzepik wonny|Rzepik wonny]] (''Agrimonia procera'' Wallr.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Agrimonia procera kz05.jpg|Siewka rzepika wonnego.
File:Agrimonia procera kz04.jpg|Siewka rzepika wonnego.
File:Agrimonia procera kz02.jpg|Siewka rzepika wonnego.
</gallery>
{{Commons ilustr kat|Agrimonia procera (seedlings)|siewki rzepika wonnego}}
=== Przywrotnik (''Alchemilla'') ===
==== [[w:Przywrotnik pospolity|Przywrotnik pospolity]] (''Alchemilla vulgaris'' L. s. l.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== Świdośliwa (''Amelanchier'') ===
==== [[w:Świdośliwa kłosowa|Świdośliwa kłosowa]] (''Amelanchier spicata'' (Lam.) K. Koch) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Amelanchier spicata kz03.jpg|Siewka świdośliwy kłosowej.
File:Amelanchier spicata kz05.jpg|Siewka świdośliwy kłosowej.
File:Amelanchier spicata kz06.jpg|Siewka świdośliwy kłosowej.
</gallery>
{{Commons ilustr kat|Amelanchier spicata (seedlings)|siewki świdośliwy kłosowej}}
=== Skrytek (''Aphanes'') ===
==== [[w:Skrytek polny|Skrytek polny]] (''Aphanes arvensis'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Aphanes arvensis kz09.jpg|Siewka skrytka polnego.
Plik:Aphanes arvensis kz06.jpg|Siewka skrytka polnego.
Plik:Aphanes arvensis kz02.jpg|Siewka skrytka polnego.
Plik:Aphanes arvensis kz12.jpg|Siewka skrytka polnego.
Plik:Aphanes arvensis kz01.jpg|Siewki skrytka polnego.
Plik:Aphanes arvensis kz11.jpg|Siewka skrytka polnego.
Plik:Aphanes arvensis kz13.jpg|Młoda roślina skrytka polnego.
</gallery>
{{Commons ilustr kat|Aphanes arvensis (seedlings)|siewki skrytka polnego}}
==== [[w:Skrytek drobnoowockowy|Skrytek drobnoowockowy]] (''Aphanes australis'' Rydb.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== Parzydło (''Aruncus'') ===
==== [[w:Parzydło leśne|Parzydło leśne]] (''Aruncus dioicus'' (Walter) Fernald) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Aruncus dioicus 2017-05-07 0078.jpg|Siewki parzydła leśnego.
File:Aruncus dioicus 2017-05-07 0081.jpg|Siewki parzydła leśnego.
</gallery>
{{Commons ilustr kat|Aruncus dioicus (seedlings)|siewki parzydła leśnego}}
=== Siedmiopalecznik (''Comarum'') ===
==== [[w:Siedmiopalecznik błotny|Siedmiopalecznik błotny]] (''Comarum palustre'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Comarum palustre kz01.jpg|Siewka siedmiopalecznika błotnego.
Plik:Comarum palustre kz02.jpg|Siewka siedmiopalecznika błotnego.
</gallery>
{{Commons ilustr kat|Comarum palustre (seedlings)|siewki siedmiopalecznika błotnego}}
=== Irga (''Cotoneaster'') ===
==== [[w:Irga pospolita|Irga pospolita]] (''Cotoneaster integerrimus'' Medik.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Irga błyszcząca|Irga błyszcząca]] (''Cotoneaster lucidus'' Schltdl.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Cotoneaster lucidus kz02.jpg|Siewka irgi błyszczącej.
File:Cotoneaster lucidus 2018-05-04 1056.jpg|Siewka irgi błyszczącej.
File:Cotoneaster lucidus 2018-05-04 1053.jpg|Siewka irgi błyszczącej.
File:Cotoneaster lucidus kz01.jpg|Siewka irgi błyszczącej.
File:Cotoneaster lucidus kz03.jpg|Siewka irgi błyszczącej.
</gallery>
{{Commons ilustr kat|Cotoneaster lucidus (seedlings)|siewki irgi błyszczącej}}
==== [[w:Irga kutnerowata|Irga kutnerowata]] (''Cotoneaster nebrodensis'' (Guss.) K.Koch) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Irga czarna|Irga czarna]] (''Cotoneaster niger'' (Thunb.) Fr.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== Głóg (''Crataegus'') ===
==== [[w:Głóg wachlarzowaty|Głóg wachlarzowaty]] (''Crataegus flabellata'' (Bosc ex Spach) K. Koch) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Głóg nierównoząbkowy|Głóg nierównoząbkowy]] (''Crataegus × kyrtostyla'' Fingerh.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Głóg dwuszyjkowy|Głóg dwuszyjkowy]] (''Crataegus laevigata'' (Poir.) DC.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Crataegus oxyacantha kz01.jpg|Siewki głogu dwuszyjkowego.
File:Crataegus oxyacantha kz03.jpg|Siewka głogu dwuszyjkowego.
File:Crataegus oxyacantha kz02.jpg|Siewka głogu dwuszyjkowego.
</gallery>
{{Commons ilustr kat|Crataegus laevigata (seedlings)|siewki głogu dwuszyjkowego}}
==== [[w:Głóg wielkoowockowy|Głóg wielkoowockowy]] (''Crataegus × macrocarpa'' Hegetschw.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Głóg pośredni|Głóg pośredni]] (''Crataegus × media'' Bechst.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Głóg jednoszyjkowy|Głóg jednoszyjkowy]] (''Crataegus monogyna'' Jacq.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Crataegus monogyna kz03.jpg|Siewka głogu jednoszyjkowego.
Plik:Crataegus monogyna kz04.jpg|Siewka głogu jednoszyjkowego.
File:Crataegus monogyna 2018-05-01 9909.jpg|Siewka głogu jednoszyjkowego.
File:Crataegus monogyna 2018-05-01 9908.jpg|Siewka głogu jednoszyjkowego.
File:Crataegus monogyna 2018-05-01 9913.jpg|Siewka głogu jednoszyjkowego.
File:Crataegus monogyna 2017-09-16 4071.jpg|Siewka głogu jednoszyjkowego.
File:Crataegus monogyna 2018-04-20 9203.jpg|Kilkuletnia siewka głogu jednoszyjkowego.
</gallery>
{{Commons ilustr kat|Crataegus monogyna (seedlings)|siewki głogu jednoszyjkowego}}
==== [[w:Głóg szypułkowy|Głóg szypułkowy]] (''Crataegus pedicellata'' Sarg.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Głóg odgiętodziałkowy|Głóg odgiętodziałkowy]] (''Crataegus rhipidophylla'' Gand.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== Dębik (''Dryas'') ===
==== [[w:Dębik ośmiopłatkowy|Dębik ośmiopłatkowy]] (''Dryas octopetala'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== ''Drymocallis'' ===
==== [[w:Pięciornik skalny|Pięciornik skalny]] (''Drymocallis rupestris'' (L.) Soják) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Drymocallis rupestris 2018-05-22 2528.jpg|Siewka pięciornika skalnego.
File:Drymocallis rupestris 2018-05-22 2524.jpg|Siewka pięciornika skalnego.
File:Drymocallis rupestris 2018-05-22 2526.jpg|Siewka pięciornika skalnego.
</gallery>
{{Commons ilustr kat|Drymocallis rupestris (seedlings)|siewki pięciornika skalnego}}
=== Wiązówka (''Filipendula'') ===
==== [[w:Wiązówka błotna|Wiązówka błotna]] (''Filipendula ulmaria'' (L.) Maxim.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Filipendula ulmaria kz02.jpg|Siewka wiązówki błotnej.
File:Filipendula ulmaria kz05.jpg|Siewka wiązówki błotnej.
File:Filipendula ulmaria kz01.jpg|Siewka wiązówki błotnej.
File:Filipendula ulmaria 2018-05-19 2279.jpg|Siewka wiązówki błotnej.
File:Filipendula ulmaria 2018-06-08 3467.jpg|Siewka wiązówki błotnej.
File:Filipendula ulmaria 2018-05-19 2280.jpg|Siewki wiązówki błotnej.
</gallery>
{{Commons ilustr kat|Filipendula ulmaria (seedlings)|siewki wiązówki błotnej}}
==== [[w:Wiązówka bulwkowa|Wiązówka bulwkowa]] (''Filipendula vulgaris'' Moench) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Filipendula vulgaris 2019-10-15 4850.jpg|Siewka wiązówki bulwkowej.
File:Filipendula vulgaris 2019-10-06 4678.jpg|Siewka wiązówki bulwkowej.
File:Filipendula vulgaris kz03.jpg|Siewka wiązówki bulwkowej.
File:Filipendula vulgaris kz07.jpg|Siewka wiązówki bulwkowej.
File:Filipendula vulgaris kz05.jpg|Siewka wiązówki bulwkowej.
File:Filipendula vulgaris kz04.jpg|Siewki wiązówki bulwkowej.
File:Filipendula vulgaris 2019-10-15 4839.jpg|Siewki wiązówki bulwkowej.
</gallery>
{{Commons ilustr kat|Filipendula vulgaris (seedlings)|siewki wiązówki bulwkowej}}
=== Poziomka (''Fragaria'') ===
==== [[w:Poziomka wysoka|Poziomka wysoka]] (''Fragaria moschata'' (Duchesne) Duchesne) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Poziomka pospolita|Poziomka pospolita]] (''Fragaria vesca'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Fragaria vesca kz02.jpg|Siewka poziomki pospolitej.
File:Fragaria vesca kz01.jpg|Siewka poziomki pospolitej.
File:Fragaria vesca 2018-05-22 2364.jpg|Siewka poziomki pospolitej.
File:Fragaria vesca 2018-05-22 2362.jpg|Siewka poziomki pospolitej.
File:Fragaria vesca 2018-04-27 9426.jpg|Siewka poziomki pospolitej.
</gallery>
{{Commons ilustr kat|Fragaria vesca (seedlings)|siewki poziomki pospolitej}}
==== [[w:Poziomka twardawa|Poziomka twardawa]] (''Fragaria viridis'' Weston) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== Kuklik (''Geum'') ===
==== [[w:Kuklik sztywny|Kuklik sztywny]] (''Geum aleppicum'' Jacq.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Kuklik górski|Kuklik górski]] (''Geum montanum'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Kuklik rozesłany|Kuklik rozesłany]] (''Geum reptans'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Kuklik zwisły|Kuklik zwisły]] (''Geum rivale'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Geum rivale kz06.jpg|Siewka kuklika zwisłego.
Plik:Geum rivale kz08.jpg|Siewka kuklika zwisłego.
Plik:Geum rivale kz14.jpg|Siewka kuklika zwisłego.
File:Geum rivale 2018-05-04 0979.jpg|Siewki kuklika zwisłego.
File:Geum rivale 2018-05-04 0980.jpg|Siewka kuklika zwisłego.
Plik:Geum rivale kz03.jpg|Siewka kuklika zwisłego.
</gallery>
{{Commons ilustr kat|Geum rivale (seedlings)|siewki kuklika zwisłego}}
==== [[w:Kuklik pospolity|Kuklik pospolity]] (''Geum urbanum'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Geum urbanum kz08.jpg|Siewka kuklika pospolitego.
File:Geum urbanum kz10.jpg|Siewki kuklika pospolitego.
File:Geum urbanum kz01.jpg|Siewki kuklika pospolitego.
File:Geum urbanum kz04.jpg|Siewka kuklika pospolitego.
File:Geum urbanum kz18.jpg|Siewki kuklika pospolitego.
File:Geum urbanum 2017-04-23 8564.jpg|Siewki kuklika pospolitego.
File:Geum urbanum 2017-04-23 8584.jpg|Siewki kuklika pospolitego.
</gallery>
{{Commons ilustr kat|Geum urbanum (seedlings)|siewki kuklika pospolitego}}
=== Pustokrężnik (''Holodiscus'') ===
==== [[w:Pustokrężnik różnobarwny|Pustokrężnik różnobarwny]] (''Holodiscus discolor'' (Pursh) Maxim.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== Jabłoń (''Malus'') ===
==== [[w:Jabłoń domowa|Jabłoń domowa]] (''Malus domestica'' Borkh.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Apple seedling idared HDR.jpg|Siewka jabłoni domowej.
File:Malus domestica 2017-04-21 8468b.jpg|Siewki jabłoni domowej.
File:Shoot of Apple.JPG|Siewki jabłoni domowej.
</gallery>
{{Commons ilustr kat|Malus domestica (seedlings)|siewki jabłoni domowej}}
==== [[w:Jabłoń dzika|Jabłoń dzika]] (''Malus sylvestris'' Mill.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Malus sylvestris kz08.jpg|Siewka jabłoni dzikiej.
Plik:Malus sylvestris kz09.jpg|Siewka jabłoni dzikiej.
Plik:Malus sylvestris kz10.jpg|Siewka jabłoni dzikiej.
Plik:Malus sylvestris kz07.jpg|Siewka jabłoni dzikiej.
</gallery>
=== Pięciornik (''Potentilla'') ===
==== [[w:Pięciornik biały|Pięciornik biały]] (''Potentilla alba'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Potentilla alba kz01.jpg|Siewka pięciornika białego.
</gallery>
{{Commons ilustr kat|Potentilla alba (seedlings)|siewki pięciornika białego}}
==== [[w:Pięciornik rozścielony|Pięciornik rozścielony]] (''Potentilla anglica'' Laichard.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Potentilla anglica kz06.jpg|Siewka pięciornika rozścielonego.
File:Potentilla anglica kz07.jpg|Młoda roślina pięciornika rozścielonego.
</gallery>
{{Commons ilustr kat|Potentilla anglica (seedlings)|siewki pięciornika rozścielonego}}
==== [[w:Pięciornik gęsi|Pięciornik gęsi]] (''Potentilla anserina'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Potentilla anserina kz12.jpg|Siewka pięciornika gęsiego.
File:Potentilla anserina kz11.jpg|Siewka pięciornika gęsiego.
File:Potentilla anserina kz09.jpg|Siewka pięciornika gęsiego.
File:Potentilla anserina kz04.jpg|Siewka pięciornika gęsiego.
File:Potentilla anserina kz03.jpg|Siewka pięciornika gęsiego.
</gallery>
{{Commons ilustr kat|Potentilla anserina (seedlings)|siewki pięciornika gęsiego}}
==== [[w:Pięciornik piaskowy|Pięciornik piaskowy]] (''Potentilla arenaria'' Borkh.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Potentilla arenaria kz20.jpg|Siewka pięciornika piaskowego.
File:Potentilla arenaria kz23.jpg|Siewka pięciornika piaskowego.
File:Potentilla arenaria kz24.jpg|Siewka pięciornika piaskowego.
File:Potentilla arenaria kz17.jpg|Siewka pięciornika piaskowego.
File:Potentilla arenaria kz18.jpg|Siewka pięciornika piaskowego.
File:Potentilla arenaria kz19.jpg|Siewka pięciornika piaskowego.
</gallery>
{{Commons ilustr kat|Potentilla arenaria (seedlings)|siewki pięciornika piaskowego}}
==== [[w:Pięciornik srebrny|Pięciornik srebrny]] (''Potentilla argentea'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Potentilla argentea 15-p.bot-poten.argen-28.jpg|Siewki pięciornika srebrnego.
File:Potentilla argentea 15-p.bot-poten.argen-24.jpg|Siewka pięciornika srebrnego.
File:Potentilla argentea kz01.jpg|Siewki pięciornika srebrnego.
File:Potentilla argentea kz02.jpg|Siewka pięciornika srebrnego.
File:Potentilla argentea kz04.jpg|Siewki pięciornika srebrnego.
File:Potentilla argentea kz03.jpg|Siewki pięciornika srebrnego.
</gallery>
{{Commons ilustr kat|Potentilla argentea (seedlings)|siewki pięciornika srebrnego}}
==== [[w:Pięciornik złoty|Pięciornik złoty]] (''Potentilla aurea'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== ''[[w:Potentilla bifurca|Potentilla bifurca]]'' L. ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== ''[[w:Potentilla chrysantha|Potentilla chrysantha]]'' Trevir. ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik pagórkowy|Pięciornik pagórkowy]] (''Potentilla collina'' Wibel) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik grzebieniasty|Pięciornik grzebieniasty]] (''Potentilla conferta'' Bunge) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik alpejski|Pięciornik alpejski]] (''Potenilla crantzii'' (Crantz) Beck ex Fritsch) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Potentilla crantzii kz02.jpg|Siewka pięciornika alpejskiego.
File:Potentilla crantzii kz01.jpg|Siewka pięciornika alpejskiego.
</gallery>
{{Commons ilustr kat|Potentilla crantzii (seedlings)|siewki pięciornika alpejskiego}}
==== [[w:Pięciornik kurze ziele|Pięciornik kurze ziele]] (''Potentilla erecta'' (L.) Raeusch.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Potentilla erecta kz05.jpg|Siewka pięciornika kurze ziele.
File:Potentilla erecta kz01.jpg|Siewki pięciornika kurze ziele.
File:Potentilla erecta kz11.jpg|Siewka pięciornika kurze ziele.
File:Potentilla erecta kz07.jpg|Siewka pięciornika kurze ziele.
File:Potentilla erecta kz10.jpg|Siewka pięciornika kurze ziele.
</gallery>
{{Commons ilustr kat|Potentilla erecta (seedlings)|siewki pięciornika kurze ziele}}
==== [[w:Pięciornik siedmiolistkowy|Pięciornik siedmiolistkowy]] (''Potentilla heptaphylla'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik siwy|Pięciornik siwy]] (''Potentilla inclinata'' Vill.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik pośredni|Pięciornik pośredni]] (''Potentilla intermedia'' L. non Wahlenb.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik jedwabisty|Pięciornik jedwabisty]] (''Potentilla leucopolitana'' P. J. Müll.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik drobny|Pięciornik drobny]] (''Potentilla micrantha'' Ramond ex DC.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Potentilla micrantha 2018-05-04 0989.jpg|Siewka pięciornika drobnego.
File:Potentilla micrantha 2018-05-04 0993.jpg|Siewki pięciornika drobnego.
File:Potentilla micrantha 2018-05-04 0994.jpg|Siewka pięciornika drobnego.
</gallery>
{{Commons ilustr kat|Potentilla micrantha (seedlings)|siewki pięciornika drobnego}}
==== [[w:Pięciornik wiosenny|Pięciornik wiosenny]] (''Potentilla neumanniana'' Rchb.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik norweski|Pięciornik norweski]] (''Potentilla norvegica'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Potentilla norvegica 15-p.bot-poten.norve-31.jpg|Siewka pięciornika norweskiego.
Plik:Potentilla norvegica 15-p.bot-poten.norve-35.jpg|Siewka pięciornika norweskiego.
Plik:Potentilla norvegica 15-p.bot-poten.norve-36.jpg|Siewka pięciornika norweskiego.
Plik:Potentilla norvegica 15-p.bot-poten.norve-37.jpg|Siewki pięciornika norweskiego.
Plik:Potentilla norvegica 15-p.bot-poten.norve-41.jpg|Młoda roślina pięciornika norweskiego.
</gallery>
{{Commons ilustr kat|Potentilla norvegica (seedlings)|siewki pięciornika norweskiego}}
==== ''[[w:Potentilla pensylvanica|Potentilla pensylvanica]]'' L. ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik omszony|Pięciornik omszony]] (''Potentilla pusilla'' Host) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik wyprostowany|Pięciornik wyprostowany]] (''Potentilla recta'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Potentilla recta 2018-05-06 1509.jpg|Siewka pięciornika wyprostowanego.
File:Potentilla recta 2018-05-06 1506.jpg|Siewki pięciornika wyprostowanego.
File:Potentilla recta 2018-05-06 1507.jpg|Siewki pięciornika wyprostowanego.
Plik:Potentilla recta kz08.jpg|Siewka pięciornika wyprostowanego.
Plik:Potentilla recta 15-p.bot-poten.recta-28.jpg|Siewka pięciornika wyprostowanego.
Plik:Potentilla recta kz10.jpg|Siewki pięciornika wyprostowanego.
Plik:Potentilla recta 15-p.bot-poten.recta-31.jpg|Siewki pięciornika wyprostowanego.
</gallery>
{{Commons ilustr kat|Potentilla recta (seedlings)|siewki pięciornika wyprostowanego}}
==== [[w:Pięciornik rozłogowy|Pięciornik rozłogowy]] (''Potentilla reptans'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Potentilla reptans kz08.jpg|Siewka pięciornika rozłogowego.
Plik:Potentilla reptans kz07.jpg|Siewka pięciornika rozłogowego.
Plik:Potentilla reptans kz06.jpg|Siewka pięciornika rozłogowego.
Plik:Potentilla reptans kz10.jpg|Siewka pięciornika rozłogowego.
</gallery>
{{Commons ilustr kat|Potentilla reptans (seedlings)|siewki pięciornika rozłogowego}}
==== [[w:Pięciornik śląski|Pięciornik śląski]] (''Potentilla silesiaca'' R. Uechtr.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik płonny|Pięciornik płonny]] (''Potentilla sterilis'' (L.) Garcke) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik niski|Pięciornik niski]] (''Potentilla supina'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Potentilla supina kz06.jpg|Siewka pięciornika niskiego.
Plik:Potentilla supina kz17.jpg|Siewka pięciornika niskiego.
Plik:Potentilla supina kz09.jpg|Siewka pięciornika niskiego.
Plik:Potentilla supina kz10.jpg|Siewka pięciornika niskiego.
Plik:Potentilla supina kz20.jpg|Siewka pięciornika niskiego.
Plik:Potentilla supina kz18.jpg|Siewka pięciornika niskiego.
</gallery>
{{Commons ilustr kat|Potentilla supina (seedlings)|siewki pięciornika niskiego}}
==== [[w:Pięciornik rozpierzchłokwiatowy|Pięciornik rozpierzchłokwiatowy]] (''Potentilla thyrsiflora'' Hülsen in Zimmeter) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Pięciornik Wimanna|Pięciornik Wimanna]] (''Potentilla wimanniana'' Günther & Schummel) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== ''Prunus'' ===
==== [[w:Wiśnia ptasia|Wiśnia ptasia]] (''Prunus avium'' (L.) L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Prunus avium 2018-04-20 9174.jpg|Siewka wiśni ptasiej.
File:Prunus avium 2018-04-20 9177.jpg|Siewka wiśni ptasiej.
File:Prunus avium 2018-04-20 9139.jpg|Siewka wiśni ptasiej.
Plik:Prunus avium kz03.jpg|Siewka wiśni ptasiej.
File:Prunus avium kz01.jpg|Siewka wiśni ptasiej.
File:Prunus avium seedling.jpg|Siewki wiśni ptasiej.
</gallery>
{{Commons ilustr kat|Prunus avium (seedlings)|siewki wiśni ptasiej}}
==== [[w:Śliwa wiśniowa|Śliwa wiśniowa]] (''Prunus cerasifera'' Ehrh.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Vérszilva 1 hetes.JPG|Siewki śliwy wiśniowej.
</gallery>
{{Commons ilustr kat|Prunus cerasifera (seedlings)|siewki śliwy wiśniowej}}
==== [[w:Wiśnia pospolita|Wiśnia pospolita]] (''Prunus cerasus'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Ten seedlings with different types of cotyledon or seed leav Wellcome V0044555 (cropped8).jpg|Siewka wiśni pospolitej.
</gallery>
{{Commons ilustr kat|Prunus cerasus (seedlings)|siewki wiśni pospolitej}}
==== [[w:Śliwa domowa|Śliwa domowa]] (''Prunus domestica'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Prunus domestica subsp. oeconomica 2018-05-01 9981.jpg|Siewka śliwy domowej (węgierki) z niezrzuconą łupiną nasiona.
File:Prunus domestica subsp. oeconomica 2018-05-01 9957.jpg|Siewka śliwy domowej (węgierki) z niezrzuconą łupiną nasiona.
File:Prunus domestica subsp. oeconomica 2018-05-01 9967.jpg|Siewka śliwy domowej (węgierki).
</gallery>
{{Commons ilustr kat|Prunus domestica (seedlings)|siewki śliwy domowej}}
==== [[w:Wiśnia karłowata|Wiśnia karłowata]] (''Prunus fruticosa'' Pall.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Wiśnia wonna|Wiśnia wonna]] (''Prunus mahaleb'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Czeremcha zwyczajna|Czeremcha zwyczajna]] (''Prunus padus'' L.) ====
<!-- opis siewki za źródłem: Król 104-105 -->
'''Kiełkowanie''' [[w:kiełkowanie epigeiczne|nadziemne]]. '''Liścienie''' są dwa, prawie siedzące, odwrotnie jajowate, o długości 5-7 mm i szerokości 3-4 mm, grube i mięsiste, na spodniej stronie wypukłe, z klinowatą podstawą i bardzo krótkim ostrym wierzchołkiem. Górna strona ciemnozielona, dolna jaśniejsza, czerwieniejąca. '''Część podliścieniowa''' ma długość 1,5-3,5 cm i grubość ok. 1 mm, jest gładka, naga, czerwonawa a przy ziemi biaława. '''Część nadliścieniowa''' ma długość 1-2,5 cm, czerwony kolor i delikatne omszenie. '''Pierwsze liście właściwe''' wyrastają naprzeciwlegle, na czerwonawym, lekko oskrzydlonym ogonku długości 2-3 mm. Są jajowate, o zaostrzonym wierzchołku i drobnym, silnym, ukośnym piłkowaniu na brzegach, od spodu jaśniejsze. Unerwienie liści jest pierzaste, czerwonawe, z połączonymi łukowato na brzegach nerwami bocznymi. Przylistki o długości 2-3 mm, nitkowate, z ostrym piłkowaniem. '''Korzeń''' jest palowy z wieloma korzeniami bocznymi<ref name=Król104-105>{{cytuj książkę| nazwisko = Król | imię = Stanisław | tytuł = Siewki drzew i krzewów. Klucz do oznaczania | wydawca = Państwowe Wydawnictwo Rolnicze i Leśne | miejsce = Warszawa | rok = 1972 | strony = 104-105}}</ref>.
<gallery>
Plik:Prunus padus kz02.jpg|Siewka czeremchy zwyczajnej.
Plik:Prunus padus kz09.jpg|Siewka czeremchy zwyczajnej.
Plik:Prunus padus kz07.jpg|Siewka czeremchy zwyczajnej.
Plik:Prunus padus kz27.jpg|Siewka czeremchy zwyczajnej.
Plik:Prunus padus kz25.jpg|Siewki czeremchy zwyczajnej.
Plik:Prunus padus kz24.jpg|Siewki czeremchy zwyczajnej.
</gallery>
{{Commons ilustr kat|Prunus padus (seedlings)|siewki czeremchy zwyczajnej}}
==== [[w:Czeremcha amerykańska|Czeremcha amerykańska]] (''Prunus serotina'' Ehrh.) ====
<!-- opis siewki za źródłem: Król 104 -->
Kiełkowanie jest [[w:Kiełkowanie hipogeiczne|hipogeiczne]]<ref name=fs>{{cytuj stronę|url=http://www.na.fs.fed.us/spfo/pubs/silvics_manual/Volume_2/prunus/serotina.htm|tytuł=Prunus serotina Ehrh.|praca=Northeastern Area State & Private Forestry|opublikowany=USDA Forest Service|język=en|data dostępu=2012-08-30}}</ref> i następuje wiosną<ref name="muller137">{{Cytuj książkę | autor = F.M. Muller | tytuł = Seedlings of the North-Western European Lowland: A flora of seedlings | wydawca = Centre for Agricultural Publishing and Documentation | miejsce = Wageningen | data = 1978 | strony = 137}}</ref>. Część podliścieniowa ([[w:hipokotyl|hipokotyl]]) ma 1 cm długości, jest drewniejąca, naga lub z rzadkimi włoskami. Liścienie pozostają w pestce lub nawet jeśli się wysuną – pozostają pod ziemią i są bezbarwne<ref name="muller137"/>. Część nadliścieniowa ([[w:epikotyl|epikotyl]]) osiąga do 5<ref name="krol104">{{Cytuj książkę | autor = Stanisław Król | tytuł = Siewki drzew i krzewów | wydawca = Państwowe Wydawnictwo Rolnicze i Leśne | miejsce = Warszawa | data = 1972 | strony = 104}}</ref>–6<ref name="muller137"/> cm długości, jest naga, nad ziemią biała, w części środkowej silnie czerwono nabiegła, a w górze purpurowozielona<ref name=krol104/>. Pierwsze liście są naprzeciwległe, osadzone są na nagich ogonkach o długości 2–3 mm, wspartych równowąskimi [[w:przylistek|przylistkami]]<ref name="muller137"/>. Szeroko jajowata blaszka osiąga do 3 cm długości i 2 cm szerokości, nasadę ma szeroko klinowatą, na szczycie jest krótko i tępo zaostrzona. Brzeg blaszki jest krótko, ostro piłkowany<ref name=krol104/>. Blaszka od góry jest połyskująca, nieco skórzasta. Kolejne liście wyrastają naprzemianlegle, są bardziej wydłużone i długo zaostrzone<ref name=krol104/>.
<gallery>
File:Prunus serotina kz01.jpg|Siewka czeremchy amerykańskiej.
File:Prunus serotina kz21.jpg|Siewka czeremchy amerykańskiej.
File:Prunus serotina kz15.jpg|Siewka czeremchy amerykańskiej.
File:Prunus serotina kz02.jpg|Siewka czeremchy amerykańskiej.
File:Prunus serotina 2018-04-24 9392.jpg|Siewki czeremchy amerykańskiej.
File:Prunus serotina seedlings 8601.JPG|Siewki czeremchy amerykańskiej.
</gallery>
{{Commons ilustr kat|Prunus serotina (seedlings)|siewki czeremchy amerykańskiej}}
==== [[w:Śliwa tarnina|Śliwa tarnina]] (''Prunus spinosa'' L.) ====
<!-- opis siewki za źródłem -->
Kiełkowanie następuje wiosną<ref name="muller137">{{Cytuj książkę | autor = F.M. Muller | tytuł = Seedlings of the North-Western European Lowland: A flora of seedlings | wydawca = Centre for Agricultural Publishing and Documentation | miejsce = Wageningen | data = 1978 | strony = 137}}</ref>. Siewka ma białożółty korzeń pierwotny z nitkowatymi, długimi korzeniami bocznymi. Długość korzenia sięga do 4 cm, tyle co długość części podliścieniowej (hipokotylu), która jest zielonobiała<ref name="krol102">{{Cytuj książkę | autor = Stanisław Król | tytuł = Siewki drzew i krzewów | wydawca = Państwowe Wydawnictwo Rolnicze i Leśne | miejsce = Warszawa | data = 1972 | strony = 102}}</ref> i naga<ref name="muller137"/>. Dwa liścienie są mięsiste, wypukłe od spodu, odwrotnie jajowate, osiągają 7–8 (11<ref name="muller137"/>) mm długości i 4–5 mm szerokości. Wierzchołek jest zaokrąglony, a nasada zbiegająca w ogonek o długości 2–3 mm. Liścienie od góry są zielone, od dołu purpurowe lub bladozielone z purpurowymi plamkami<ref name="krol102"/>. Część nadliścieniowa (epikotyl) osiąga do 6 cm długości<ref name="muller137"/>, jest naga i zielona<ref name="krol102"/>. Pierwsze liście właściwe są skrętoległe, osadzone są na krótkich ogonkach długości do 2 mm, a ich blaszka osiąga 2 cm długości i 1 cm szerokości. U ich nasady znajdują się wąskolancetowate przylistki długości do 3 mm. Liście są jajowate, u podstawy zaokrąglone lub słabo klinowate, na wierzchołku nagle zaostrzone. Brzeg blaszki jest drobno, ostro i nieregularnie piłkowany<ref name="muller137"/><ref name="krol102"/>. Liście są z wierzchu ciemnozielone, matowe, od spodu jaśniejsze. Pierwsze liście są prawie nagie, włoski pojawiają się liczniej na 6 liściu i kolejnych<ref name="krol102"/>.
<gallery>
Plik:Prunus spinosa kz02.jpg|Siewka śliwy tarniny.
Plik:Prunus spinosa kz07.jpg|Siewka śliwy tarniny.
</gallery>
{{Commons ilustr kat|Prunus spinosa (seedlings)|siewki śliwy tarniny}}
=== Grusza (''Pyrus'') ===
==== [[w:Grusza pospolita|Grusza pospolita]] (''Pyrus communis'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Grusza polna|Grusza polna]] (''Pyrus pyraster'' (L.) Burgsd.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Pyrus pyraster kz01.jpg|Siewka gruszy polnej.
</gallery>
{{Commons ilustr kat|Pyrus pyraster (seedlings)|siewki gruszy polnej}}
=== Róża (''Rosa'') ===
==== [[w:Róża igiełkowata|Róża igiełkowata]] (''Rosa acicularis'' Lindl.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża polna|Róża polna]] (''Rosa agrestis'' Savi) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża labradorska|Róża labradorska]] (''Rosa blanda'' Aiton) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża dzika|Róża dzika]] (''Rosa canina'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
Plik:Rosa canina kz03.jpg|Siewka róży dzikiej.
File:Rosa canina 2018-05-02 0166.jpg|Siewka róży dzikiej.
File:Rosa canina 2018-05-03 0258.jpg|Siewka róży dzikiej.
File:Rosa canina kz02.jpg|Siewka róży dzikiej.
File:Rosa canina 2018-05-22 2565.jpg|Siewki róży dzikiej.
</gallery>
{{Commons ilustr kat|Rosa canina (seedlings)|siewki róży dzikiej}}
==== [[w:Róża karolińska|Róża karolińska]] (''Rosa carolina'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża dahurska|Róża dahurska]] (''Rosa davurica'' Pall.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża sina|Róża sina]] (''Rosa dumalis'' Bechst. em. Boulenger) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża żółta|Róża żółta]] (''Rosa foetida'' Herrm.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża francuska|Róża francuska]] (''Rosa gallica'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża czerwonawa|Róża czerwonawa]] (''Rosa glauca'' Pourr.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rosa glauca 2018-05-06 1278.jpg|Siewka róży czerwonawej.
File:Rosa glauca 2018-05-06 1282.jpg|Siewka róży czerwonawej.
File:Rosa glauca 2018-06-05 3053.jpg|Siewka róży czerwonawej.
</gallery>
{{Commons ilustr kat|Rosa glauca (seedlings)|siewki róży czerwonawej}}
==== [[w:Róża rosyjska|Róża rosyjska]] (''Rosa gorenkensis'' Besser) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża eliptyczna|Róża eliptyczna]] (''Rosa inodora'' Fr.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża Jundziłła|Róża Jundziłła]] (''Rosa jundzillii'' Bess.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża girlandowa|Róża girlandowa]] (''Rosa majalis'' Herrm.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża drobnokwiatowa|Róża drobnokwiatowa]] (''Rosa micrantha'' Borrer ex Sm.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża wielokwiatowa|Róża wielokwiatowa]] (''Rosa multiflora'' Thunb.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża alpejska|Róża alpejska]] (''Rosa pendulina'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rosa pendulina kz10.jpg|Siewki róży alpejskiej.
File:Rosa pendulina kz12.jpg|Siewki róży alpejskiej.
File:Rosa pendulina kz14.jpg|Siewki róży alpejskiej.
File:Rosa pendulina kz17.jpg|Siewki róży alpejskiej.
</gallery>
{{Commons ilustr kat|Rosa pendulina (seedlings)|siewki róży alpejskiej}}
==== [[w:Róża rdzawa|Róża rdzawa]] (''Rosa rubiginosa'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rosa rubiginosa kz07.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa 2022-04-16 6478.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa 2022-04-05 5998.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa kz08.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa 2022-04-08 6115.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa 2022-04-16 6480.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa 2022-04-26 7575.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa kz10.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa kz04.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa kz02.jpg|Siewka róży rdzawej.
File:Rosa rubiginosa kz05.jpg|Siewki róży rdzawej.
</gallery>
{{Commons ilustr kat|Rosa rubiginosa (seedlings)|siewki róży rdzawej}}
==== [[w:Róża pomarszczona|Róża pomarszczona]] (''Rosa rugosa'' Thunb.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rosa rugosa 2019-03-31 8875.jpg|Siewka róży pomarszczonej.
File:Rosa rugosa 2019-03-21 7429.jpg|Siewka róży pomarszczonej.
File:Rosa rugosa 2019-03-21 7423.jpg|Siewka róży pomarszczonej.
Plik:Rosa rugosa kz03.jpg|Siewka róży pomarszczonej.
File:Rosa rugosa 2019-04-05 9048.jpg|Siewka róży pomarszczonej.
File:Rosa rugosa 2019-04-08 9433.jpg|Siewka róży pomarszczonej.
File:Rosa rugosa 2019-04-23 1996.jpg|Siewka róży pomarszczonej.
</gallery>
{{Commons ilustr kat|Rosa rugosa (seedlings)|siewki róży pomarszczonej}}
==== [[w:Róża zapoznana|Róża zapoznana]] (''Rosa sherardii'' Davies) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża gęstokolczasta|Róża gęstokolczasta]] (''Rosa spinosissima'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża kutnerowata|Róża kutnerowata]] (''Rosa tomentosa'' Sm.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża jabłkowata|Róża jabłkowata]] (''Rosa villosa'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rosa villosa 2018-05-04 1025.jpg|Siewka róży jabłkowatej.
File:Rosa villosa 2018-05-04 1024.jpg|Siewka róży jabłkowatej.
</gallery>
{{Commons ilustr kat|Rosa villosa (seedlings)|siewki róży jabłkowatej}}
==== [[w:Róża wirgińska|Róża wirgińska]] (''Rosa virginiana'' Herrm.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Róża węgierska|Róża węgierska]] (''Rosa zalana'' Wiesb.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== ''Rubus'' ===
==== [[w:Jeżyna alegeńska|Jeżyna alegeńska]] (''Rubus allegheniensis'' Porter) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rubus allegheniensis 2018-05-22 2853.jpg|Siewka jeżyny alegeńskiej.
File:Rubus allegheniensis 2018-05-22 2852.jpg|Siewka jeżyny alegeńskiej.
File:Rubus allegheniensis 2018-05-22 2850.jpg|Siewka jeżyny alegeńskiej.
</gallery>
{{Commons ilustr kat|Rubus allegheniensis (seedlings)|siewki jeżyny alegeńskiej}}
==== [[w:Jeżyna popielica|Jeżyna popielica]] (''Rubus caesius'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rubus caesius kz04.jpg|Siewka jeżyny popielicy.
File:Rubus caesius kz01.jpg|Siewka jeżyny popielicy.
File:Rubus caesius kz03.jpg|Siewka jeżyny popielicy.
</gallery>
{{Commons ilustr kat|Rubus caesius (seedlings)|siewki jeżyny popielicy}}
==== [[w:Malina moroszka|Malina moroszka]] (''Rubus chamaemorus'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Jeżyna krzewiasta|Jeżyna krzewiasta]], jeżyna bezkolcowa (''Rubus fruticosus'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rubus fruticosus Orkan 2018-05-04 0771.jpg|Siewka jeżyny bezkolcowej ‘Orkan’.
File:Rubus fruticosus Orkan 2018-05-04 0770.jpg|Siewka jeżyny bezkolcowej ‘Orkan’.
</gallery>
{{Commons ilustr kat|Rubus fruticosus (seedlings)|siewki jeżyny krzewiastej}}
==== [[w:Malina właściwa|Malina właściwa]] (''Rubus idaeus'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rubus idaeus 2018-04-24 9358.jpg|Siewka maliny właściwej.
File:Rubus idaeus kz08.jpg|Siewka maliny właściwej.
File:Rubus idaeus kz09.jpg|Siewka maliny właściwej.
File:Rubus idaeus kz10.jpg|Siewka maliny właściwej.
File:Rubus idaeus 2018-04-24 9365.jpg|Siewka maliny właściwej.
File:Rubus idaeus 2018-04-24 9362.jpg|Młode rośliny maliny właściwej.
</gallery>
{{Commons ilustr kat|Rubus idaeus (seedlings)|siewki maliny właściwej}}
==== [[w:Jeżyna wcinanolistna|Jeżyna wcinanolistna]] (''Rubus laciniatus'' Willd.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Rubus laciniatus 2018-08-19 7162.jpg|Młoda roślina jeżyny wcinanolistnej.
</gallery>
==== [[w:Jeżyna pachnąca|Jeżyna pachnąca]] (''Rubus odoratus'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Malina kamionka|Malina kamionka]] (''Rubus saxatilis'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== Krwiściąg (''Sanguisorba'') ===
==== ''[[w:Sanguisorba dodecandra|Sanguisorba dodecandra]]'' Moretti ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Krwiściąg mniejszy|Krwiściąg mniejszy]] (''Sanguisorba minor'' Scop.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Sanguisorba minor kz03.jpg|Siewka krwiściąga mniejszego.
File:Sanguisorba minor 2022-03-29 5968.jpg|Siewka krwiściąga mniejszego.
Plik:Sanguisorba minor kz02.jpg|Siewki krwiściąga mniejszego.
File:Sanguisorba minor 2018-05-04 0810.jpg|Siewka krwiściąga mniejszego.
File:Sanguisorba minor 2022-03-24 5731.jpg|Siewka krwiściąga mniejszego.
File:Sanguisorba minor kz14.jpg|Siewka krwiściąga mniejszego.
File:Sanguisorba minor kz08.jpg|Siewka krwiściąga mniejszego.
File:Sanguisorba minor kz01.jpg|Siewka krwiściąga mniejszego.
File:Sanguisorba minor kz15.jpg|Młoda roślina krwiściąga mniejszego.
</gallery>
{{Commons ilustr kat|Sanguisorba minor (seedlings)|siewki krwiściąga mniejszego}}
==== [[w:Krwiściąg lekarski|Krwiściąg lekarski]] (''Sanguisorba officinalis'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Sanguisorba officinalis 2018-05-06 1659.jpg|Siewka krwiściąga lekarskiego.
File:Sanguisorba officinalis 2018-05-06 1657.jpg|Siewka krwiściąga lekarskiego.
File:Sanguisorba officinalis 2018-05-04 0745.jpg|Siewka krwiściąga lekarskiego.
File:Sanguisorba officinalis 2018-05-06 1656.jpg|Siewki krwiściąga lekarskiego.
</gallery>
{{Commons ilustr kat|Sanguisorba officinalis (seedlings)|siewki krwiściąga lekarskiego}}
=== Sybaldia (''Sibbaldia'') ===
==== [[w:Sybaldia rozesłana|Sybaldia rozesłana]] (''Sibbaldia procumbens'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== Tawlina (''Sorbaria'') ===
==== [[w:Tawlina jarzębolistna|Tawlina jarzębolistna]] (''Sorbaria sorbifolia'' (L.) A.Braun) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
=== Jarząb (''Sorbus'') ===
==== [[w:Jarząb mączny|Jarząb mączny]] (''Sorbus aria'' (L.) Crantz) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Jarząb pospolity|Jarząb pospolity]], jarzębina (''Sorbus aucuparia'' L. em. Hedl.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Sorbus aucuparia kz08.jpg|Siewka jarzębu pospolitego.
File:Sorbus aucuparia kz05.jpg|Siewka jarzębu pospolitego.
File:Sorbus aucuparia kz01.jpg|Siewka jarzębu pospolitego.
File:Sorbus aucuparia 2018-05-02 0204.jpg|Siewka jarzębu pospolitego.
File:Sorbus aucuparia 2017-10-17 7165.jpg|Siewka jarzębu pospolitego.
File:Sorbus aucuparia 2018-04-24 9265.jpg|Siewka jarzębu pospolitego.
File:Sorbus aucuparia 2018-04-17 9032.jpg|Siewka jarzębu pospolitego.
File:Sorbus aucuparia 2018-04-20 9129.jpg|Siewki jarzębu pospolitego.
</gallery>
{{Commons ilustr kat|Sorbus aucuparia (seedlings)|siewki jarzębu pospolitego}}
==== [[w:Jarząb karpacki|Jarząb karpacki]] (''Sorbus carpatica'' Borbás) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Jarząb nieszpułkowy|Jarząb nieszpułkowy]] (''Sorbus chamaemespilus'' (L.) Crantz) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Jarząb grecki|Jarząb grecki]] (''Sorbus graeca'' (Spach) Kotschy) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Jarząb szwedzki|Jarząb szwedzki]] (''Sorbus intermedia'' (Ehrh.) Pers.) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Sorbus intermedia 2018-05-02 0158.jpg|Siewka jarzębu szwedzkiego.
File:Sorbus intermedia 2018-05-06 1651.jpg|Siewka jarzębu szwedzkiego.
File:Sorbus intermedia 2018-05-01 9974.jpg|Siewka jarzębu szwedzkiego.
</gallery>
{{Commons ilustr kat|Borkhausenia intermedia (seedlings)|siewki jarzębu szwedzkiego}}
==== [[w:Jarząb sudecki|Jarząb sudecki]] (''Sorbus sudetica'' (Tausch.) Fritsch.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Jarząb brekinia|Jarząb brekinia]] (''Sorbus torminalis'' (L.) Crantz) ====
<!-- opis siewki za źródłem -->
<gallery>
File:Moixeres de pastor (Sorbus torminalis) i esparraguera (Asparagus officinalis) acabats de néixer - Santa Perpètua de Gaià (cropped).jpg|Siewka jarzębu brekinia.
</gallery>
{{Commons ilustr kat|Sorbus torminalis (seedlings)|siewki jarzębu brekinia}}
=== Tawuła (''Spiraea'') ===
==== [[w:Tawuła ożankolistna|Tawuła ożankolistna]] (''Spiraea chamaedryfolia'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Tawuła średnia|Tawuła średnia]] (''Spiraea media'' Schmidt) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
==== [[w:Tawuła wierzbolistna|Tawuła wierzbolistna]] (''Spiraea salicifolia'' L.) ====
<!-- opis siewki za źródłem -->
<gallery>
</gallery>
{{przypisy}}
{{Nawigacja|Siewki roślin flory Polski|[[Siewki roślin flory Polski/Krzyżownicowate|Krzyżownicowate]]|[[Siewki roślin flory Polski/Oliwnikowate|Oliwnikowate]]}}
kewncl7tt91c1p7hjkixr6cht5g07dw
Szablon:TOC/styles.css
10
33442
542743
542163
2026-05-13T06:23:06Z
Persino
2851
542743
sanitized-css
text/css
/*Style ramki ze spisem szablon [[Szablon:TOC/silnik]]*/
.toc_ogólnie_spis{
text-align:left;
}
.toc_ogólnie_spis ul{
list-style: none;
padding:0;
margin:0;
margin-left:0px;
margin-top:0px;
}
.toc_ogólnie_spis ul ul{
padding:0;
margin:0;
margin-left:0.625rem;
margin-top:0px;
}
.toc_ogólnie_spis ul li{
text-indent:0px;
padding:0;
margin:0;
margin-left:0px;
margin-top:0px;
}
/*Dodaję ze względu na nową skórkę Vector-2022*/
.tocnumber{
padding-left: 0;
padding-right: 0.5em;
color: #202122;
padding-left: 0;
padding-right: 0.5em;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
.tocnumber, .toctext {
display: table-cell;
text-decoration: inherit;
}
/* Style szablonu [[Szablon:TOC/silnik]] do generowania responsywnego dopasowania do okna ekranu*/
div.kontener_spis_treści{
height:auto;
width:auto;
display:inline-flex !important;
flex-direction:column;
box-sizing:border-box;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr:first-child > th{
width:100%;
padding:0.125rem;
box-sizing:border-box;
}
div.kontener_spis_treści > table.spis_treści{
height:100%;
width:auto;
display:flex !important;
flex-direction:column;
box-sizing:border-box;
margin:0;
min-height:1.425rem;
border-collapse: collapse;
border-spacing:0px;
border:0;
overflow:visible;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > th{
display:flex;
flex-direction:row;
justify-content:space-between;
align-items:normal;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > th{
display:flex;
flex-direction:row;
min-width:11.25rem;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > th > span,
div.kontener_spis_treści > table.spis_treści > tbody > tr > th > div:not(.tytuł_spisu_treści){
width:auto !important;
background-color: white;
order:2;
display:block;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > th > div.tytuł_spisu_treści{
width:100% !important;
order:1;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > th,
div.kontener_spis_treści > table.spis_treści > tbody > tr > td{
border: 1px #aaaaaa solid;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > th{
z-index:1;
white-space:nowrap;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > td{
border-top:0;
z-index:0;
}
div.kontener_spis_treści,
div.kontener_spis_treści > table.spis_treści,
div.kontener_spis_treści > table.spis_treści > tbody,
div.kontener_spis_treści > table.spis_treści > tbody > tr,
div.kontener_spis_treści > table.spis_treści > tbody > tr > td,
div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div,
div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div ul,
div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div li{
box-sizing:border-box;
}
div.kontener_spis_treści > table.spis_treści > tbody,
div.kontener_spis_treści > table.spis_treści > tbody > tr,
div.kontener_spis_treści > table.spis_treści > tbody > tr > td,
div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div{
display:flex;
flex-direction:column;
}
div.kontener_spis_treści,
div.kontener_spis_treści > table.spis_treści,
div.kontener_spis_treści > table.spis_treści > tbody,
div.kontener_spis_treści > table.spis_treści > tbody > tr:first-child > th,
div.kontener_spis_treści > table.spis_treści > tbody > tr:first-child{
min-height:1.425rem;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr:last-child{
height:100%;
min-height:0;
}
div.kontener_spis_treści > table.spis_treści > tbody,
div.kontener_spis_treści > table.spis_treści > tbody > tr > td,
div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div{
height:100%;
width:100%;
box-sizing:border-box;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr:last-child > td > div ul,
div.kontener_spis_treści > table.spis_treści > tbody > tr:last-child > td > div ul li{
display:block;
height:auto;
width:auto;
max-width:none;
max-height:none;
box-sizing:border-box;
overflow:visible;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div{
padding:0.1875rem 0.3125rem;
box-sizing:border-box;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div *{
word-wrap: break-word !important;
word-break: break-word !important;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div/*.mw-scrollbar-overflow-y*/{
height:100% !important;
max-height:100% !important;
/*width:100%;*/
max-width:25rem;
min-width:auto;
width:auto;
}
html.client-nojs div.kontener_spis_treści{
width:calc(15rem + 2 * 1px ) !important;
}
html.client-nojs div.kontener_spis_treści > table.spis_treści > tbody > tr > th > div,
html.client-nojs div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div{
max-width:100% !important;
min-width:auto !important;
width:100% !important;
}
html.client-nojs div.kontener_spis_treści > table.spis_treści > tbody > tr > td > div{
overflow:visible !important;
}
div.kontener_spis_treści > table.spis_treści a.zaznaczone,
div.pierwsza_strona_spis_treści > table.spis_treści a.zaznaczone,
div.strona_spisu_treści > .toc_wykaz a.zaznaczone{
color:black;
font-weight:bold;
}
p ~ div.kontener_spis_treści,
div.kontener_spis_treści:first-of-type{
margin-top:0 !important;
}
div.kontener_spis_treści > table.spis_treści.szerokość > tbody > tr:last-child > td > div{
max-width:100% !important;
}
div.kontener_spis_treści > table.spis_treści > tbody > tr:last-child > td > div a code{
color:unset;
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.kontener_spis_treści,
.opakowanie_kontenera_spis_treści{
margin:0 !important;
margin-bottom:0.3125rem !important;
padding:0 !important;
max-width:none !important;
}
.opakowanie_kontenera_spis_treści .kontener_spis_treści{
margin-bottom:0 !important;
}
.opakowanie_kontenera_spis_treści{
float:none !important;
clear:none !important;
}
.opakowanie_kontenera_spis_treści,
.kontener_spis_treści,
.kontener_spis_treści > table,
.kontener_spis_treści > table tbody,
.kontener_spis_treści > table tr,
.kontener_spis_treści > table td,
.kontener_spis_treści > table th{
display:block;
width:100% !important;
}
.kontener_spis_treści > table .toc_ogólnie_spis{
width:100% !important;
max-width:none !important;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
i2fn9xtv1r21pz4w652n3j4s21e2c55
Szablon:Tt
10
33805
542739
500502
2026-05-12T19:24:38Z
Persino
2851
542739
wikitext
text/x-wiki
<includeonly>{{Znacznik|tag=span|id={{{id|}}}|styl=font-family:monospace;font-size:110%;{{{styl|}}}|klasa={{{klasa|}}}|atrybuty={{{atrybuty|}}}|{{{1}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
145unhvl46cd1h82vemrwtcwtx4e28q
Moduł:StronicowyParser/Rozdziały
828
58234
542703
542702
2026-05-12T12:11:53Z
Persino
2851
542703
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 class=\"mw-hnumber mw-hnumber-"+poziom+"\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawrtosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.*)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=mw.ustring.match(wiersz,"^(=+[^=]*[.=]*[^=]*=+)%s*$");
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local iter_h=mw.ustring.gmatch(tekst,"(<[Hh]%d+[^<>]*>.*</[Hh]%d+>)");
local techniczne_modul=require("Module:techniczne");
for wiersz_h in iter_h do
local wiersz_h_start=wiersz_h;
wiersz_h=mw.ustring.gsub(wiersz_h,"\n"," ");
wiersz_h="\n"..wiersz_h.."\n";
wiersz_h_start=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wiersz_h_start);
wiersz_h=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wiersz_h);
tekst=mw.ustring.gsub(tekst,wiersz_h_start,wiersz_h);
end;
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]*'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]*'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
return zawartosc or "",nil,true;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
mi25b5rofvuraknwfroykfesov67hyt
542704
542703
2026-05-12T14:18:02Z
Persino
2851
542704
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawrtosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.*)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=mw.ustring.match(wiersz,"^(=+[^=]*[.=]*[^=]*=+)%s*$");
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local iter_h=mw.ustring.gmatch(tekst,"(<[Hh]%d+[^<>]*>.*</[Hh]%d+>)");
local techniczne_modul=require("Module:techniczne");
for wiersz_h in iter_h do
local wiersz_h_start=wiersz_h;
wiersz_h=mw.ustring.gsub(wiersz_h,"\n"," ");
wiersz_h="\n"..wiersz_h.."\n";
wiersz_h_start=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wiersz_h_start);
wiersz_h=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wiersz_h);
tekst=mw.ustring.gsub(tekst,wiersz_h_start,wiersz_h);
end;
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]*'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]*'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
return zawartosc or "",nil,true;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
g7az716ev5akk7mjp1urw783l53yrmy
542750
542704
2026-05-13T07:10:43Z
Persino
2851
542750
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.*)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=mw.ustring.match(wiersz,"^(=+[^=]*[.=]*[^=]*=+)%s*$");
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local iter_h=mw.ustring.gmatch(tekst,"(<[Hh]%d+[^<>]*>.*</[Hh]%d+>)");
local techniczne_modul=require("Module:techniczne");
for wiersz_h in iter_h do
local wiersz_h_start=wiersz_h;
wiersz_h=mw.ustring.gsub(wiersz_h,"\n"," ");
wiersz_h="\n"..wiersz_h.."\n";
wiersz_h_start=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wiersz_h_start);
wiersz_h=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wiersz_h);
tekst=mw.ustring.gsub(tekst,wiersz_h_start,wiersz_h);
end;
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]*'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]*'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
return zawartosc or "",nil,true;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
nx8gbo819xv797suzefaxtlf9v8l0pv
542760
542750
2026-05-13T08:14:14Z
Persino
2851
542760
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.*)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local iter_h=mw.ustring.gmatch(tekst,"(<[Hh]%d+[^<>]*>.*</[Hh]%d+>)");
local techniczne_modul=require("Module:techniczne");
for wiersz_h in iter_h do
local wiersz_h_start=wiersz_h;
wiersz_h=mw.ustring.gsub(wiersz_h,"\n"," ");
wiersz_h="\n"..wiersz_h.."\n";
wiersz_h_start=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wiersz_h_start);
wiersz_h=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wiersz_h);
tekst=mw.ustring.gsub(tekst,wiersz_h_start,wiersz_h);
end;
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]*'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]*'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
return zawartosc or "",nil,true;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
bby62nfosp34ibd36mpek39unms1a7g
542763
542760
2026-05-13T08:31:09Z
Persino
2851
542763
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.*)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local iter_h=mw.ustring.gmatch(tekst,"(<[Hh]%d+[^<>]*>.-</[Hh]%d+>)");
local techniczne_modul=require("Module:techniczne");
for wiersz_h in iter_h do
local wiersz_h_start=wiersz_h;
wiersz_h=mw.ustring.gsub(wiersz_h,"\n"," ");
wiersz_h="\n"..wiersz_h.."\n";
wiersz_h_start=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wiersz_h_start);
wiersz_h=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wiersz_h);
tekst=mw.ustring.gsub(tekst,wiersz_h_start,wiersz_h);
end;
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]*'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]*'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
return zawartosc or "",nil,true;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
ei2l2fvjhd2vcp8aqljxmhe8p6ivnap
542774
542763
2026-05-13T11:30:20Z
Persino
2851
542774
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.*)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local iter_h=mw.ustring.gmatch(tekst,"(<[Hh]%d+[^<>]*>.-</[Hh]%d+>)");
local techniczne_modul=require("Module:techniczne");
for wiersz_h in iter_h do
local wiersz_h_start=wiersz_h;
wiersz_h=mw.ustring.gsub(wiersz_h,"\n"," ");
wiersz_h="\n"..wiersz_h.."\n";
wiersz_h_start=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wiersz_h_start);
wiersz_h=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wiersz_h);
tekst=mw.ustring.gsub(tekst,wiersz_h_start,wiersz_h);
end;
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]*'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]*'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
return zawartosc or "",nil,true;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
evnnv70tmieiazlj5o88n8kgabtglmt
Szablon:StronaStart/stronastart.css
10
58549
542732
538720
2026-05-12T18:54:32Z
Persino
2851
542732
sanitized-css
text/css
body.skin--responsive .strona_start{
font-size:1rem;
line-height:1.4;
}
body:not(.skin--responsive) .strona_start{
font-size:16px;
line-height:1.4;
}
.strona_prawa .spis{
display:flex;
flex-direction:column;
width:100%;
}
.strona_prawa .spis > div,
.strona_prawa .spis > div > div{
height:auto;
max-height:100%;
}
.strona_prawa .spis > div,
.strona_prawa .spis > div > div{
height:auto;
max-height:100%;
width:auto;
display:flex !important;
flex-direction:column;
box-sizing:border-box;
}
.strona_prawa .spis .style_strony_bocznego_menu,
.strona_prawa .spis .style_strony_TOC{
overflow:auto;
}
@media all and (max-width:745px){
.strona_prawa .spis > div,
.strona_prawa .spis > div > div{
width:100% !important;
}
}
.strona_prawa .mw-sticky-y.spis:not(:hover){
transform: scale(0.3,0.3) translate(-116.5%,-116.5%);
/**/
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay:4s;
}
.strona_prawa .mw-sticky-y.spis:hover{
max-width:43.75rem !important;
transform: scale(1,1) translate(0,0);
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay: 0s;
}
.strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{
padding-right:0.3125rem;
}
.strona_prawa .pierwsza_strona .wikitable{
margin-top:0.3125rem;
margin-bottom:0.3125rem;
}
.strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{
height: 1px;
background-color: var(--border-color-base,#a2a9b1);
border: 0;
margin: 0.2em 0;
}
.strona_start.tło_strona_start,
.strona_start .tło_strona_nadrzędna,
.strona_start .tło_główna_strona,
.strona_start .tło_strona_środkowa,
.strona_start .tło_strona,
.strona_start .tło_ciało_kontener,
.strona_start .tło_ciało_strona{
background-color:white;
background-image: none;
}
.strona_prawa .nawigacja_boksy > .mw-optimal-x > div{
margin-top:0 !important;
margin-bottom:0.3125rem !important;
margin-left:0.3125rem !important;
margin-right:0 !important;
}
.strona_lewa .nawigacja_boksy > .mw-optimal-x > div{
margin-top:0 !important;
margin-bottom:0.3125rem !important;
margin-right:0.3125rem !important;
margin-left:0 !important;
}
.strona_prawa .mw-optimal-x:hover,
.strona_lewa .mw-optimal-x:hover{
transform: scale(1,1) translate(0,0);
max-width:none !important;
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay: 0s;
}
.strona_prawa .mw-optimal-x:not(:hover){
transform: scale(0.3,0.3) translate(116.5%,-116.5%);
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay:4s;
}
.strona_lewa .mw-optimal-x:not(:hover){
transform: scale(0.3,0.3) translate(-116.5%,-116.5%);
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay:4s;
}
html.client-nojs .strona_prawa,
html.client-nojs .strona_lewa{
overflow-x:auto !important;
overflow-y:hidden !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis{
visibility:visible !important;
position:relative !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{
width: 100% !important;
max-width:calc( 100% - 0.3125rem ) !important;
height:auto !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){
width:100% !important;
max-width:calc( 100% - 0.3125rem ) !important;
height:auto !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC,
html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{
overflow:auto;
padding-bottom:0.3125rem;
}
.strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści,
.strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{
flex:0 0 auto;
}
html.client-nojs .strona_prawa .nawigacja_boksy,
html.client-nojs .strona_lewa .nawigacja_boksy{
margin-top:0.3125rem !important;
visibility:visible !important;
}
html.client-nojs .strona_prawa .mw-optimal-x:not(:hover),
html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-optimal-x:hover,
html.client-nojs .strona_lewa .mw-optimal-x:hover{
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-optimal-x,
html.client-nojs .strona_lewa .mw-optimal-x{
overflow:auto !important;
visibility:visible !important;
position:relative !important;
z-index:1 !important;
direction: rtl;
width: auto !important;
}
html.client-nojs .strona_prawa .mw-optimal-x:not(:hover),
html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){
width: auto !important;
max-width: calc( 100% - 0.3125rem ) !important;
height: auto !important;
}
html.client-nojs .strona_prawa .mw-optimal-x:hover,
html.client-nojs .strona_lewa .mw-optimal-x:hover{
z-index:3 !important;
width:100% !important;
max-width:calc( 100% - 0.3125rem ) !important;
}
body.skin-minerva .strona_start{
margin-top:0.25rem !important;
}
.strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover),
.strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){
overflow:auto;
}
.strona_prawa .mw-optimal-x,
.strona_lewa .mw-optimal-x{
display:flex;
flex-direction:column;
}
.strona_lewa .mw-optimal-x > div,
.strona_prawa .mw-optimal-x > div{
flex:0 0 auto;
}
.strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{
background-color:blue !important;
color:white !important;
}
.strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{
background-color:grey !important;
color:white !important;
}
.strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){
background-color:white !important;
color:black !important;
}
/**/
.strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{
margin-bottom:0 !important;
padding-bottom:0 !important;
}
.strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child,
.strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{
margin-bottom:0 !important;
padding-bottom:0 !important;
}
.strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona,
.strona > div:not(:only-child) > .ciało_kontener > .ciało_strona,
.strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{
padding-bottom:0 !important;
}
.strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){
margin-top:0.625rem;
}
.strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){
margin-top:initial;
}
.strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{
margin-bottom:0.625rem;
}
.strona > *:not(:first-child),
.strona > div > *:not(:first-child){
margin-left:0.5rem;
margin-right:0.5rem;
}
.strona > *:nth-child(2),
.strona > div > *:nth-child(2){
margin-top:0.25rem;
margin-bottom:0.125rem;
}
.strona > *:not(:nth-child(2)):not(:first-child),
.strona > div > *:not(:nth-child(2)):not(:first-child){
margin-top:0.125rem;
margin-bottom:0.125rem;
}
.strona > *:last-child:not(:first-child),
.strona > div > *:last-child:not(:first-child){
margin-top:0.125rem;
margin-bottom:0.5rem;
}
/**/
.strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{
text-align:left;
}
.strona > div > .ciało_kontener > .ciało_strona > p:first-child{
margin-top:0;
}
.strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{
margin-bottom:0;
}
.strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{
margin-top:0.5rem !important;
}
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p,
.strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p,
.strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{
margin-top:0;
}
@media print{
.noprint{
display:none;
}
.print{
display:block;
}
}
.gallerytext, .plainlinks{
text-align:left;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ul,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ol,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ul,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ol{
margin-top:-0.2rem;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{
font-size: inherit;
line-height: 1.25em;
}
.strona > div > .ciało_kontener.mw-scrollbar-overflow-x{
padding-bottom:0.3125rem;
}
.strona > div > .ciało_kontener.mw-scrollbar-overflow-y{
padding-right:0.3125rem;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ul,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ul,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ol,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ol{
list-style-position:inside;
margin-left:0;
margin-inline-start:0;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{
display:flex;
flex-direction:column;
max-width:100%;
overflow-x:auto;
overflow-y:hidden;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{
display:block;
width:auto !important;
min-width:100%;
text-align:left;
word-wrap:break-word;
word-break:break-all;
hyphens:none;
box-sizing:border-box;
white-space:pre-wrap;
flex-shrink:0;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona a code,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona a code{
color:unset;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code{
display:inline;
font-size:inherit;
line-height:1.56;
word-wrap:break-word;
word-break:break-word;
}
@media all{
:not(style):not(link) ~ .strona_start{
margin-top:0.3125rem !important;
}
.strona_start p{
margin: 0.4em 0 0.5em 0;
}
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{
margin-top:0 !important;
margin-bottom:0.3125rem !important;
}
.strona_start.niekolumnowy > div.mójNagłówek > div:last-child,
.strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{
margin-bottom:0 !important;
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne{
max-width:100vw !important;
min-width:auto !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne div > .ciało_kontener > *{
min-width:100% !important;
max-width:100% !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne .strona{
overflow:hidden !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{
margin-bottom:0 !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2),
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{
max-width:none !important;
width:100% !important;
margin-left:0 !important;
margin-right:0 !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{
font-size:0.80rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{
flex-wrap: wrap;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{
position:static !important;
margin-left:0 !important;
margin-right:0 !important;
margin-top:0 !important;
margin-bottom:0 !important;
transition:none !important;
transform:none !important;
visibility:visible !important;
min-width:auto !important;
max-width:100vw !important;
width:100% !important;
box-sizing:border-box !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{
transition:none !important;
transform:none !important;
position:static !important;
margin-left:0 !important;
float:none !important;
clear:none !important;
max-width:100% !important;
width:100% !important;
box-sizing:border-box;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{
width:100% !important;
box-sizing:border-box;
margin: 0 !important;
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{
font-size:0.80rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{
order:1 !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{
order:2 !important;
display:flex;
flex-direction:column;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{
color: #3366cc !important;
font-weight: normal !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{
order:3 !important;
width:100%;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{
order:1;
height:auto !important;
max-height:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{
order:2;
height:100% !important;
max-height:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{
width:100% !important;
box-sizing:border-box !important;
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{
max-height:100% !important;
overflow:visible !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{
overflow:visible !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{
min-width:auto !important;
max-width:100vw !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{
display:none !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{
margin-top:0 !important;
margin-bottom:0 !important;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{
display:block;
text-align:left;
}
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{
display:inline;
}
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{
display:inline-flex;
margin-left:1em;
font-size:small;
margin-right:0;
vertical-align:middle;
}
body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection,
body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{
margin-left:0.3em;
}
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{
margin-top: 0;
margin-bottom: auto;
}
}
@media all{
.strona_start.niekolumnowy > .mójNagłówek,
.strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział,
.strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek,
.strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{
margin-top:0 !important;
}
.strona_start.niekolumnowy > .mójNagłówek,
.strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *,
.strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek,
.strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{
margin-top:0 !important;
margin-bottom:0.25rem !important;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
figure[typeof~="mw:File"].mw-halign-left{
float:left !important;
margin:4px 4px 4px 0 !important;
}
figure[typeof~="mw:File"].mw-halign-right{
float:right !important;
margin:4px 0 4px 4px !important;
}
figure[typeof~="mw:File"].mw-halign-center{
margin:0 auto !important;
}
figure[typeof~="mw:File"]{
display:block;
max-width:100%;
overflow:auto;
}
span[typeof~="mw:File"].mw-default-size{
display:inline-block;
overflow:auto;
max-width:100%;
}
div.tright{
float:right;
margin:0 0 1em 1em;
}
div.tleft{
float:left;
margin:0 1em 1em 0;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px){
div.tright, div.tleft{
margin: 0 auto !important;
float:none !important;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.strona_start.niekolumnowy.mobilne > .strona{
max-width:100vw !important;
min-width:auto !important;
width:100% !important;
overflow:auto !important;
}
.strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{
min-width:auto !important;
max-width:100% !important;
width:100% !important;
box-sizing:border-box;
}
}
/*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/
h87c2zvpuwe4ahxk1h05yl4xsm9n6iq
Moduł:Szablonowe
828
58954
542775
542688
2026-05-13T11:40:46Z
Persino
2851
542775
Scribunto
text/plain
local p={};
--zamykanie
local znak_127=mw.loadData("Module:Html/dane").znak_127;
function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu)
local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127;
return wzor;
end;
function p.NormaKoduKodowaniaTekstu(kod,numer)
local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu)
local wzor=znak_127.."�*39;"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"�*39;"..znak_127;
return wzor;
end;
function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer)
local wzor=znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..znak_127;
return wzor;
end;
function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu)
local wzor=znak_127.."'"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'"..znak_127;
return wzor;
end;
function p.NormaKoduZakodowanegoWikiTekstu(kod,numer)
local wikikodnumer=znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu)
local wzor="%%7F'"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'%%7F";
return wzor;
end;
function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer)
local wikikodnumer="%7F'"`UNIQ--"..kod.."-"..numer.."-QINU`"'%7F";
return wikikodnumer;
end;
function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY)
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY);
end;
function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu)
local licznik=0;
local tablica_analizy_obiektow_strony_dany_modul={};
tablica_analizy_obiektow_strony_dany_modul["MATH"]={};
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon)
licznik=licznik+1;
tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon;
return p.NormaKoduKodowaniaTekstu("MATH",licznik);
end)
return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul;
end;
function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local parametry_modul=require("Module:Parametry");
local function NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt)
local __max=0;
for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do
if(parametry_modul.TypeNumber(numer))then
__max=math.max(__max,numer);
end;
end;
return __max+1;
end;
local numer_szablonu={};
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
numer_szablonu[obiekt]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
numer_szablonu[obiekt]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
return numer_szablonu;
end;
function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu()
local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji;
return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji;
end;
function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun)
local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do
for kod,wartosc in pairs(tab_obiekt)do
local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica();
local tab_wartosc=tablica[kod];
if(tab_wartosc)then
if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then
if(tab_wartosc[2])then
for obiekt_tab,tab_kod in pairs(tab_analiza)do
if(obiekt_tab==obiekt)then
for _,liczba in ipairs(tab_kod)do
local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba];
if(tab_liczba)then
tab_liczba[kod]=nil;
tab_wartosc[2]=false;
end;
end;
end;
end;
end;
else
tablica[kod]=nil;
end;
end;
end;
end;
end;
function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local czy_jedno=false;
----
local parametry_modul=require("Module:Parametry");
----
local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare)
local iter=true;local iter_fun;
if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then
iter_fun=function()
local iter=function()
return nil;
end;
return iter;
end;
else
iter_fun=function()
if((not obiekt)and(not kod))then
local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu());
return iter;
else
local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil;
local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu;
if((not szablon)or(szablon==""))then
local iter=function()
return nil;
end;
return iter;
else
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
return iter;
end;
end;
end;
end;
local tak=nil;
local iter2=nil;
poziom_iteracji=poziom_iteracji or 0;
local function Iterator()
local function IterMain()
local obiekt,kod;
----
repeat
if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end;
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon);
if(__FUNKCJA2)then
repeat
local czy_dalej=nil;
local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
if(not jest_naglowek)then
--if(poziom_iteracji>0)then
-- return nil;
--else
repeat
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_dalej=true;
--end;
end;
until (not czy_dalej);
end;
----
tak=true;
if(__FUNKCJA)then
local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu);
if(not wynik)then
czy_jedno=true;
return nil;
else
szablon=wynik;
if(tekst)then
tekst_rozwiniety_calego_artykulu=tekst;
end;
end;
end;
iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE"));
return szablon,obiekt,kod,poziom_iteracji;
end;
if(not tak)then
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
local szablon,obiekt,kod,poziom_iteracji=iter2();
if(czy_jedno)then return nil;end;
if((not szablon)or(not kod)or(not obiekt))then
tak=nil;
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
return szablon,obiekt,kod,poziom_iteracji;
end;
end;
end;
return Iterator;
end;
return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10)
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local tab_usun={};
local szablon2=nil;
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji)
local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end;
local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod]));
local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
or (tak and __SZABLON(obiekt,kod) or szablon2);
return szablon;
end);
local poziom_iteracji_poprz=-1;
local tab_dane=nil;
for szablon,obiekt,kod,poziom_iteracji in iterator do
if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end;
szablon2=nil;local wynik;
if(__funkcja1)then
local analiza;
szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
if((analiza)and(__funkcja7))then
local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2);
if(czy_szablon_funkcyjny)then szablon2=szablon2();end;
----
local funkcja_temp;local tak_specjalne=false;
if(tab_dane)then
----
local tak=true;
local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]));
if(not tak)then
local Typ=function()
return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
if(not funkcja_temp)then funkcja_temp=Typ;end;
local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8);
if(czy_funkcja_jako_funkcja8
and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
)then
tak_specjalne=true;
end;
break;
end;
end;
end;
end;
if(tak_specjalne)then wynik=true;end;
if(funkcja_temp)then funkcja_temp();end;
else
local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2);
if(czy_szablon_funkcyjny)then szablon2=szablon2();end;
end;
end;
if(not wynik)then
szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon);
if((not tab_dane)or(#tab_dane==0))then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local tak=true;local tab_wolne;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])));
if(not tak)then
tab_wolne=tab_pos;
break;
end;
end;
end;
if(tak)then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3];
local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp];
tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst;
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
end;
end;
-- parametry kodow
local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil;
-- bazowanie kodow
local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil;
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
-- funkcje koncowe
local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil;
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
end;
if(not tab_dane)then tab_dane={};end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_dane);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_dane);
end;
table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji});
if(__funkcja2)then
local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
end;
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6)
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={};
for szablon,obiekt,kod,poziom_iteracji in iterator do
local function ZamienianieKodowe(szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul);
if(kod_kodowy_wynik)then
local function ModyfikacjaBazyKodowoSzablonowa()
if(dziecko_zmodyfikowane)then
if((obiekt_zmodyfikowany)and(kod_zmodyfikowany))then
if((obiekt_zmodyfikowany~=obiekt)or(kod_zmodyfikowany~=kod))then
if(not tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany])then
tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany]={};
end;
tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany][kod_zmodyfikowany]=dziecko_zmodyfikowane;
local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany) or nil;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod) or nil;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod) or nil;
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod) or nil;
end;
end;
end;
if(poziom_iteracji>0)then
if(not szablon_rodzica_zmodyfikowany)then
if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then
local ile;
local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica];
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica;
local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica) or nil;
ModyfikacjaBazyKodowoSzablonowa();
end;
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica_zmodyfikowany;
local fun6=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,obiekt_rodzica,kod_rodzica) or nil;
ModyfikacjaBazyKodowoSzablonowa();
end;
else
if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then
local ile;
tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
ModyfikacjaBazyKodowoSzablonowa();
end;
end;
end;
elseif(szablon_rodzica_zmodyfikowany)then
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica_zmodyfikowany;
local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,obiekt_rodzica,kod_rodzica) or nil;
end;
end;
if(poziom_iteracji==0)then
ZamienianieKodowe(nil,nil,nil,nil);
else
for i=#tab_poziom_obiekt,1,-1 do
local tab=tab_poziom_obiekt[i];
local poziom_iteracji_rodzica=tab[4];
if(poziom_iteracji_rodzica<poziom_iteracji)then
local szablon_rodzica=tab[1];
local obiekt_rodzica=tab[2];
local kod_rodzica=tab[3];
ZamienianieKodowe(szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica);
break;
end;
end;
end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,});
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5)
local tablica_szablonow_z_naglowkami=nil;
local tab_sam;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(poziom_iteracji==0)then
tablica_szablonow_z_naglowkami=nil;
tab_sam=nil;
else
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
end;
----
local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(wynik)then
if(sam_obiekt and sam_kod)then
return false;
end;
end
local czy_nie_wyzej_sam=false;
local czy_nie_wyzej_poziom=nil;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod)
if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then
return "";
end;
end);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={}
if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end;
for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do
local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then
if(poziom_iteracji_poprz>poziom_iteracji2)then
for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji2)then
elseif(poziom_iteracji_poprz==poziom_iteracji2)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{obiekt2,kod2});
poziom_iteracji_poprz=poziom_iteracji2;
czy_nie_wyzej_sam=false;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=false;
end;
else
for _,tab in ipairs(tab_poziom_obiekt)do
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end;
tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true;
end;
if(sam_obiekt and sam_kod)then
if(not tab_sam)then tab_sam={};end;
if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end;
tab_sam[sam_obiekt][sam_kod]=true;
czy_nie_wyzej_sam=true;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=false;
end;
else
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end;
tablica_szablonow_z_naglowkami[obiekt2][kod2]=true;
czy_nie_wyzej_sam=false;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=true;
end;
end;
---poziom_iteracji_poprz=poziom_iteracji2;
end;
end;
if(wynik)then return true;end;
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
return nil;
end,__funkcja4,__funkcja5);
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3)
local tablica_szablonow_z_naglowkami=nil;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then return nil;end;
return true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
if(obiekt=="SZABLON")then
return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end;
if(__FUNKCJA)then
local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then return;end;
end;
local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(__FUNKCJA2)then
local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return;
end;
end;
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
local tekst;
if((not czy_niekodowane)and(__FUNKCJA3))then
tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(not tekst)then
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end;
else
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end;
if(not tekst)then return;end;
if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end;
local html_modul=require("Module:Html");
tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst)
if(czy_nie_brak_parametrow)then
if(obiekt=="ZMIENNA")then
local zmienna;local wartosc_domyslna;
zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$");
if(not zmienna)then
zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$");
end;
zmienna=mw.text.trim(zmienna);
local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna];
if(not wartosc_zmiennej)then
if(wartosc_domyslna)then return wartosc_domyslna;end;
local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon);
return szablon;
end;
return wartosc_zmiennej;
end;
end;
end,
function()
return numer_szablonu;
end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
return tekst;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow)
return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
end,
function(nazwa_szablonu,tabela_modyfikatorow,rezultat)
return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end,false);
end;
end;
function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu)
local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self);
tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {};
local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow;
----
tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {};
local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu];
return tablica_danych_parametrow_szablonu_strony;
end;
function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if(not tablica_analizy_obiektow_strony_dany_modul)then
if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end;
if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end;
---
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca];
end;
---
local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca);
return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
end;
function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
---
return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
return tekst_rozwiniety_calego_artykulu;
end;
function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(obiekt=="SZABLON")then
local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
----
local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
if(wynik)then return wynik;end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2)
local html_modul=require("Module:Html");
nazwa=html_modul.DecodeHtml(nazwa,true);
local rezultat=nil;
if(__FUNKCJA)then
local nazwa_rozwinieta;
nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa);
nazwa=nazwa_rozwinieta or nazwa;
end;
local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa);
nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa;
if(not tabela_modyfikatorow)then
nazwa=html_modul.EncodeId(nazwa);
return nazwa;
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
if(nazwa_przestrzeni)then
if(nazwa_przestrzeni=="")then
if(tabela_modyfikatorow["#invoke:"])then
nazwa="Module:"..nazwa;
elseif(tabela_modyfikatorow["int:"])then
nazwa="MediaWiki:"..nazwa;
end;
else
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then
nazwa="Module:"..nazwa;
elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then
nazwa="MediaWiki:"..nazwa;
end;
end;
end;
nazwa=html_modul.EncodeId(nazwa);
return nazwa,tabela_modyfikatorow;
end;
p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony;
end;
end;
end;
if(not czy_szablon)then return;end;
local nazwy_modul=require("Module:Nazwy");
local parametry_modul=require("Module:Parametry");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw);
local nazwa_szablonu;
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]");
if((czy_nie_dwukropek)or(czy_szablon==""))then
local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",};
nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon;
else
nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw);
end;
elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then
nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw);
else
nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu;
end;
return nazwa_szablonu;
end;
p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony;
end;
end;
end;
local parametry_modul=require("Module:Parametry");
----
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa");
----
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw);
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]");
if(czy_nie_dwukropek)then
local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",};
pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu);
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw);
end;
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu;
end;
return pelna_nazwa_szablonu;
end;
p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu)
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw);
local klucz_przestrzeni_niekanoniczna;
local wiki_modul=require("Module:Wiki");
local czy_biezaca;
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
if(czy_biezaca)then
klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,};
else
klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,};
end;
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
else
pelna_nazwa_szablonu=nazwa_szablonu;
end;
local tabela_nazw={};
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw);
return pelna_nazwa_szablonu;
end;
p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami;
end;
end;
end;
local czy_z_parametrami;
local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$");
if(not czy_szablon or not zawartosc)then
czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$");
if(not czy_szablon)then return;end;
czy_z_parametrami=false;
else
czy_z_parametrami=true;
end;
--czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon;
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2);
local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow;
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami;
end;
return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami;
end;
function p.TablicaTransportuSzablonowe(self)
return self;
end;
local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane)
local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania.."\n","^([^|=]-)$");
if(kawalek_wywolania_element_nienazwany)then
tworzona_tabela[#tworzona_tabela+1]=((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany);
return tworzona_tabela;
else
local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$");
if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then
if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then
tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
else
tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
end;
else
return nil;
end;
end;
return nil;
end;
local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane)
local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$");
if(not kawalek_wywolania)then
kawalek_wywolania=parametry_wywolania_szablonu;
end;
if(not dalszy_kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane);
return parametry_szablonu;
end;
if(kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane);
return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane);
end;
return nil;
end;
p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
local nazwa_parsowania=nil;local modyfikatory_parsowania=nil;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then
if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
end;
end;
end;
----
local function NazwaSzablonu(nazwa_szablonu)
if((not nazwa_parsowania)or(not modyfikatory_parsowania))then
local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2);
nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna);
return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna;
else
return nazwa_parsowania,modyfikatory_parsowania;
end;
end;
local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$");
if(not wywolanie_bez_parametrow)then
local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$");
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$");
local tabela_parametrow_szablonu={};
tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
else
local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$"));
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
local tabela_parametrow_szablonu={};
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
end;
end;
function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy)
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory;
local modyfikatory="";
local tab_mod=nil;
if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then
return pole_nazwy,modyfikatory,tab_mod;
end;
----
local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe;
----
local function PojedynczeModyfikatory(pole,modyfikatory)
for modyfikator,tab in pairs(tab_modyfikatory) do
local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$");
if(modyfikator_uzyty)then
if(not tab_mod)then tab_mod={};end;
if(not tab_mod[modyfikator])then
tab_mod[modyfikator]=true;
end;
modyfikatory=modyfikatory..modyfikator_uzyty;
return PojedynczeModyfikatory(pole_dalej,modyfikatory)
end;
end;
return pole,modyfikatory;
end;
local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory);
return pole_ostateczne,modyfikatory_ostateczne,tab_mod;
end;
function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#switch:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#tag:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon;
end;
end;
end;
local function RozpatrywanieSzablonowe()
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["int:"])
or(tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#tag:"])
or(tabela_modyfikatorow["#switch:"])
or(tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["gender:"])
or (tabela_modyfikatorow["ucfirst:"])
or (tabela_modyfikatorow["lcfirst:"])
or (tabela_modyfikatorow["uc:"])
or (tabela_modyfikatorow["lc:"])
)then
return false;
end;
end;
if((nazwa_szablonu)and(nazwa_szablonu~=""))then
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end;
if(tabela_parametrow_szablonu)then
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
if(czy_nie_brak_parametrow)then return true;end;
end;
return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false);
end;
return true;
end;
local wynik=RozpatrywanieSzablonowe();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik;
end;
return wynik;
end;
function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane)
local parametry_modul=require("Module:Parametry");
local tablica_obiektow_strony_danych_kodow_specjalnych_modul={};
local tab_grupa={};
local math_numer=0;local licznik_linkz=1;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
if(nazwa_szablonu=="R")then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif(nazwa_szablonu=="U")then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif(nazwa_szablonu=="Ref")then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
elseif(obiekt=="MATH")then
math_numer=math_numer+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer);
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
return szablon;
end);
return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul;
end;
function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE)
local parametry_modul=require("Module:parametry");
local tab_grupa={};local licznik_linkz=1;
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="R")then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..tab_grupa[grupa].."]"
elseif(nazwa_szablonu=="U")then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..grupa.." "..tab_grupa[grupa].."]";
elseif(nazwa_szablonu=="Ref")then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
if(__FUNKCJA_INNE_OPERACJE2)then
return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
return szablon;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw)
local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$")
if((adres)and(nazwa))then return adres,nazwa;end;
local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$");
if(adres)then return adres;end;
return nil;
end;
function p.WalidacjaLinkuProjektowego(linkw)
local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw);
if(not adres)then return nil;end;
local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$");
if(spacje_adresu)then return nil;end;
local adres_w_linii=mw.ustring.match(adres,"\n");
if(adres_w_linii)then return nil;end;
local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$");
if(walidacja_adresu)then return nil;end;
if(not nazwa)then return adres,nazwa;end;
local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]");
if(walidacja_nazwy)then return nil;end;
return adres,nazwa;
end;
function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz)
local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$")
if((adres)and(nazwa))then return adres,nazwa;end;
local adres=mw.ustring.match(linkz,"^%[(.-)%]");
return adres;
end;
function p.WalidacjaLinkuNieProjektowego(linkz)
local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz);
if(not adres)then return nil;end;
local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$");
if(spacje_adresu)then return nil;end;
local adres_w_linii=mw.ustring.match(adres,"\n");
if(adres_w_linii)then return nil;end;
local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$");
if(walidacja_adresu)then return nil;end;
if(not nazwa)then return adres,nazwa;end;
local nazwa_w_linii=mw.ustring.match(nazwa,"\n");
if(nazwa_w_linii)then return nil;end;
local walidacja_nazwy=mw.ustring.match(nazwa,"%]");
if(walidacja_nazwy)then return nil;end;
return adres,nazwa;
end;
function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul)
local tablica_kodow={};local tak=false;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki;
for szablon,obiekt,kod in iterator do
if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
for obiekt,kod in iter do
if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end;
tablica_kodow[obiekt][kod]=true;
tak=true;
end;
end;
end;
--if(not tak)then return tekst_rozwiniety_calego_artykulu;end;
local strony_modul=require("Module:Strony");
local specjalne_modul=require("Module:Specjalne");
--local frame=mw.getCurrentFrame();
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2)
if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then
if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then
szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
return szablon2;
end;
elseif(obiekt2=="LINKW")then
if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end;
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete);
if(czy_nie_linkw)then
return szablon2;
end;
end;
elseif(obiekt2=="LINKZ")then
if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end;
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete);
if(adres)then
local czy_linkz=strony_modul.SprawdzanieURL(adres);
if(not czy_linkz)then return szablon2;end;
else
return szablon2;
end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
p["PokazanieWywołaniaSzablonu"]=function(szablon, args)
local result = {};
table.insert(result, mw.text.nowiki("{{"));
if mw.isSubsting() then
table.insert(result, "subst:");
end;
table.insert(result, szablon);
if args then
for k, v in pairs(args) do
if (type(k)~="number")then
table.insert(result, "|");
table.insert(result, tostring(k));
table.insert(result, "=");
table.insert(result, mw.text.nowiki(v));
else
table.insert(result, "|");
table.insert(result, mw.text.nowiki(v));
end;
end;
end;
table.insert(result, mw.text.nowiki("}}"));
return table.concat(result);
end;
function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony)
local result={};
table.insert(result,((jako_szablony) and "{{((}}" or "{{"));
for name,_ in pairs(modyfikatory or {})do
table.insert(result,name);
end;
table.insert(result,nazwa);
for name,value in pairs(args or {})do
table.insert(result,((jako_szablony) and "{{!}}" or "|"));
table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value);
end;
table.insert(result,((jako_szablony) and "{{))}}" or "}}"));
return table.concat(result,"");
end;
function p.NazwaSzablonu(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np")
if(nazwa_przestrzeni==nazwy_np_modul.Template)then
return nazwy_modul["NAZWASTRONY"](nazwa);
elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then
return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
else
return nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
end;
end;
function p.ZnacznikoweTrueFalseSzeregZnakowy(yes)
local yes_male=mw.ustring.lower(yes);
return ((yes_male=="true") and true or ((yes_male~="false")and yes or false));
end;
local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu)
local liczba_obiektu=liczba_obiektu or 100;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika;
end;
end;
end
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
if(not tablica_analizy_obiektow_strony_dany_modul)then
tablica_analizy_obiektow_strony_dany_modul={};
znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul);
end;
local html_modul=require("Module:Html");
znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik);
znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3");
local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$");
if((nazwa)and(zawartosc))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),zawartosc,nil;
end;
----
local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$");
if(nazwa)then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),nil,nil;
end;
----
local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$");
----
if((not nazwa)or(not atrybuty)or(not zawartosc))then
nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$");
if((not nazwa)or(not atrybuty))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return nil,nil,nil;
end;
end;
-----
local techniczne_modul=require("Module:Techniczne");
local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul);
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty;
end;
return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty;
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104);
end;
function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane)
----
local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(wynik)then return nil;end;
local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
--and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry;
----
local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow;
local parametry_modul=require("Module:Parametry");
if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then
tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod);
else
nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod);
tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa);
end;
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
----
if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then
if(__FUNKCJA1 or __FUNKCJA_domyslna)then
local techniczne_modul=require("Module:Techniczne");
if(not tab_pop)then
if((kod)and(tablica_danych_parametrow_szablonu_strony))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu;
nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(__FUNKCJA1)then
return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
else
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
else
if(__FUNKCJA8)then
return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
if(__FUNKCJA2)then
return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
elseif(tabela_modyfikatorow)then
if(tabela_modyfikatorow["#invoke:"])then
if(__FUNKCJA3)then
return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
elseif(tabela_modyfikatorow["#tag:"])then
if(__FUNKCJA4)then
nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu);
return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
else
local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil;
if(czy_sa_takie_funkcje)then
local function CzyTenSzablonToParser(tabela_modyfikatorow)
for name,value in pairs(tabela_modyfikatorow)do
if(mw.ustring.match(name,"^#%a+:$"))then
return true;
end;
end;
return false;
end;
if(CzyTenSzablonToParser(tabela_modyfikatorow))then
if(__FUNKCJA5)then
return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
else
if(__FUNKCJA6)then
return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
else
if(__FUNKCJA9)then
return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
end;
p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("tekst");
local pattern=PobierzParametr(2) or PobierzParametr("wzór");
local szablon=PobierzParametr(3) or PobierzParametr("szablon");
local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami");
----
local parametry_modul=require("Module:Parametry");
czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami))
and czy_z_parametrami
or (((not parametry_modul.TypeString(czy_z_parametrami))
and(not parametry_modul.TypeNil(czy_z_parametrami))
and(not parametry_modul.TypeBoolean(czy_z_parametrami)))
and czy_z_parametrami
or (parametry_modul.CzyTak(czy_z_parametrami) and true or false)
)
);
----
szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
szablon=mw.getContentLanguage():ucfirst(szablon);
----
local iter=mw.ustring.gmatch(tekst,pattern);
for nazwa_szablonowa in iter do
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa);
local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then
if(nazwa_szablonu==szablon)then
return "tak";
end;
end;
end;
return nil;
end;
return p;
qtyym0zrcy76k9lnxh11jdxc53yunx3
Pruski/Lekcja13
0
61048
542736
542655
2026-05-12T19:14:59Z
Aklbmd164
37133
/* Tworzenie nazw żeńskich */
542736
wikitext
text/x-wiki
'''<big>Lakciōni 13</big>'''
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35a> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Tworzenie nazw żeńskich zawodów ==
Nazwy żeńskie zawodów tworzy się w języku pruskim na trzy główne sposoby:<br>
* ''-tajs'' ⇒ ''-taja'', np. perdā<span style="color:red">tajs</span> ⇒ perdā<span style="color:red">taja</span>
* ''-s/-is'' ⇒ ''-ini'', np. bibliōtekar<span style="color:red">s</span> ⇒ bibliōtekar<span style="color:red">ini</span>, infōrmatiker<span style="color:red">is</span> ⇒ infōrmatiker<span style="color:red">ini</span>
* ''-is'' ⇒ ''-i'', np. mukinnew<span style="color:red">is</span> ⇒ mukinnew<span style="color:red">i</span>
Wyjątek: aktrīsi (aktorka)
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – Iść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – Pracować
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''En perejīngiskwai as kwāi wīrstwei...''' – W przyszłości chcę zostać...
* '''Etwinūis, kāigi as mazzi preikakīntun si prei autōbusadwaran/pustin/umnudin?''' – Przepraszam, jak mogę dotrzeć na dworzec autobusowy/na pocztę/do piekarni?
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
hwcr1uj3yu6hpdtysdh1j70yim4dtzc
542737
542736
2026-05-12T19:18:07Z
Aklbmd164
37133
/* Tworzenie nazw żeńskich zawodów */
542737
wikitext
text/x-wiki
'''<big>Lakciōni 13</big>'''
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35a> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Tworzenie nazw żeńskich zawodów ==
Nazwy żeńskie zawodów tworzy się w języku pruskim na trzy główne sposoby:<br>
* ''-tajs'' ⇒ ''-taja'', np. perdā<span style="color:red">tajs</span> ⇒ perdā<span style="color:red">taja</span>, štīri<span style="color:red">tajs</span> ⇒ štīri<span style="color:red">taja</span>
* ''-s/-is'' ⇒ ''-ini'', np. bibliōtekar<span style="color:red">s</span> ⇒ bibliōtekar<span style="color:red">ini</span>, infōrmatiker<span style="color:red">is</span> ⇒ infōrmatiker<span style="color:red">ini</span>
* ''-is'' ⇒ ''-i'', np. mukinnew<span style="color:red">is</span> ⇒ mukinnew<span style="color:red">i</span>, kukūr<span style="color:red">is</span> ⇒ kukūr<span style="color:red">i</span>
Wyjątek: aktrīsi (aktorka)
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – Iść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – Pracować
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''En perejīngiskwai as kwāi wīrstwei...''' – W przyszłości chcę zostać...
* '''Etwinūis, kāigi as mazzi preikakīntun si prei autōbusadwaran/pustin/umnudin?''' – Przepraszam, jak mogę dotrzeć na dworzec autobusowy/na pocztę/do piekarni?
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
e4mea4qvnmud4lr9u9e7iw9ptaeqvyx
542738
542737
2026-05-12T19:20:05Z
Aklbmd164
37133
/* Tworzenie nazw żeńskich zawodów */
542738
wikitext
text/x-wiki
'''<big>Lakciōni 13</big>'''
== Deiktāi en mīstu be prōfesiōnis – Miejsca w mieście i zawody ==
=== Deiktāi en mīstu ===
<gallery>
File:Gifford State Bank.jpg|'''bānki''' <52> – bank
File:Caffeena café storefront at NOMO, Bacoor, Cavite — 25 Feb 2022.jpg|'''kafēbutan''' <35> – kawiarnia
File:Novo-Cinemas-Book-Movie-Tickets-Doha-Qatar (5).jpg|'''kintùps''' <32> – kino
File:Hospital in Volgograd 001.jpg|'''špitlin''' <37> – szpital
File:Hotel Kiljava.jpg|'''hōtels''' <32> – hotel
File:Princeton University Art Museum Ancient Mediterranean Art Gallery.jpg|'''muzējan''' <35a> – muzeum
File:Park Środula, Sosnowiec, Jesień 2021.jpg|'''parks''' <32> – park
File:The interior of an Olive Garden restaurant 04.jpg|'''restaurānts''' <56> – restauracja
File:A public school, high school classroom in the United States 02.jpg|'''skūli''' <52> – szkoła
File:In the Grocers - geograph.org.uk - 7767639.jpg|'''kāupabutan''' <35> – sklep
File:Supermarket z flagami (ubt).JPG|'''sūpermarkets''' <32> – supermarket
File:San Diego Zoo entrance elephant.jpg|'''zoō''' (r. nijaki, nie odmienia się) – zoo
File:17-05-30-M R Štefánik Airport- RR71498.jpg|'''skrāistaustin''' <37> – lotnisko
File:Rennes - Librairie Le Failler - 20250212 (2).jpg|'''laiskeīns''' <32> – księgarnia
File:Inverness Bus Station... - geograph.org.uk - 7774844.jpg|'''autōbusadwars''' <32> – dworzec autobusowy
File:20180710 165312 pharmacy lodz july 2018.jpg|'''apōteki''' <52> – apteka
File:Saint Catherine Catholic Church in Boulder Montana.jpg|'''kīrki''' <52> – kościół
File:Laukaa Main Library interior 2.jpg|'''bibliōteki''' <52> – biblioteka
File:Wiślica Poczta (1).jpg|'''pusti''' <52> – poczta
File:Stazione di Milano Centrale (10745653534).jpg|'''gelzāpintisdwars''' <32> – dworzec kolejowy
File:Gran Teatro de la Habana interior.jpg|'''teāteris''' <40> – teatr
File:Admiral Street Fire Station Providence RI.jpg|'''ugnisar̀gawa''' <45> – remiza strażacka
File:A view of a bakery in Berlin, Germany.jpg|'''umnudi''' <52> – piekarnia
File:Sweetie Pies Bakery - December 2024 - Sarah Stierch 02.jpg|'''kōnditaraja''' <45> – cukiernia
File:Port Elizabeth City Hall, front facade.jpg|'''rādasbutan''' <35> – ratusz
File:Shell petrol stations in the Philippines (June 2023) 04.jpg|'''degalaīns''' <32> – stacja benzynowa
</gallery>
=== Prōfesiōnis ===
<gallery>
File:Dr. Soumya Guha in an Operation Theatre.jpg|'''ārsti''' <54> – lekarz
File:A college professor teaching in a university classroom full of students in Tennessee, United States 08.jpg|'''mukinnewis''' <40> – nauczyciel
File:Arcata firefighter Spraying water at a fire.jpg|'''ugnisar̀giskeniks''' <32> – strażak
File:HH Polizeihauptmeister MZ.jpg|'''pōlicists''' <32> – policjant
File:Diana Ellis - 19 Oct 2011.jpg|'''adwōkats''' <32> – adwokat
File:Ohio farmer David Brandt.jpg|'''būrs''' <32> – rolnik
File:Barnraisers working together to construct WOW Barn. LEEDS 2023.jpg|'''zēistajs''' <32> – budowlaniec
File:091018 MerchantofVenice 161.jpg|'''aktōrs''' <32> – aktor
File:Chef cuisinier.jpg|'''kukūris''' <40> – kucharz
File:Ingenieur reseaux.jpg|'''infōrmatikeris''' <40> – informatyk
File:Fönsterputsning - Window cleaner - Ystad-2025.jpg|'''gewinīs''' <38> – sprzątacz
File:Flower seller at the Rabat open market - Il-Monti.jpg|'''perdātajs''' <32> – sprzedawca
File:Waiter in a restaurant, Paris 2011.jpg|'''prickus''' <42> – kelner; portier
File:Khuraman Ismayilova.jpg|'''bibliōtekars''' <32> – bibliotekarz
File:Truckdriver.jpg|'''štīritajs''' <32> – kierowca
File:Battesimi0113.jpg|'''nōseilaniks''' <32> – ksiądz
File:Baker Oslo.jpg|'''pekūris''' <40> – piekarz
</gallery>
== Tworzenie nazw żeńskich zawodów ==
Nazwy żeńskie zawodów tworzy się w języku pruskim na trzy główne sposoby:<br>
* ''-tajs'' ⇒ ''-taja'', np.:
** perdā<span style="color:red">tajs</span> ⇒ perdā<span style="color:red">taja</span>
** štīri<span style="color:red">tajs</span> ⇒ štīri<span style="color:red">taja</span>
* ''-s/-is'' ⇒ ''-ini'', np.:
** bibliōtekar<span style="color:red">s</span> ⇒ bibliōtekar<span style="color:red">ini</span>
** infōrmatiker<span style="color:red">is</span> ⇒ infōrmatiker<span style="color:red">ini</span>
* ''-is'' ⇒ ''-i'', np.:
** mukinnew<span style="color:red">is</span> ⇒ mukinnew<span style="color:red">i</span>
** kukūr<span style="color:red">is</span> ⇒ kukūr<span style="color:red">i</span>
Wyjątek: aktrīsi (aktorka)
== Odmiana czasowników ''iść'' i ''pracować'' w cz. teraźniejszym ==
* '''Ēitwei''' – Iść
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''ēima'''
|-
|Tū '''ēisei'''
|-
|Tāns/Tenā/Sta '''ēit'''
|-
|Mes '''ēimai'''
|-
|Jūs '''ēitei'''
|-
|Tenēi/Tennas '''ēit'''
|}
* '''Dīlatwei''' – Pracować
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''dīlai'''
|-
|Tū '''dīlai'''
|-
|Tāns/Tenā/Sta '''dīlai'''
|-
|Mes '''dīlaimai'''
|-
|Jūs '''dīlaitei'''
|-
|Tenēi/Tennas '''dīlai'''
|}
Czasownik ''dīlatwei'' oznacza również ''działać'' (np. urządzenie).
== Przydatne wyrażenia ==
* '''As ēima en kāupabutan/skūlin/bibliōtekin.''' – Idę do sklepu/szkoły/kina.
* '''As dīlai en kāupabutu/skūlai/bibliōtekei.''' – Pracuję w sklepie/szkole/kinie.
* '''As dīlai kāigi perdātajs/mukinnewis/bibliōtekars.''' – Pracuję jako sprzedawca/nauczyciel/bibliotekarz.
* '''En perejīngiskwai as kwāi wīrstwei...''' – W przyszłości chcę zostać...
* '''Etwinūis, kāigi as mazzi preikakīntun si prei autōbusadwaran/pustin/umnudin?''' – Przepraszam, jak mogę dotrzeć na dworzec autobusowy/na pocztę/do piekarni?
* '''Jaīs tikriskai be panzdau wartinnais si prei tikrai/kāirai''' – Idź prosto, a następnie skręć w prawo/lewo.
4ghxv7y51zjb4ok5qje0ht4f8l7spd3
Pruski/Lekcja15
0
61051
542740
542491
2026-05-12T19:27:24Z
Aklbmd164
37133
/* Przydatne wyrażenia */
542740
wikitext
text/x-wiki
'''<big>Lakciōni 15</big>'''
== Wālstis be tāutas – Państwa i krainy ==
<gallery>
File:Flag of Baltic Prussian revivalists.svg|'''Prūsa''' <45> – Prusy (kraina)
File:Flag of Poland.svg|'''Pōli''' <52> – Polska
File:Flag of Lithuania.svg|'''Laītawa''' <45> – Litwa
File:Flag of Latvia.svg|'''Lattawa''' <45> – Łotwa
File:Flag of Germany.svg|'''Mikskātauta''' <45> – Niemcy
File:Flag of Russia.svg|'''Mackālija''' <45> – Rosja
File:Flag of England.svg|'''Ēnglija''' <45> – Anglia
File:Flag of France (2024–present).svg|'''Prankrīki''' <52> – Francja
File:Flag of Italy.svg|'''Wālkija''' <45> – Włochy
File:Flag of Spain.svg|'''Špānija''' <45> – Hiszpania
File:Flag of the United States.svg|'''Amērikas Peraīnintas Wālstis (APW)''' <58> – Stany Zjednoczone
File:Flag of the People's Republic of China.svg|'''Kīna''' <45> – Chiny
File:Flag of Japan.svg|'''Japānija''' <45> – Japonia
</gallery>
== Naciōnalitātis be billas – Narodowości i języki ==
{|class="wikitable"
! align="center" |Wālstis/Tautā <br /> <span style="font-weight: normal;">(państwo/kraina)</span>
! align="center" |Buwīntajs <br /> <span style="font-weight: normal;">(mieszkaniec)</span>
! align="center" |Buwīntaja <br /> <span style="font-weight: normal;">(mieszkanka)</span>
! align="center" |Adjaktīwan <br /> <span style="font-weight: normal;">(przymiotnik)</span>
! align="center" |Bilā <br /> <span style="font-weight: normal;">(język)</span>
|-
| align="center" |Prūsa
| align="center" |prūss
| align="center" |prūs<u>ini</u>
| align="center" |prūs<u>iskas</u>
| align="center" |prūs<u>iskan</u>
|-
| align="center" |Pōli
| align="center" |pōlis
| align="center" |pōlini
| align="center" |pōliskas
| align="center" |pōliskan
|-
| align="center" |Laītawa
| align="center" |laītawis
| align="center" |laītawini
| align="center" |laītawiskas
| align="center" |laītawiskan
|-
| align="center" |Lattawa
| align="center" |lattawis
| align="center" |lattawini
| align="center" |lattawiskas
| align="center" |lattawiskan
|-
| align="center" |Mikskātauta
| align="center" |miksis
| align="center" |miksi
| align="center" |miksiskas
| align="center" |miksiskan
|-
| align="center" |Mackālija
| align="center" |mackālis
| align="center" |mackālini
| align="center" |mackāliskas
| align="center" |maskōwitiskan
|-
| align="center" |Ēnglija
| align="center" |ēnglis
| align="center" |ēnglini
| align="center" |ēngliskas
| align="center" |ēngliskan
|-
| align="center" |Prankrīki
| align="center" |prancōzis
| align="center" |prancōzini
| align="center" |prancōziskas
| align="center" |prancōziskan
|-
| align="center" |Wālkija
| align="center" |wālks
| align="center" |wālkini
| align="center" |wālkiskas
| align="center" |wālkiskan
|-
| align="center" |Špānija
| align="center" |špānis
| align="center" |špānini
| align="center" |špāniskas
| align="center" |špāniskan
|-
| align="center" |APW
| align="center" |amērikans
| align="center" |amērikanini
| align="center" |amērikaniskas
| align="center" |–
|-
| align="center" |Kīna
| align="center" |kīns
| align="center" |kīnini
| align="center" |kīniskas
| align="center" |kīniskan
|-
| align="center" |Japānija
| align="center" |japānis
| align="center" |japānini
| align="center" |japāniskas
| align="center" |japāniskan
|}
Zwróć uwagę na trzy przyrostki:
* '''-ini''', używany do tworzenia nazw żeńskich od nazw narodowości
Wyjątek: miksis ⇒ miksi (Niemka)
* '''-iskas''', używany do tworzenia przymiotników od nazw państw
* '''-iskan''', używany do tworzenia nazw języków od nazw państw
W języku pruskim inaczej niż w języku polskim narodowości są pisane z małej litery, np. ''prūss'' zamiast ''Prūss''.
== Odmiana czasowników ''mieszkać'' i ''mówić'' w cz. teraźniejszym ==
* '''Buwīntwei''' – Mieszkać
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''buwinna'''
|-
|Tū '''buwinna'''
|-
|Tāns/Tenā/Sta '''buwinna'''
|-
|Mes '''buwinnimai'''
|-
|Jūs '''buwinnitei'''
|-
|Tenēi/Tennas '''buwinna'''
|}
<noinclude>
* '''Bilītun''' – Mówić
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''bilāi'''
|-
|Tū '''bilāi'''
|-
|Tāns/Tenā/Sta '''bilāi'''
|-
|Mes '''bilāimai'''
|-
|Jūs '''bilāitei'''
|-
|Tenēi/Tennas '''bilāi'''
|}
<noinclude>
Jeśli chcemy powiedzieć np. mówić <u>po prusku</u>, mówić <u>po polsku</u>, to wtedy zamieniamy końcówkę nazwy języka ''-an'' na ''-ai'' (i nie dodajemy żadnego przyimka), np. ''As bilāi prūsisk<u>ai</u>'' (Mówię po prusku).
== Przydatne wyrażenia ==
* '''As asma iz Prūsan/Pōlin/Mikskātautan.''' – Jestem z Prus/Polski/Niemiec.
* '''As buwinna en Prūsai/Pōlai/Mikskātautai.''' – Mieszkam w Prusach/Polsce/Niemczech.
* '''As bilāi prūsiskai/pōliskai/miksiskai.''' – Mówię po prusku/polsku/niemiecku.
* '''... ast wālstis en Eurōpai/Āzijai/Afrikai/Zēimanamērikai/Pussideinanamērikai.''' – ... jest państwem w Europie/Azji/Afryce/Ameryce Północnej/Ameryce Południowej.
* '''Prūsas/Pōlis/Mikskātautas karengus''' – Flaga Prus/Polski/Niemiec
j3cpk6tpb5e47vzb5snugqx002e5civ
Pruski/Lekcja17
0
61053
542730
542493
2026-05-12T18:47:31Z
Aklbmd164
37133
/* Seimī */
542730
wikitext
text/x-wiki
'''<big>Lakciōni 17</big>'''
== Seimī be gintus – Rodzina i krewni ==
=== Seimī ===
* '''seimī''' <51> – rodzina
* '''mūti''' <66> – matka
* '''mamma''' <45> – mama
* '''tāws''' <36> – ojciec
* '''tāti''' <54> – tata
* '''wūraišai''' <40> – rodzice (''plurale tantum'')
* '''dukti''' <67> – córka
* '''sūns''' <43> – syn
* '''sestrā''' <46> – siostra
* '''brāti''' <65> – brat
* '''anni''' <52> – babcia
* '''tītis''' <40> – dziadek
* '''praanni''' <52> – prababcia
* '''pratītis''' <40> – pradziadek
* '''nepūtini''' <50> – wnuczka
* '''nepūts''' <57> – wnuk, wnuczek
* '''genā''' <46> – żona
* '''wīrs''' <32> – mąż
=== Gintus ===
* '''mūsa''' <45> – ciocia
* '''aws''' <32> – wuj, wujek
* '''tīws''' <32> – stryj, stryjek
* '''sestrīki''' <52> – kuzynka
* '''kuzēns''' <32> – kuzyn
== Odmiana czasowników ''kochać'' i ''podobać się'' w cz. teraźniejszym ==
* '''Milītun''' – Kochać
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''mīli'''
|-
|Tū '''mīli'''
|-
|Tāns/Tenā/Sta '''mīli'''
|-
|Mes '''mīlimai'''
|-
|Jūs '''mīlitei'''
|-
|Tenēi/Tennas '''mīli'''
|}
<noinclude>
* '''Padīngtwei''' – Podobać się
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''padīnga'''
|-
|Tū '''padīnga'''
|-
|Tāns/Tenā/Sta '''padīnga'''
|-
|Mes '''padīngimai'''
|-
|Jūs '''padīngitei'''
|-
|Tenēi/Tennas '''padīnga'''
|}
<noinclude>
Wyrażenia ''As padīnga'', ''Tū padīnga'' itp. nie oznaczają ''Mnie się podoba'', ''Tobie się podoba'', tylko ''Ja podobam się (komuś)'', ''Ty podobasz się (komuś)''. By powiedzieć np. ''Mnie się podoba'', ''Tobie się podoba'' używamy odpowiednich zaimków w celowniku, np.:
* '''Mennei'''/'''Mi''' wassara padīnga – Mi się podoba wiosna = Ja lubię wiosnę.
* '''Tenesmu''' wassara padīnga – Jemu się podoba wiosna = On lubi wiosnę.
* '''Nūmans''' wassara padīnga – Nam się podoba wiosna = My lubimy wiosnę.
To samo dotyczy rzeczowników, np. ''Suņņu mēnsa padīnga'' (Pies lubi mięso).<br>
Jeśli chcemy powiedzieć np. ''Lubię rysować'', to wtedy po czasowniku ''padīngtwei'' wstawiamy czasownik w bezokoliczniku, czyli ''Mennei padīnga glaubātun''.
ajek97an7fofc3ngaf1utp84zx91tco
542731
542730
2026-05-12T18:51:59Z
Aklbmd164
37133
542731
wikitext
text/x-wiki
'''<big>Lakciōni 17</big>'''
== Seimī be gintus – Rodzina i krewni ==
=== Seimī ===
* '''seimī''' <51> – rodzina
* '''mūti''' <66> – matka
* '''mamma''' <45> – mama
* '''tāws''' <36> – ojciec
* '''tāti''' <54> – tata
* '''wūraišai''' <40> – rodzice (''plurale tantum'')
* '''dukti''' <67> – córka
* '''sūns''' <43> – syn
* '''sestrā''' <46> – siostra
* '''brāti''' <65> – brat
* '''anni''' <52> – babcia
* '''tītis''' <40> – dziadek
* '''praanni''' <52> – prababcia
* '''pratītis''' <40> – pradziadek
* '''nepūtini''' <50> – wnuczka
* '''nepūts''' <57> – wnuk, wnuczek
* '''genā''' <46> – żona
* '''wīrs''' <32> – mąż
=== Gintus ===
* '''mūsa''' <45> – ciocia
* '''aws''' <32> – wuj, wujek
* '''tīws''' <32> – stryj, stryjek
* '''sestrīki''' <52> – kuzynka
* '''kuzēns''' <32> – kuzyn
== Odmiana czasowników ''kochać'' i ''podobać się'' w cz. teraźniejszym ==
* '''Milītun''' – Kochać
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''mīli'''
|-
|Tū '''mīli'''
|-
|Tāns/Tenā/Sta '''mīli'''
|-
|Mes '''mīlimai'''
|-
|Jūs '''mīlitei'''
|-
|Tenēi/Tennas '''mīli'''
|}
<noinclude>
* '''Padīngtwei''' – Podobać się
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''padīnga'''
|-
|Tū '''padīnga'''
|-
|Tāns/Tenā/Sta '''padīnga'''
|-
|Mes '''padīngimai'''
|-
|Jūs '''padīngitei'''
|-
|Tenēi/Tennas '''padīnga'''
|}
<noinclude>
Wyrażenia ''As padīnga'', ''Tū padīnga'' itp. nie oznaczają ''Mnie się podoba'', ''Tobie się podoba'', tylko ''Ja podobam się (komuś)'', ''Ty podobasz się (komuś)''. By powiedzieć np. ''Mnie się podoba'', ''Tobie się podoba'' używamy odpowiednich zaimków w celowniku, np.:
* '''Mennei'''/'''Mi''' wassara padīnga – Mi się podoba wiosna = Ja lubię wiosnę.
* '''Tenesmu''' wassara padīnga – Jemu się podoba wiosna = On lubi wiosnę.
* '''Nūmans''' wassara padīnga – Nam się podoba wiosna = My lubimy wiosnę.
To samo dotyczy rzeczowników, np. ''Suņņu mēnsa padīnga'' (Pies lubi mięso).<br>
Jeśli chcemy powiedzieć np. ''Lubię rysować'', to wtedy po czasowniku ''padīngtwei'' wstawiamy czasownik w bezokoliczniku, czyli ''Mennei padīnga glaubātun''.
== Przydatne wyrażenia ==
* '''Mūsas gīmsenes deinā/emnes deinā/salūbis/ēnkaps.''' – Urodziny/imieniny/ślub/pogrzeb cioci.
qfnv95hikicyrdc4n791yi91k5rt3bi
542733
542731
2026-05-12T19:01:31Z
Aklbmd164
37133
/* Przydatne wyrażenia */
542733
wikitext
text/x-wiki
'''<big>Lakciōni 17</big>'''
== Seimī be gintus – Rodzina i krewni ==
=== Seimī ===
* '''seimī''' <51> – rodzina
* '''mūti''' <66> – matka
* '''mamma''' <45> – mama
* '''tāws''' <36> – ojciec
* '''tāti''' <54> – tata
* '''wūraišai''' <40> – rodzice (''plurale tantum'')
* '''dukti''' <67> – córka
* '''sūns''' <43> – syn
* '''sestrā''' <46> – siostra
* '''brāti''' <65> – brat
* '''anni''' <52> – babcia
* '''tītis''' <40> – dziadek
* '''praanni''' <52> – prababcia
* '''pratītis''' <40> – pradziadek
* '''nepūtini''' <50> – wnuczka
* '''nepūts''' <57> – wnuk, wnuczek
* '''genā''' <46> – żona
* '''wīrs''' <32> – mąż
=== Gintus ===
* '''mūsa''' <45> – ciocia
* '''aws''' <32> – wuj, wujek
* '''tīws''' <32> – stryj, stryjek
* '''sestrīki''' <52> – kuzynka
* '''kuzēns''' <32> – kuzyn
== Odmiana czasowników ''kochać'' i ''podobać się'' w cz. teraźniejszym ==
* '''Milītun''' – Kochać
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''mīli'''
|-
|Tū '''mīli'''
|-
|Tāns/Tenā/Sta '''mīli'''
|-
|Mes '''mīlimai'''
|-
|Jūs '''mīlitei'''
|-
|Tenēi/Tennas '''mīli'''
|}
<noinclude>
* '''Padīngtwei''' – Podobać się
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''padīnga'''
|-
|Tū '''padīnga'''
|-
|Tāns/Tenā/Sta '''padīnga'''
|-
|Mes '''padīngimai'''
|-
|Jūs '''padīngitei'''
|-
|Tenēi/Tennas '''padīnga'''
|}
<noinclude>
Wyrażenia ''As padīnga'', ''Tū padīnga'' itp. nie oznaczają ''Mnie się podoba'', ''Tobie się podoba'', tylko ''Ja podobam się (komuś)'', ''Ty podobasz się (komuś)''. By powiedzieć np. ''Mnie się podoba'', ''Tobie się podoba'' używamy odpowiednich zaimków w celowniku, np.:
* '''Mennei'''/'''Mi''' wassara padīnga – Mi się podoba wiosna = Ja lubię wiosnę.
* '''Tenesmu''' wassara padīnga – Jemu się podoba wiosna = On lubi wiosnę.
* '''Nūmans''' wassara padīnga – Nam się podoba wiosna = My lubimy wiosnę.
To samo dotyczy rzeczowników, np. ''Suņņu mēnsa padīnga'' (Pies lubi mięso).<br>
Jeśli chcemy powiedzieć np. ''Lubię rysować'', to wtedy po czasowniku ''padīngtwei'' wstawiamy czasownik w bezokoliczniku, czyli ''Mennei padīnga glaubātun''.
== Przydatne wyrażenia ==
* '''Mūsas gīmsenes deinā/emnes deinā/salūbis/ēnkaps.''' – Urodziny/imieniny/ślub/pogrzeb cioci.
* '''Mes wīrstmai kāimalukiwusis annin/tītin/mūsan.''' – Odwiedzimy babcię/dziadka/ciocię.
* '''Turri tū brātin/sestran?''' – Czy masz brata/siostrę?
* '''As wūrai ni widāi mūsan/awwan/kuzēnans''' – Dawno nie widziałem cioci/wujka/kuzynów.
* '''Majā seimī ast debīkan/līkutan.''' – Moja rodzina jest duża/mała.
* '''Mūsa/Aws/Kuzēnai padīnga mennei.''' – Lubię ciocię/wujka/kuzynów.
* '''As mīli swajjan mamman/annin/gennan.''' – Kocham swoją mamę/babcię/żonę.
ruhuvjj79ukq483uyjk4a66fbo2dvb7
542741
542733
2026-05-12T19:28:17Z
Aklbmd164
37133
/* Przydatne wyrażenia */
542741
wikitext
text/x-wiki
'''<big>Lakciōni 17</big>'''
== Seimī be gintus – Rodzina i krewni ==
=== Seimī ===
* '''seimī''' <51> – rodzina
* '''mūti''' <66> – matka
* '''mamma''' <45> – mama
* '''tāws''' <36> – ojciec
* '''tāti''' <54> – tata
* '''wūraišai''' <40> – rodzice (''plurale tantum'')
* '''dukti''' <67> – córka
* '''sūns''' <43> – syn
* '''sestrā''' <46> – siostra
* '''brāti''' <65> – brat
* '''anni''' <52> – babcia
* '''tītis''' <40> – dziadek
* '''praanni''' <52> – prababcia
* '''pratītis''' <40> – pradziadek
* '''nepūtini''' <50> – wnuczka
* '''nepūts''' <57> – wnuk, wnuczek
* '''genā''' <46> – żona
* '''wīrs''' <32> – mąż
=== Gintus ===
* '''mūsa''' <45> – ciocia
* '''aws''' <32> – wuj, wujek
* '''tīws''' <32> – stryj, stryjek
* '''sestrīki''' <52> – kuzynka
* '''kuzēns''' <32> – kuzyn
== Odmiana czasowników ''kochać'' i ''podobać się'' w cz. teraźniejszym ==
* '''Milītun''' – Kochać
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''mīli'''
|-
|Tū '''mīli'''
|-
|Tāns/Tenā/Sta '''mīli'''
|-
|Mes '''mīlimai'''
|-
|Jūs '''mīlitei'''
|-
|Tenēi/Tennas '''mīli'''
|}
<noinclude>
* '''Padīngtwei''' – Podobać się
{| style="background-color: #fafafa; border: solid 1px #c2c3c4; padding: 0.2em; width: 45%;" valign=top
|-
|As '''padīnga'''
|-
|Tū '''padīnga'''
|-
|Tāns/Tenā/Sta '''padīnga'''
|-
|Mes '''padīngimai'''
|-
|Jūs '''padīngitei'''
|-
|Tenēi/Tennas '''padīnga'''
|}
<noinclude>
Wyrażenia ''As padīnga'', ''Tū padīnga'' itp. nie oznaczają ''Mnie się podoba'', ''Tobie się podoba'', tylko ''Ja podobam się (komuś)'', ''Ty podobasz się (komuś)''. By powiedzieć np. ''Mnie się podoba'', ''Tobie się podoba'' używamy odpowiednich zaimków w celowniku, np.:
* '''Mennei'''/'''Mi''' wassara padīnga – Mi się podoba wiosna = Ja lubię wiosnę.
* '''Tenesmu''' wassara padīnga – Jemu się podoba wiosna = On lubi wiosnę.
* '''Nūmans''' wassara padīnga – Nam się podoba wiosna = My lubimy wiosnę.
To samo dotyczy rzeczowników, np. ''Suņņu mēnsa padīnga'' (Pies lubi mięso).<br>
Jeśli chcemy powiedzieć np. ''Lubię rysować'', to wtedy po czasowniku ''padīngtwei'' wstawiamy czasownik w bezokoliczniku, czyli ''Mennei padīnga glaubātun''.
== Przydatne wyrażenia ==
* '''Mūsas gīmsenes deinā/emnes deinā/salūbis/ēnkaps''' – Urodziny/imieniny/ślub/pogrzeb cioci
* '''Mes wīrstmai kāimalukiwusis annin/tītin/mūsan.''' – Odwiedzimy babcię/dziadka/ciocię.
* '''Turri tū brātin/sestran?''' – Czy masz brata/siostrę?
* '''As wūrai ni widāi mūsan/awwan/kuzēnans''' – Dawno nie widziałem cioci/wujka/kuzynów.
* '''Majā seimī ast debīkan/līkutan.''' – Moja rodzina jest duża/mała.
* '''Mūsa/Aws/Kuzēnai padīnga mennei.''' – Lubię ciocię/wujka/kuzynów.
* '''As mīli swajjan mamman/annin/gennan.''' – Kocham swoją mamę/babcię/żonę.
pxwf0gsb03fw4htc30z1vqqje0k2089
Pruski/Lekcja30
0
61539
542734
542648
2026-05-12T19:08:21Z
Aklbmd164
37133
542734
wikitext
text/x-wiki
'''<big>Lakciōni 30</big>'''
== Odmiana przymiotników ==
Przymiotniki odmieniają się według schematów od <25> do <31>. Na dzisiejszej lekcji poznasz schematy <25> i <26>, które mają podobną odmianę jak rzeczowniki.
== <25> ==
Tym schematem odmieniają się przymiotniki zakończone spółgłoską + literą ''s'' oraz przymiotniki zakończone na ''-iskas''.
* Przykład odmiany ''debīks'' (duży):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">s</span>
| debīk<span style="color:red">a</span>
| debīk<span style="color:red">an</span>
|-
| Dopełniacz
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
|-
| Celownik
| debīk<span style="color:red">asmu</span>
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">asmu</span>
|-
| Biernik
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">ai</span>
|-
| Dopełniacz
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
| Celownik
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
|-
| Biernik
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
|}
* Przykład odmiany ''na<u>w</u>s'' (nowy):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naw<span style="color:red">s</span>
| na<u>ww</u><span style="color:red">a</span>
| naww<span style="color:red">an</span>
|-
| Dopełniacz
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
|-
| Celownik
| naww<span style="color:red">asmu</span>
| naww<span style="color:red">ai</span>
| naww<span style="color:red">asmu</span>
|-
| Biernik
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naww<span style="color:red">ai</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">ai</span>
|-
| Dopełniacz
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
| Celownik
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
|-
| Biernik
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
|}
Wskazówka: Mimo wielu form zauważ, że w odmianie <25> formy rodzaju męskiego i nijakiego (oprócz mianownika l. pojedynczej) są identyczne. Podobnie jest ze wszystkimi formami l. mnogiej bez względu na rodzaj – różnią się tylko formy mianownika.
== <26> ==
Tym schematem odmieniają się często używane przymiotniki zakończone spółgłoską + literą ''s''.
* Przykład odmiany ''wārgs'' (zły):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| wārg<span style="color:red">s</span>
| warg<span style="color:red">ā</span>
| wārg<span style="color:red">an</span>
|-
| Dopełniacz
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
|-
| Celownik
| warg<span style="color:red">àsmu</span>
| wārg<span style="color:red">ai</span>
| warg<span style="color:red">àsmu</span>
|-
| Biernik
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| warg<span style="color:red">āi</span>
| wārg<span style="color:red">as</span>
| warg<span style="color:red">āi</span>
|-
| Dopełniacz
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
| Celownik
| warg<span style="color:red">ammans</span>
| warg<span style="color:red">āmans</span>
| warg<span style="color:red">ammans</span>
|-
| Biernik
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
|}
* Przykład odmiany ''la<u>b</u>s'' (dobry):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">s</span>
| lab<span style="color:red">ā</span>
| la<u>bb</u></span><span style="color:red">an</span>
|-
| Dopełniacz
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
|-
| Celownik
| lab<span style="color:red">àsmu</span>
| labb<span style="color:red">ai</span>
| lab<span style="color:red">àsmu</span>
|-
| Biernik
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">āi</span>
| labb<span style="color:red">as</span>
| lab<span style="color:red">āi</span>
|-
| Dopełniacz
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
| Celownik
| lab<span style="color:red">ammans</span>
| lab<span style="color:red">āmans</span>
| lab<span style="color:red">ammans</span>
|-
| Biernik
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
|}
== Połączenie czasownik łącznikowego z przymiotnikiem ==
Jeśli przymiotnik nie opisuje bezpośrednio rzeczownika, ale łączy się z czasownikiem łącznikowym (np. ''być'', ''zostać''), to wtedy zawsze jest w formie rodzaju nijakiego l. pojedynczej, np.:
* Šis zmūi ast labban (błąd: Šis zmūi ast <span style="text-decoration: line-through red;">labs</span>.)
* Jūs astei gaūdran (błąd: Jūs astei <span style="text-decoration: line-through red;">gaudrāi/gaūdras</span>.)
* Āukruwja pastāi gūztan (błąd: Āukruwja pastāi <span style="text-decoration: line-through red;">guztā</span>.)
* Mes pastāimai papaikītan (błąd: Mes pastāimai <span style="text-decoration: line-through red;">papaikitāi/papaikītas</span>.)
== Połączenie przymiotnika z rzeczownikiem w celowniku ==
W połączeniach przymiotnika z rzeczownikiem w celowniku, rzeczownik traci formę celownika i przyjmuje formę biernika, np.:
* Mes asmai en <u>nawwasmu buweīnan</u>. – Jesteśmy w nowym mieszkaniu. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* Mes pagalbamai <u>nawwamans kōlagins</u>. – Pomogliśmy nowym kolegom. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
Jeśli w zdaniu jest więcej niż jeden przymiotnik, który opisuje rzeczownik, to tylko ten pierwszy ma formę celownika, a drugi przymiotnik tak jak rzeczownik przyjmuje formę biernika, np. ''As asma en nawwasmu, debīkan buweīnan'' (Jestem w nowym, dużym mieszkaniu).
ck8jly7nyvzch7teqdssc199skyqh7i
542735
542734
2026-05-12T19:10:07Z
Aklbmd164
37133
/* Połączenie czasownik łącznikowego z przymiotnikiem */
542735
wikitext
text/x-wiki
'''<big>Lakciōni 30</big>'''
== Odmiana przymiotników ==
Przymiotniki odmieniają się według schematów od <25> do <31>. Na dzisiejszej lekcji poznasz schematy <25> i <26>, które mają podobną odmianę jak rzeczowniki.
== <25> ==
Tym schematem odmieniają się przymiotniki zakończone spółgłoską + literą ''s'' oraz przymiotniki zakończone na ''-iskas''.
* Przykład odmiany ''debīks'' (duży):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">s</span>
| debīk<span style="color:red">a</span>
| debīk<span style="color:red">an</span>
|-
| Dopełniacz
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">as</span>
|-
| Celownik
| debīk<span style="color:red">asmu</span>
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">asmu</span>
|-
| Biernik
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| debīk<span style="color:red">ai</span>
| debīk<span style="color:red">as</span>
| debīk<span style="color:red">ai</span>
|-
| Dopełniacz
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
| debīk<span style="color:red">an</span>
|-
| Celownik
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
| debīk<span style="color:red">amans</span>
|-
| Biernik
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
| debīk<span style="color:red">ans</span>
|}
* Przykład odmiany ''na<u>w</u>s'' (nowy):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naw<span style="color:red">s</span>
| na<u>ww</u><span style="color:red">a</span>
| naww<span style="color:red">an</span>
|-
| Dopełniacz
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">as</span>
|-
| Celownik
| naww<span style="color:red">asmu</span>
| naww<span style="color:red">ai</span>
| naww<span style="color:red">asmu</span>
|-
| Biernik
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| naww<span style="color:red">ai</span>
| naww<span style="color:red">as</span>
| naww<span style="color:red">ai</span>
|-
| Dopełniacz
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
| naww<span style="color:red">an</span>
|-
| Celownik
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
| naww<span style="color:red">amans</span>
|-
| Biernik
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
| naww<span style="color:red">ans</span>
|}
Wskazówka: Mimo wielu form zauważ, że w odmianie <25> formy rodzaju męskiego i nijakiego (oprócz mianownika l. pojedynczej) są identyczne. Podobnie jest ze wszystkimi formami l. mnogiej bez względu na rodzaj – różnią się tylko formy mianownika.
== <26> ==
Tym schematem odmieniają się często używane przymiotniki zakończone spółgłoską + literą ''s''.
* Przykład odmiany ''wārgs'' (zły):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| wārg<span style="color:red">s</span>
| warg<span style="color:red">ā</span>
| wārg<span style="color:red">an</span>
|-
| Dopełniacz
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
| wārg<span style="color:red">as</span>
|-
| Celownik
| warg<span style="color:red">àsmu</span>
| wārg<span style="color:red">ai</span>
| warg<span style="color:red">àsmu</span>
|-
| Biernik
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| warg<span style="color:red">āi</span>
| wārg<span style="color:red">as</span>
| warg<span style="color:red">āi</span>
|-
| Dopełniacz
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
| wārg<span style="color:red">an</span>
|-
| Celownik
| warg<span style="color:red">ammans</span>
| warg<span style="color:red">āmans</span>
| warg<span style="color:red">ammans</span>
|-
| Biernik
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
| wārg<span style="color:red">ans</span>
|}
* Przykład odmiany ''la<u>b</u>s'' (dobry):
{| class="wikitable"
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba pojedyncza</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">s</span>
| lab<span style="color:red">ā</span>
| la<u>bb</u></span><span style="color:red">an</span>
|-
| Dopełniacz
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
| labb<span style="color:red">as</span>
|-
| Celownik
| lab<span style="color:red">àsmu</span>
| labb<span style="color:red">ai</span>
| lab<span style="color:red">àsmu</span>
|-
| Biernik
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
! rowspan=2 |
! colspan=3 |<span style="font-weight: normal;">Liczba mnoga</span>
|-
! <span style="font-weight: normal;">Rodzaj męski</span> !!<span style="font-weight: normal;">Rodzaj żeński</span> !!<span style="font-weight: normal;">Rodzaj nijaki</span>
|-
| Mianownik
| lab<span style="color:red">āi</span>
| labb<span style="color:red">as</span>
| lab<span style="color:red">āi</span>
|-
| Dopełniacz
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
| labb<span style="color:red">an</span>
|-
| Celownik
| lab<span style="color:red">ammans</span>
| lab<span style="color:red">āmans</span>
| lab<span style="color:red">ammans</span>
|-
| Biernik
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
| labb<span style="color:red">ans</span>
|}
== Połączenie czasownik łącznikowego z przymiotnikiem ==
Jeśli przymiotnik nie stoi przed rzeczownikiem, ale jest w zdaniu po czasowniku łącznikowym (np. ''być'', ''zostać''), to wtedy zawsze jest w formie rodzaju nijakiego l. pojedynczej, np.:
* Šis zmūi ast labban (błąd: Šis zmūi ast <span style="text-decoration: line-through red;">labs</span>.)
* Jūs astei gaūdran (błąd: Jūs astei <span style="text-decoration: line-through red;">gaudrāi/gaūdras</span>.)
* Āukruwja pastāi gūztan (błąd: Āukruwja pastāi <span style="text-decoration: line-through red;">guztā</span>.)
* Mes pastāimai papaikītan (błąd: Mes pastāimai <span style="text-decoration: line-through red;">papaikitāi/papaikītas</span>.)
== Połączenie przymiotnika z rzeczownikiem w celowniku ==
W połączeniach przymiotnika z rzeczownikiem w celowniku, rzeczownik traci formę celownika i przyjmuje formę biernika, np.:
* Mes asmai en <u>nawwasmu buweīnan</u>. – Jesteśmy w nowym mieszkaniu. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
* Mes pagalbamai <u>nawwamans kōlagins</u>. – Pomogliśmy nowym kolegom. (przymiotnik jest w celowniku, a rzeczownik w bierniku)
Jeśli w zdaniu jest więcej niż jeden przymiotnik, który opisuje rzeczownik, to tylko ten pierwszy ma formę celownika, a drugi przymiotnik tak jak rzeczownik przyjmuje formę biernika, np. ''As asma en nawwasmu, debīkan buweīnan'' (Jestem w nowym, dużym mieszkaniu).
itf285kuik2jp331xege8h108f3b1cv
Wikipedysta:Persino/brudnopis11
2
62939
542773
542342
2026-05-13T10:11:45Z
Persino
2851
542773
wikitext
text/x-wiki
{{Nowiki|{{Link wewnętrzny|strona=Pomoc:Spis treści|uri=tak}}}}
----
{{Nowiki|{{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}}}}
----
{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}
----
{{WydobądźLinki|{{lg|Pomoc%3ASpis%20tre%C5%9Bci|uri=tak}}}}
{{PobierzNumerArtykułu|Muzyka|dane=3|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Estoński/Muzyka}}
---
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Szablony edycji - błędy wywołań}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do obiektów}}}}
----
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brak licencji, na stronach głównych, publikacji}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Brakujące spisy treści, dołączonych do stron, stron w innych książkach}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z dołączonymi innymi stronami, w książkach, z obiektami ze złymi uchwytami}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony z wypowiedzeniami ze złymi uchwytami}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Strony ze złymi uchwytami do nagłówków}}}}
{{Nowiki|{{Kategoria|Szablony, tworzące linki, do sprawdzenia|nazwa jednostki=Artykusły2 dla dzieci2, ze złymi uchwytami do nagłówków}}}}
{{sr|#m["PEŁNANAZWAKSIĄŻKI"]()|p=Nazwy - Tom IV}}
{{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=}}}}
{{Nowiki|{{lpg|Stołeczne Terytorium Islamabadu|a=tak}}}}
----
{{#invoke:Pudełko|Nazwa przedmiotowa jednostki 3|nazwa przestrzeni nazw 2=Dyskusja|nazwa jednostki 2=Wikibooks:Strona|numer jednostki=2}}
----
{{#invoke:Pudełko|Typ jednostki|typ jednostki=podręcznik dyskusji|dyskusja typu jednostki=}}
{{DNUinfo|nazwa przestrzeni nazw=MojaPrzestrzeń}}
== tytan ==
{{Śródtytuł|tytan}}
{{PobierzNumerArtykułu|Podziękowania|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Mykowirusy – wirusy infekujące grzyby/Podziękowania}}
4yxr6o7b4adzcomqr58n9iphxdao5kz
Moduł:Szeregi
828
63011
542720
540221
2026-05-12T17:34:26Z
Persino
2851
542720
Scribunto
text/plain
local p={};
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
if((not numer_a)or(not numer_b))then return nil;end;
local tak;local ile;
if(funkcja_wzor)then
tak,ile=funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);
else
tak,ile=funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);
end;
if(tak)then
numer=numer_a+(ile or 1);
return p.WyszukiwanieNaPodstawieWzorca(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor);
end;
return numer_a,numer_b,a,b,c,d,e,f,g,h,i;
end;
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)
local wynik={};
local numer_begin=0;
local czy=true;
local __wzor;
local ile_wyszukan=0;
local licznik_wzor=nil;
while(true)do
numer_begin=numer_begin+1;
if((funkcja_wzor)and(czy))then
licznik_wzor=licznik_wzor or 1;
__wzor,czy=funkcja_wzor(wzor,licznik_wzor,czy);
__wzor=__wzor or wzor;
elseif(czy)then
__wzor=wzor;
czy=false;
end;
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=p.WyszukiwanieNaPodstawieWzorca(szereg,__wzor,numer_begin,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor);
if((numer_a)and(numer_b)and(numer_a<=numer_b)and(numer_a>=numer_begin))then
if(numer_a>1)then
table.insert(wynik,mw.ustring.sub(szereg,numer_begin,numer_a-1));
end;
local ciag;
if(funkcja_wzor)then ciag=funkcja_zamiana(licznik_wzor,a,b,c,d,e,f,g,h,i); else ciag=funkcja_zamiana(a,b,c,d,e,f,g,h,i);end;
if(ciag)then
table.insert(wynik,ciag);
else
table.insert(wynik,mw.ustring.sub(szereg,numer_a,numer_b));
end;
numer_begin=numer_b;
ile_wyszukan=ile_wyszukan+1;
else
if(funkcja_wzor)then
if(not czy)then
break;
else
numer_begin=numer_begin-1;
if(funkcja_licznik)then
licznik_wzor=funkcja_licznik(wzor,licznik_wzor,numer_begin);
else
licznik_wzor=licznik_wzor+1;
end;
end;
else
break;
end;
end;
end;
local dlugosc=mw.ustring.len(szereg);
if(dlugosc>=numer_begin)then
table.insert(wynik,mw.ustring.sub(szereg,numer_begin,dlugosc));
end;
return table.concat(wynik,""),ile_wyszukan;
end;
function p.IteratorLiniiTekstu(tekst)
local poczatek=true;
local zakonczone=false;
local iterator=nil;
----
return function()
if(not zakonczone)then
if(poczatek)then
local str=mw.ustring.match(tekst,"^([^\n]*)");
poczatek=false;
return str;
else
iterator=iterator or mw.ustring.gmatch(tekst,"\n([^\n]*)");
local wartosc=iterator();
if(not wartosc)then zakonczone=true;end;
return wartosc;
end;
else
return nil;
end;
end;
end;
function p.ZamianaZnakowaLinii(szereg,funkcja)
local tab_tekst={};
local iter_main=p.IteratorLiniiTekstu(szereg);
for linia in iter_main do
linia=funkcja(linia) or linia;
table.insert(tab_tekst,linia);
end;
return table.concat(tab_tekst,"\n");
end;
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)
if(not normalnie)then
tekst=funkcja and funkcja(tekst) or tekst;
return tekst;
end;
local ile1;local pozycja1;local pozycja2=0;
local tab_str={};
local pozycja_temp;
wzor="(.-)"..wzor;
while(true)do
local ciag;local kod_1;local kod_2;local kod_3;local kod_4;local kod_5;local kod_6;local kod_7;local kod_8;
pozycja1,pozycja2,ciag,kod_1,kod_2,kod_3,kod_4,kod_5,kod_6,kod_7,kod_8=mw.ustring.find(tekst,wzor,pozycja2+1);
if((pozycja1)and(pozycja2)and(pozycja1<pozycja2))then
pozycja_temp=pozycja2;
ciag=funkcja and funkcja(ciag) or ciag;
ciag=ciag..(funkcja2 and funkcja2(kod_1,kod_2,kod_3,kod_4,kod_5,kod_6,kod_7,kod_8) or kod_1 or "");
table.insert(tab_str,ciag);
else
break;
end;
end;
pozycja_temp=pozycja_temp or 0;
local pozycja1,pozycja2,ciag=mw.ustring.find(tekst,"(.-)$",pozycja_temp+1);
if((pozycja1)and(pozycja2)and(pozycja1<=pozycja2))then
ciag=funkcja and funkcja(ciag) or ciag;
table.insert(tab_str,ciag);
end;
local str=table.concat(tab_str,"");
return str;
end;
return p;
ibz1759abvysw20abm038hukpi0d0x7
Wikibooks:Moduły/Szeregi
4
63251
542716
542621
2026-05-12T17:14:24Z
Persino
2851
/* {{Code|p.ZamianaZnakowaSzeregu}} */
542716
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_wyszukiwanie,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_wyszukiwanie}} - sprawdza, czy wyszukany ciąg zawiera pewny eleement, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_wyszukiwanie(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_wyszukiwanie(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|licznik_wzor}} - licznik wykorzystywana w ciele funkcji {{Code|funkcja_wyszukiwanie}}.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych przez funkcję {{Code|szeregi_modul.WyszukiwanieNaPodstawieWzorca}}:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji funkcji: {{Code|p.WyszukiwanieNaPodstawieWzorca}}.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_wyszukiwanie,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_wyszukiwanie}} - sprawdza, czy wyszukany ciąg zawiera pewny eleement, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_wyszukiwanie(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_wyszukiwanie(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstui operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sw8dfq6e7pq9keloqdropco2qcwkssp
542717
542716
2026-05-12T17:15:35Z
Persino
2851
/* {{Code|p.ZamianaZnakowaSzeregu}} */
542717
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_wyszukiwanie,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_wyszukiwanie}} - sprawdza, czy wyszukany ciąg zawiera pewny eleement, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_wyszukiwanie(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_wyszukiwanie(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|licznik_wzor}} - licznik wykorzystywana w ciele funkcji {{Code|funkcja_wyszukiwanie}}.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych przez funkcję {{Code|szeregi_modul.WyszukiwanieNaPodstawieWzorca}}:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji funkcji: {{Code|p.WyszukiwanieNaPodstawieWzorca}}.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_wyszukiwanie,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_wyszukiwanie}} - sprawdza, czy wyszukany ciąg zawiera pewny eleement, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_wyszukiwanie(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_wyszukiwanie(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstui operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9at3elh477tecv7h6ja1p74r82uts8s
542718
542717
2026-05-12T17:18:17Z
Persino
2851
542718
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_wyszukiwanie,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_wyszukiwanie}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_wyszukiwanie(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_wyszukiwanie(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|licznik_wzor}} - licznik wykorzystywana w ciele funkcji {{Code|funkcja_wyszukiwanie}}.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych przez funkcję {{Code|szeregi_modul.WyszukiwanieNaPodstawieWzorca}}:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji funkcji: {{Code|p.WyszukiwanieNaPodstawieWzorca}}.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_wyszukiwanie,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_wyszukiwanie}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_wyszukiwanie(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_wyszukiwanie(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstui operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
anhrjmhpfa2ptj4rpfsoiaj2scu9uks
542719
542718
2026-05-12T17:33:37Z
Persino
2851
542719
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|licznik_wzor}} - licznik wykorzystywana w ciele funkcji {{Code|funkcja_sprawdzanie_wyszukania}}.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych przez funkcję {{Code|szeregi_modul.WyszukiwanieNaPodstawieWzorca}}:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji funkcji: {{Code|p.WyszukiwanieNaPodstawieWzorca}}.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstui operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bnvweuoe5a4l9efl2e2phgh9dagqxib
542721
542719
2026-05-12T17:37:53Z
Persino
2851
/* {{Code|p.WyszukiwanieNaPodstawieWzorca}} */
542721
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|licznik_wzor}} - licznik wykorzystywana w ciele funkcji {{Code|funkcja_sprawdzanie_wyszukania}}.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych przez funkcję {{Code|szeregi_modul.WyszukiwanieNaPodstawieWzorca}}:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji omawianej funkcji.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalejma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstui operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
a9f73ktm5tdk1njn11ulrinc3uby7u1
542722
542721
2026-05-12T18:01:10Z
Persino
2851
542722
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_sprawdzanie_wyszukania}} - jak w: {{LinkPatrz|funkcja_sprawdzanie_wyszukania}},
* {{Code|funkcja_wzor}} - jak w: {{LinkPatrz|funkcja_wzor}},
* {{Code|licznik_wzor}} - licznik wykorzystywany w ciele funkcji: {{Code|funkcja_sprawdzanie_wyszukania}}, gdy parametr: {{Code|funkcja_wzor}}, nie jest: {{Code|nil}}, tylko funkcją.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych przez funkcję {{Code|szeregi_modul.WyszukiwanieNaPodstawieWzorca}}:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji omawianej funkcji.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_sprawdzanie_wyszukania}} {{Patrz|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} {{Patrz|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalej ma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstui operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nl2vsn9izcl0oinkw2p1ce627n44tn0
542723
542722
2026-05-12T18:04:54Z
Persino
2851
542723
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Śródtytuł|WyszukiwanieNaPodstawieWzorca}}{{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_sprawdzanie_wyszukania}} - jak w: {{LinkPatrz|funkcja_sprawdzanie_wyszukania}},
* {{Code|funkcja_wzor}} - jak w: {{LinkPatrz|funkcja_wzor}},
* {{Code|licznik_wzor}} - licznik wykorzystywany w ciele funkcji: {{Code|funkcja_sprawdzanie_wyszukania}}, gdy parametr: {{Code|funkcja_wzor}}, nie jest: {{Code|nil}}, tylko funkcją.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych przez funkcję {{Code|szeregi_modul.WyszukiwanieNaPodstawieWzorca}}:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji omawianej funkcji.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_sprawdzanie_wyszukania}} {{Patrz|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} {{Patrz|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalej ma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Funkcja wykorzystuje do działania: {{LinkŚródtytuł|WyszukiwanieNaPodstawieWzorca}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstui operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bk3tat5njf4l0nzvz5n5xk473x3glw7
542724
542723
2026-05-12T18:07:58Z
Persino
2851
/* {{Śródtytuł|WyszukiwanieNaPodstawieWzorca}}{{Code|p.WyszukiwanieNaPodstawieWzorca}} */
542724
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Śródtytuł|WyszukiwanieNaPodstawieWzorca}}{{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_sprawdzanie_wyszukania}} - jak w: {{LinkPatrz|funkcja_sprawdzanie_wyszukania}},
* {{Code|funkcja_wzor}} - jak w: {{LinkPatrz|funkcja_wzor}},
* {{Code|licznik_wzor}} - licznik wykorzystywany w ciele funkcji: {{Code|funkcja_sprawdzanie_wyszukania}}, gdy parametr: {{Code|funkcja_wzor}}, nie jest: {{Code|nil}}, tylko funkcją.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych w przykładzie:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji omawianej funkcji.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_sprawdzanie_wyszukania}} {{Patrz|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} {{Patrz|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalej ma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Funkcja wykorzystuje do działania: {{LinkŚródtytuł|WyszukiwanieNaPodstawieWzorca}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstui operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
idli0ev9u5hb5q7uklkl5hi6yct2592
542725
542724
2026-05-12T18:25:02Z
Persino
2851
542725
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Śródtytuł|WyszukiwanieNaPodstawieWzorca}}{{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_sprawdzanie_wyszukania}} - jak w: {{LinkPatrz|funkcja_sprawdzanie_wyszukania}},
* {{Code|funkcja_wzor}} - jak w: {{LinkPatrz|funkcja_wzor}},
* {{Code|licznik_wzor}} - licznik wykorzystywany w ciele funkcji: {{Code|funkcja_sprawdzanie_wyszukania}}, gdy parametr: {{Code|funkcja_wzor}}, nie jest: {{Code|nil}}, tylko funkcją.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych w przykładzie:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji omawianej funkcji.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_sprawdzanie_wyszukania}} {{Patrz|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} {{Patrz|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalej ma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Funkcja wykorzystuje do działania: {{LinkŚródtytuł|WyszukiwanieNaPodstawieWzorca}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstu i operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
tsahpa4kzbyrz38nyvtcupupwheoaz8
542727
542725
2026-05-12T18:32:53Z
Persino
2851
542727
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Śródtytuł|WyszukiwanieNaPodstawieWzorca}}{{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - jak w: {{LinkPatrz|szereg}},
* {{Code|wzor}} - jak w: {{LinkPatrz|wzor}},
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_sprawdzanie_wyszukania}} - jak w: {{LinkPatrz|funkcja_sprawdzanie_wyszukania}},
* {{Code|funkcja_wzor}} - jak w: {{LinkPatrz|funkcja_wzor}},
* {{Code|licznik_wzor}} - licznik wykorzystywany w ciele funkcji: {{Code|funkcja_sprawdzanie_wyszukania}}, gdy parametr: {{Code|funkcja_wzor}}, nie jest: {{Code|nil}}, tylko funkcją.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych w przykładzie:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji omawianej funkcji.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} {{Patrz|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} {{Patrz|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_sprawdzanie_wyszukania}} {{Patrz|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} {{Patrz|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalej ma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Funkcja wykorzystuje do działania: {{LinkŚródtytuł|WyszukiwanieNaPodstawieWzorca}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstu i operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
f2ty87wl85mdczvno4xbvgb0zzrde3x
542728
542727
2026-05-12T18:36:34Z
Persino
2851
542728
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Śródtytuł|WyszukiwanieNaPodstawieWzorca}}{{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - jak w: {{LinkPatrz|szereg}},
* {{Code|wzor}} - jak w: {{LinkPatrz|wzor}},
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_sprawdzanie_wyszukania}} - jak w: {{LinkPatrz|funkcja_sprawdzanie_wyszukania}},
* {{Code|funkcja_wzor}} - jak w: {{LinkPatrz|funkcja_wzor}},
* {{Code|licznik_wzor}} - licznik wykorzystywany w ciele funkcji: {{Code|funkcja_sprawdzanie_wyszukania}}, gdy parametr: {{Code|funkcja_wzor}}, nie jest: {{Code|nil}}, tylko funkcją.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych w przykładzie:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji omawianej funkcji.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} {{Patrz|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} {{Patrz|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_sprawdzanie_wyszukania}} {{Patrz|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} {{Patrz|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalej ma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Funkcja wykorzystuje do działania: {{LinkŚródtytuł|WyszukiwanieNaPodstawieWzorca}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstu i operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Śródtytuł|IteratorLiniiTekstu}}{{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Funkcja korzysta z innej: {{LinkŚródtytuł|IteratorLiniiTekstu}}.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
j6l9pmcedd8nruony90ea216kn8k675
542729
542728
2026-05-12T18:43:46Z
Persino
2851
542729
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Szeregi}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł służy do obsługi na ciągach (szeregach) języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje opisane w module, która opisuje ta dokumentacja, służą do operacji na szeregach, też na wydzielaniu poszczególnych linii i robienia na nich operacji, a także wykonywania operacji naniepomijanych elementach znakowych.
Przykładowe użycie modułu {{Code|{{ld2|Szeregi}}}} jest użyte w module {{Code|{{ld2|Szablonowe/Potrzebne}}}}.
Na te stronie będziemy wchodzili do pliku: {{Code|Moduły/Szeregi}} w przestrzeni nazw: {{Code|Wikibooks}}, ściągając jego zawartość w funkcjach {{Code|{{sr|#p.WyszukiwanieNaPodstawieWzorca|p=Szeregi}}}}, {{Code|{{sr|#p.ZamianaZnakowaSzeregu|p=Szeregi}}}}, {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}} i {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
== {{Śródtytuł|WyszukiwanieNaPodstawieWzorca}}{{Code|p.WyszukiwanieNaPodstawieWzorca}} ==
Funkcja wyszukuje począwszy od miejsca pierwszego (trzeci argument) funkcji, czyli z podwójnymi nawiasami klamrowymi, a jeżeli w nim są początki, np. innych szablonów, to wyszukuje kolejne przykładowe dwa miejsca dalej względem poprzedniego przykładowego wyszukiwania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.WyszukiwanieNaPodstawieWzorca=function(szereg,wzor,numer,funkcja_sprawdzanie_wyszukania,funkcja_wzor,licznik_wzor)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - jak w: {{LinkPatrz|szereg}},
* {{Code|wzor}} - jak w: {{LinkPatrz|wzor}},
* {{Code|numer}} - numer, od którego ma rozpocząc wyszukiwanie,
* {{Code|funkcja_sprawdzanie_wyszukania}} - jak w: {{LinkPatrz|funkcja_sprawdzanie_wyszukania}},
* {{Code|funkcja_wzor}} - jak w: {{LinkPatrz|funkcja_wzor}},
* {{Code|licznik_wzor}} - licznik wykorzystywany w ciele funkcji: {{Code|funkcja_sprawdzanie_wyszukania}}, gdy parametr: {{Code|funkcja_wzor}}, nie jest: {{Code|nil}}, tylko funkcją.
A {{Code|numer}} w czwartym argumencie (funkcji) ten parametr wskazany jest przez trzeci argument, czyli {{Code|1}}, a jeżeli pierwsze wyszukiwanie się nie powiodło się, ona wyszukuje następne, aż do całkowitego niepowodzenia, lub do nieznalezienia następnych ciągów, wtedy jest zwracana wartość {{Code|nil}}, ale przez tym liczba ponownym wyszukań może być dowolna, w zależności od długości tekstu.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(wzor,licznik_wzor,czy)
-- Obojętne jaka definicja, ta funkcja ma definicję, bo w p.ZamianaZnakowaSzeregu jest ona tam potrzebna.
end,1);
</syntaxhighlight>
Opis zmiennych zwracanych w przykładzie:
* {{Code|numer_a}} - początek wyszukania,
* {{Code|numer_b}} - koniec wyszukania,
* {{Code|zawartosc}} i {{Code|dalej}} - zawartość i dalszy element, elementy zwaracane z przechwytywania okazane wzorem {{Code|<nowiki>%{%{(.-)%}%}(%l*)</nowiki>}} za pomocą dwóch części przechwytujących ciągu znakowe.
Funkcja ta zwraca dwa dalsze parametry, najwięcej dalszych parametrów (od {{Code|zawartość}}) może być dziewięć, taka bowiem jest właściwość funkcji:
<syntaxhighlight lang="lua">
local numer_a,numer_b,a,b,c,d,e,f,g,h,i=mw.ustring.find(szereg,wzor,numer);
</syntaxhighlight>
Ta funkcja jest w definicji omawianej funkcji.
Tę funkcję równie dobrze można napisać prościej:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local numer_a,numer_b,zawartosc,dalej=szeregi_modul.WyszukiwanieNaPodstawieWzorca(tekst,"%{%{(.-)%}%}(%l*)",1,
function(tekst,numer,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end
);
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaSzeregu}} ==
Funkcja do podmiany wyszukiwanego tekstu. Wyszukuje tekst wskazany przez pierwszy argument, drugi parametr jako wzór (wyszukuj szablony z podwójnymi nawiasami klamrowymi), a jeżeli ona zawiera początek następnego szablonu (funkcja wskazana przez trzeci argument), to wyszukuje ona dwa miejsca dalej znakowe, czy jest on tym właściwym szablonem bez innych szablonów, których nie ma tam tego. Następnie po wyszukaniu szablonu przez funkcję podaną jako czwarty argument, usuwa w nim odstępy, i robi z niego inny szablon. Funkcja najpierw wyszukuje według piątej funkcji, dla {{Code|licznik_wzor {{=}} 1}}, sprawdza dodatkowo, jakie są małe litery po linku, jeżeli po nim one są tam.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.ZamianaZnakowaSzeregu=function(szereg,wzor,funkcja_sprawdzanie_wyszukania,funkcja_zamiana,funkcja_wzor,funkcja_licznik)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} {{Patrz|szereg}} - szeregi (ciąg znakowy) do przeanalizowania i przetworzenia,
* {{Code|wzor}} {{Patrz|wzor}} - wzór w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} do przeszukiwania ciągów,
* {{Code|funkcja_sprawdzanie_wyszukania}} {{Patrz|funkcja_sprawdzanie_wyszukania}} - sprawdza, czy wyszukany ciąg zawiera pewny element, a jeżeli tak, to tą funkcją w nagłówku powtarzane jest wyszukiwanie aż do skutku, lub do końca szeregu,
* {{Code|funkcja_zamiana}} - funkcja robiąca operacje na wydzielonych ciagach znakowych,
* {{Code|funkcja_wzor}} {{Patrz|funkcja_wzor}} - obecność tej funkcji szugeruje, że trzeba wywołać {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,licznik_wzor,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, w przeciwnym wypadku {{Code|funkcja_sprawdzanie_wyszukania(szereg,numer,numer_a,numer_b,a,b,c,d,e,f,g,h,i);}}, funkcja ta zwraca wartość logiczną w zmiennej {{Code|tak}}, mówiącej, czy powtórzyć wyszukiwanie, i {{Code|ile}}, tzn. ile ddodatkowych wyrazów dalej ma wyszukać,
* {{Code|funkcja_licznik}} - funkcja robiąca operacje na podstawie {{Code|licznik_wzor {{=}} funkcja_licznik(wzor,licznik_wzor,numer_begin);}}, licząca zmienną {{Code|licznik_wzor}}.
Funkcja wykorzystuje do działania: {{LinkŚródtytuł|WyszukiwanieNaPodstawieWzorca}}, w celu wyszukiwanych ciągów.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,licznik_wzor,numer_a,numer_b,zawartosc,dalej)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(licznik_wzor,zawartosc,dalej)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]"..((licznik_wzor==1)and dalej or "");
end,
function(wzor,licznik_wzor,czy)
if(czy)then
if(licznik_wzor==1)then return wzor.."(%l*)",true;end;
end;
return wzor,false;
end,
function(wzor,licznk_wzor,numer_begin)
licznik_wzor=licznik_wzor+1;
return licznik_wzor;
end
);
</syntaxhighlight>
A jeżeli piąty argument (funkcja) nie zostanie podany, a więc i też szósty, bo wtedy on jest niepotrzebny, to w czwartej funkcji argument pierwszy można pominąć, a w pierwszej zmienną trzecią pomijamy, bo w tych funkcjach po prostu ich nie podajemy, wtedy tę funkcję można napisać w uproszczony sposób:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaSzeregu(tekst,"%{%{(.-)%}%}",
function(tekst,numer,numer_a,numer_b,zawartosc)
return mw.ustring.match(zawartosc,"%{%{"),2;
end,
function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"%s+","");
return "[["..zawartosc.."]]";
end
);
</syntaxhighlight>
Ta funkcja zwraca zmodyfikowany tekst uzyskany z omawianej funkcji. Tą funkcję możemy wykorzystać do kodowania dowolnego tekstu i operowania na nim, co jest wykorzystane, nie tylko jako przykładach, ale też jako treściwy kod według tego wspomnianego w tym module powyżej.
== {{Śródtytuł|IteratorLiniiTekstu}}{{Code|p.IteratorLiniiTekstu}} ==
Funkcja uzyskany tekst iteruje linia po linii według iteracji poniżej przy pomocy operacji {{Code|for}}, gdzie tam możemy robić operacje na liniach, by dodać je póżniej do tablicy linia, by je połączyć przy pomocy łącznika {{Code|\n}}. Poniższy kod robi to samo, co przykład dla funkcji {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}, tylko, że dłużej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorLiniiTekstu(tekst)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst, z którego są wydzielane kolejne linie.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_linia={};
for linia in iter do
linia=mw.ustring.gsub(linia,"%s+","");
table.insert(tab_linia,linia);
end;
tekst=table.concat(tab_linia,"\n");
</syntaxhighlight>
== {{Code|p.ZamianaZnakowaLinii}} ==
Funkcja zamienia tekst uzyskany wstawiony do pierwszego argumentu tej funkcji, gdzie poszczególne linie są zmieniane przez anonimową funkcję podaną jako drugi argument. Jeżeli ta funkcja zwraca {{Code|nil}} dla jakieś linii, to ta linia nie jest zmieniana, tylko przypisywana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaZnakowaLinii(szereg,funkcja)...end;
</syntaxhighlight>
Parametry:
* {{Code|szereg}} - szereg do przetworzenia, z którego są wydzielane kolejne linie i są robione na nich pewne operacje,
* {{Code|funkcja}} - funkcja robiąca operacje na kolenych liniach, nawet pustych.
Funkcja korzysta z innej: {{LinkŚródtytuł|IteratorLiniiTekstu}}, w celu uzyskiwania kolejnych linii tekstu, linie są oddzielone znakiem: {{Code|\n}}, w ogólnym podanym tekście.
Przykład wywołania:
<syntaxhighlight lang="lua">
local title=mw.title.makeTitle("Wikibooks","Moduły/Szeregi");
local tekst=title:getContent();
local szeregi_modul=require("Module:Szeregi");
tekst=szeregi_modul.ZamianaZnakowaLinii(tekst,function(linia)
local linia,ile=mw.ustring.gsub(linia,"%s+","");
if(ile>0)then return linia;end;
return nil;
end);
</syntaxhighlight>
Ta funkcja usuwa wszystkie odstępy w liniach, ale nie pomiędzy liniami.
== {{Code|p.SzeregiOmijanieFunkcyjne}} ==
Funkcja do operacji na szeregach (ciągach), przy pomocy pewnej funkcji, z pominięciem pewnych ciągów określonym, jako opisywanym przez wzór (zmienna {{Code|wzor}}), podanym do parametru funkcji z operacją na nich podanym jako druga funkcja {{Code|funkcja2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzeregiOmijanieFunkcyjne(tekst,normalnie,wzor,funkcja,funkcja2)...end;
</syntaxhighlight>
Parametry:
* {{Code|tekst}} - tekst do przetworzenia, omijając pewne elementy lub nie, jeżeli drugi element odpowiada wartości logicznej {{Code|false}},
* {{Code|normalnie}} - czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi,
* {{Code|wzor}} - wzór do elementów pomijanych, wzór może mieć do ośmiu elementów przechwytywanych,
* {{Code|funkcja}} - funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych,
* {{Code|funkcja2}} - co ma robić z częściami elementów pomijanych, czyli z elementami przechwytywanymi, funkcja przyjmuje do ośmiu parametrów przechwytywania w podanym wzorze {{Code|wzor}}.
Przykład:
<syntaxhighlight lang="lua">
local szeregi_modul=require("Module:Szeregi");
local tekst="Oto jest tekst wywołania: \"#\"";
-- Elementem omijanym jest "#";
local tekst2=szeregi_modul.SzeregiOmijanieFunkcyjne(tekst,true,"&(#35);",function(tekst)
return mw.uri.encode(tekst);
end,
function(kod)
-- Operacje robione na przechwytywanym ciągu, tzn. z dodawaniem prefiksu początkowego i końcowego;
return "&"..kod..";";
end);
</syntaxhighlight>
Wynik jest:
<syntaxhighlight lang="lua">
-- Widzimy tutaj elementy zakodowane funkcją mw.uri.encode bez elementu omijanego "#";
local tekst2="Oto+jest+tekst+wywo%C5%82ania%3A+%22#%22";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
syigb0a3fw7sldsks49smtejfkc5b7x
Wikibooks:Moduły/Parametry
4
63291
542706
542693
2026-05-12T14:36:19Z
Persino
2851
/* {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} */
542706
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={["nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowp funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](table,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"}=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabelka_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
o6opawp7l7dlrfqcq3flbhk5b06mnyy
542707
542706
2026-05-12T14:51:10Z
Persino
2851
/* {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} */
542707
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={["nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowp funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](table,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabelka_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6k4qexb9yuygk65auq0l4b5f6f5gmne
542708
542707
2026-05-12T14:53:56Z
Persino
2851
/* {{Code|p["CzySąElementyNumerowaneTablicy"]}} */
542708
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={["nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowp funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabelka_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ctbgwswhyypnebz14jpc0nz7axcua49
542709
542708
2026-05-12T15:24:09Z
Persino
2851
/* Łączenie wielu tabel */
542709
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={["nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowp funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabelka_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
i3zaapp96e9nuyp54gb6jc2c8czdynf
542710
542709
2026-05-12T16:05:31Z
Persino
2851
/* {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} */
542710
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={["nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowp funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabelka_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
66laque5h9blnrfpqf2dzg6pjkn3otu
542711
542710
2026-05-12T16:11:52Z
Persino
2851
/* {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} */
542711
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={["nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowp funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyżej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9npi7m8gj8d9fjq1u0lfluv0zbamweo
542712
542711
2026-05-12T16:18:59Z
Persino
2851
/* {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} */
542712
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={["nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowp funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
j8we2m62od5b5pre5ybbvoul9rgp8py
542713
542712
2026-05-12T16:26:31Z
Persino
2851
/* {{Code|p["LiczbaElementówNumerowanychTablicy"]}} */
542713
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowp funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3z2qqp6vhvi61s4bpghq5vq1tbwmbpk
542714
542713
2026-05-12T16:39:58Z
Persino
2851
/* Funkcje, czy są takie parametry */
542714
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwaa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypaadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowo funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypaadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
eii0dtfoxj6p9q606n33ec50b0eepvd
542715
542714
2026-05-12T16:51:10Z
Persino
2851
542715
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowo funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji. Funkcja też kopiuje dokładnie również metafunkcje, na razie to jest przygotowane tylko dla jednych z nich, tzn. ona jest zdefiniowana {{ld2|Szablonowe/Potrzebne}}, i nazwana jest ona jako: {{Code|{{sr|#p.MetaTabelkaSzablonowe(__metatablica)|p=Szablonowe/Potrzebne}}}}, w niej musi istnieć składowa tej metatablicy o kluczu {{Code|tablica}}, w której są przechowywane elementy o jakiś kluczach i ich wartościach, właściwa do niego tabela jest zawsze pusta, a ta tabela należąca do metatabelki powiązana z tą tabelą natomiast nie ona taka, ona jest wykorzystywana do liczenia elementów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy(t)}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fjqotmy6ycihefjm067geo9nslzej91
Wikibooks:Moduły/StronicowyParser/Rozdziały
4
63521
542705
542657
2026-05-12T14:22:27Z
Persino
2851
/* {{Code|p.NapisWprowadzeniaTekstu}} */
542705
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
k3ntjwzx4p1o92781g0a29j7yf7od7f
542744
542705
2026-05-13T06:45:41Z
Persino
2851
/* {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} */
542744
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1==== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1=* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}}:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
95guicu3w8h8zu9he155xznefqzpqc5
542745
542744
2026-05-13T06:46:59Z
Persino
2851
/* {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} */
542745
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1==== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1=* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sfecbr381xu2nk5zzzyh7xo4e70sbba
542746
542745
2026-05-13T06:49:55Z
Persino
2851
/* {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} */
542746
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1==== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1=* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
o5dz71l0ww8yhqcfzairw25bsymlveq
542747
542746
2026-05-13T07:06:44Z
Persino
2851
/* {{Code|p.NapisWprowadzeniaTekstuHNumer}} */
542747
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1==== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1=* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<=6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Funkcja zamienia to koljeno je na:
<syntaxhighlight lang="lua">
<h3>Nagłówek tekstu</h3>
<h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6>
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fbi6l0ij0fyw0e7zy7n11jkfuf7eogh
542748
542747
2026-05-13T07:07:07Z
Persino
2851
/* {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} */
542748
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<=6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Funkcja zamienia to koljeno je na:
<syntaxhighlight lang="lua">
<h3>Nagłówek tekstu</h3>
<h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6>
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3e4r48rgqncxe98xw6kzdhiob180l48
542749
542748
2026-05-13T07:07:34Z
Persino
2851
/* {{Code|p.NapisWprowadzeniaTekstuHNumer}} */
542749
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<=6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Funkcja zamienia to koljeno je na:
<syntaxhighlight lang="mediawiki">
<h3>Nagłówek tekstu</h3>
<h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6>
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
so6fwlakaofx1rrti77djwha2v4j9ji
542751
542749
2026-05-13T07:14:25Z
Persino
2851
/* {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} */
542751
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<=6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Funkcja zamienia to koljeno je na:
<syntaxhighlight lang="mediawiki">
<h3>Nagłówek tekstu</h3>
<h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6>
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hmycn2ct7tpn2p9b7dbp8abtk47x8rg
542752
542751
2026-05-13T07:20:43Z
Persino
2851
/* {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} */
542752
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<=6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Funkcja zamienia to koljeno je na:
<syntaxhighlight lang="mediawiki">
<h3>Nagłówek tekstu</h3>
<h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6>
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np. {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom,jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gy7kx1cghjwzyyaasbq5wth57ns4qp4
542753
542752
2026-05-13T07:26:31Z
Persino
2851
/* {{Code|p.NapisWprowadzeniaTekstuHNumer}} */
542753
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<=6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np. {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom,jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
76w80ohichhzjfcrv0iyz1kxvk0k9i0
542754
542753
2026-05-13T07:30:35Z
Persino
2851
/* {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} */
542754
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<=6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np. {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom,jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bbbtx1xizbno73oal562poa6j7mjj0e
542755
542754
2026-05-13T07:32:26Z
Persino
2851
/* {{Code|p.NapisWprowadzeniaTekstuHNumer}} */
542755
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np. {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom,jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
k62pvfvag8oinepvko08nfwdrxaw9x1
542756
542755
2026-05-13T07:33:08Z
Persino
2851
/* {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} */
542756
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
t6vjdijl9q5nrgx4bcr20o3jqttgj4b
542757
542756
2026-05-13T07:45:37Z
Persino
2851
/* {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} */
542757
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h6>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
99larjhfttamfou6az4lcog8m421pzu
542758
542757
2026-05-13T07:55:22Z
Persino
2851
/* {{Code|p.CzyJestNapisWprowadzeniaTekstu}} */
542758
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h6>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r70z2zdl2ji8k1uv4pfvg909sj4u46v
542759
542758
2026-05-13T08:10:10Z
Persino
2851
/* {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} */
542759
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h6>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
f1860g7ch46dne2r02i8kdodlzyi9p7
542761
542759
2026-05-13T08:28:11Z
Persino
2851
/* {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} */
542761
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h6>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lyxrexvp61hxhpzknfq6544ci8kb3sg
542762
542761
2026-05-13T08:28:45Z
Persino
2851
/* {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} */
542762
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rzfome9t8qtrie2aw8vha6noygls7dr
542764
542762
2026-05-13T08:41:27Z
Persino
2851
/* {{Code|p.WierszHNumer}} */
542764
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst<h2>Tekst nagłówka Dalej Tekst nagłówka</h2> Tekst rozdziału <h3>Tekst nagłówka Dalszy nagłówek</h3>";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
djyjf0dc8keaw4s4dumxqpuzxl95xaz
542765
542764
2026-05-13T08:44:04Z
Persino
2851
/* {{Code|p.WierszHNumer}} */
542765
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Funkcja używa: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}} i {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst<h2>Tekst nagłówka Dalej Tekst nagłówka</h2> Tekst rozdziału <h3>Tekst nagłówka Dalszy nagłówek</h3>";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
aj1p0ggxnvw5j63136hz399phmmywfu
542766
542765
2026-05-13T08:44:31Z
Persino
2851
/* {{Code|p.WierszHNumer}} */
542766
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Funkcja używa: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}} i {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst<h2>Tekst nagłówka Dalej Tekst nagłówka</h2> Tekst rozdziału <h3>Tekst nagłówka Dalszy nagłówek</h3>";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6jck9wp9bzbzhuqtt69wam5um92260l
542767
542766
2026-05-13T08:54:17Z
Persino
2851
/* {{Code|p.WierszHNumer}} */
542767
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Funkcja używa: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}} i {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst<h2>Tekst nagłówka Dalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka Dalszy nagłówek</h3>";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nuqgi0v8t3s1grx39hv4g6bsobfqyre
542768
542767
2026-05-13T08:56:18Z
Persino
2851
/* {{Code|p.WierszHNumer}} */
542768
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Funkcja używa: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}} i {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9d6ql3a48bvplrd9zvnwzdb7312qs6e
542769
542768
2026-05-13T09:37:45Z
Persino
2851
/* {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} */
542769
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Funkcja używa: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}} i {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawwie artykułu spisu treści, czy to jest link artykularny, które generują linki, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}}, {{s|Sr}}, {{s|Link wewnętrzny}}, {{s|LinkOgólne}} i {{s|Lo}}, albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, bądź linki inteligentne artykułów sprawdzane prrzy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełny adres spisu treści,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów elementów bazy.
Funkcja wykorzystuje: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}} i {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}}.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1x7iwqscmcsapzb1fled3pwfvtuce4t
542770
542769
2026-05-13T09:38:54Z
Persino
2851
/* {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} */
542770
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Funkcja używa: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}} i {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawwie artykułu spisu treści, czy to jest link artykularny, które generują linki, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}}, {{s|Sr}}, {{s|Link wewnętrzny}}, {{s|LinkOgólne}} i {{s|Lo}}, albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, bądź linki inteligentne artykułów sprawdzane prrzy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełny adres spisu treści,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów elementów bazy.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}},
* {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}}.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
alphof2q525n0vgkun0z94qi7157enr
542771
542770
2026-05-13T09:50:40Z
Persino
2851
/* {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} */
542771
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Funkcja używa: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}} i {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawwie artykułu spisu treści, czy to są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}}, {{s|Sr}} (skrót do: {{s|Sekcja referencyjna}}), {{s|Link wewnętrzny}}, {{s|LinkOgólne}} i {{s|Lo}} (skrót do: {{s|LinkOgólne}}), albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, bądź szablony linków inteligentnych, ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełny adres spisu treści,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów elementów bazy.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}},
* {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}}.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7nmicz37rl0myy0tilpo5s5yx5qkb21
542772
542771
2026-05-13T09:58:30Z
Persino
2851
/* {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} */
542772
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden tworzy nagłówek, np.: {{Code|{{=}}{{=}}nagłówek{{=}}{{=}}}}, a dla większego niż sześć tworzy je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">nagłówek</h6></nowiki>}}. Gdy {{Code|0<poziom<{{=}}6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótow funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} i {{Code|kod}}, który nie zawiera w sobie żadnej nowej linii.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno:
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwwraca wartość: {{Code|true}}, pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany.
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0<poziom<{{=}}6}} poziomów, np.: {{Code|{{=}}{{=}}Nagłówek{{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom>6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni.
Przykłady użycia:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego, tzn. o liczbie równa się dobrowolnej, np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, podaje jego zawartość i pozziom, jako dwa kolejne parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem tego jest:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca liczbę {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym początkowym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje czy w podanym tekście jest jakikolwiek nagłówek dodatni w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Otojest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się odnowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca artość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzające, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}} i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Funkcja używa: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}} i {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Wyniki użycia:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawwie artykułu spisu treści, czy to są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}}, {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, bądź szablony linków inteligentnych, ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - pełny adres spisu treści,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów elementów bazy.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}},
* {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}}.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu}} ==
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
== {{Code|p.NumerSekcjiStrony}} ==
== {{Code|p.TekstWprowadzeniaTekstu}} ==
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
== {{Code|p.IterTekst}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9blykasw13w4x7ijmb7vzvn7ulh10tu