Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.22 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 Moduł:Cytuj 828 31187 557998 556532 2026-09-29T17:34:55Z Persino 2851 557998 Scribunto text/plain local resources = mw.loadData("Moduł:Cytuj/dane") local access = mw.loadData("Moduł:Cytuj/dostęp") local function createCategories() local result = {} local mt = { __index = function(t,k) return resources.categories[k] or resources.categories.check end, __newindex = function(t,k,v) error("Kategorie są tylko do odczytu") end, } setmetatable(result, mt) return result end local categories = createCategories() local function killLinkInterwiki(value) -- usuń z treści wikilinki generowane przez szablon link-interwiki -- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia" local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "") return result end local function softNoWiki(text) local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = "&#x22;", ["'"] = "&#x27;", ["["] = "&#x5B;", ["]"] = "&#x5D;", ["{"] = "&#x7B;", ["|"] = "&#x7C;", ["}"] = "&#x7D;"}) -- przywróc [[szablon:J]] z kursywą tak/nie result, count = string.gsub(result, "<span +style=&#x22;font%-style: ?([a-z]+);?&#x22; +lang=&#x22;([a-z%-]+)&#x22; *>", "<span style=\"font-style: %1;\" lang=\"%2\">") -- przywróc [[szablon:J]] goły result, count = string.gsub(result, "<span +lang=&#x22;([a-z%-]+)&#x22; *>", "<span lang=\"%1\">") -- przywróć nowiki result, count = string.gsub(result, "\127&#x27;&#x22;`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`&#x22;&#x27;\127", "\127'\"`UNIQ--%1-QINU`\"'\127") return result end local function escapeUrl(url) local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"}) return result end local function plainText(text) local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "") return result end local function first(data) return type(data) == "table" and data[1] or data end local function determineMode(p) local detector = {} local count = 0 for i, v in ipairs(resources.modes) do detector[i] = v count = count + 1 end detector[1] = false -- skip 'auto' count = count - 1 for k, v in pairs(resources.params) do local arg = p.args[v.name] for i, w in ipairs(v.used) do if not w and arg then -- unexpected argument if detector[i] then detector[i] = false count = count - 1 if count == 0 then -- the mode cannot be determined break end end end end if count == 0 then -- the mode cannot be determined break end end if count == 1 then for i, v in ipairs(detector) do if detector[i] then return i, resources.COinS[i] end end end if detector[4] -- web? and p.args[resources.params.url.name] then -- promote to web but without COinS return 4, false end for i, v in ipairs(detector) do if detector[i] then -- if type is determined more than once -- use only the first one without COinS return i, false end end -- in case nothing is selected -- use the auto mode as default fallback return 1 end local authorMetatable = {} local authorMethodtable = {} authorMetatable.__index = authorMethodtable local function checkPatterns(author, prefixes, suffixes) if author.exact then return false end if author.prefix and prefixes then for _, v in ipairs(prefixes) do if mw.ustring.match(author.prefix, v) then return true end end end if author.suffix and suffixes then for _, v in ipairs(suffixes) do if mw.ustring.match(author.suffix, v) then return true end end end return false end authorMethodtable.format = function(data, namefirst) if data.exact then return data.exact end if namefirst and data.familynamefirst then namefirst = false end local builder = mw.html.create() local name = data.name and (#data.name > 0) local initials = data.nameinitials and (#data.nameinitials > 0) local namehint = nil if name and initials and (data.name ~= data.nameinitials) then namehint = data.name end if not data.familynamefirst and (name or initials) then local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before") if name then before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end before:wikitext("&nbsp;") end builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname)) if not namefirst and (name or initials) then local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after") after:wikitext("&nbsp;") if name then after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end if data.js then after:wikitext(",") end end if data.js then builder:wikitext("&nbsp;", data.js) end return tostring(builder) end authorMethodtable.towiki = function(data) if data.exact then return data.exact end local result = {} local name = data.name and (#data.name > 0) if not data.familynamefirst and name then table.insert(result,softNoWiki(data.name)) table.insert(result, " ") end table.insert(result, softNoWiki(data.lastname)) if data.familynamefirst and name then table.insert(result, " ") table.insert(result, softNoWiki(data.name)) end return table.concat(result) end local function makeInitials(name) local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h') nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C' nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje return mw.text.trim(nameinitials) end local function fixInitials(name) local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku return result end local function isInQuotes(text) if (string.len(text) < 2) then return false; end local tstart = text:sub(1, 1); if (tstart ~= '"') then return false; end local tend = text:sub(-1); if (tend ~= '"') then return false; end return true; end local function parseAuthor(author) local result = {} if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane result.exact = author setmetatable(result, authorMetatable) return result end local author = mw.text.trim(author) local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", }) if a ~= author then result.exact = a setmetatable(result, authorMetatable) return result end if resources.exactAuthors[author] then result.exact = author setmetatable(result, authorMetatable) return result end local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$") if exactName then result.exact = mw.text.trim(exactName) if #result.exact == 0 then return nil end setmetatable(result, authorMetatable) return result end local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$") if prefix0 then result.link = link author = description else prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$") if prefix0 then author = link result.link = link else prefix0 = "" suffix0 = "" end end local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$") if not prefix1 then rest = author prefix1 = "" end local prefix = mw.text.trim(prefix0.." "..prefix1) if #prefix > 0 then if mw.ustring.sub(prefix, -1) == "#" then result.familynamefirst = true prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$")) end if #prefix > 0 then result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces end end local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$") if not suffix then rest2 = rest suffix = "" end suffix = mw.text.trim(suffix.." "..suffix0) if #suffix > 0 then result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces suffix = " "..result.suffix for i, v in ipairs(resources.js) do if mw.ustring.match(suffix, v[1]) then result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], "")) result.js = v[2] break end end else for i, v in ipairs(resources.js) do if mw.ustring.match(rest2, v[1]) then rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], "")) result.js = v[2] break end end end local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$") if not lastname then if result.familynamefirst then lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$") else local prefix2 name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$") if not resources.lastnamePrefixes[prefix2] then name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$") end end elseif resources.lastnamePrefixes[prefix1] then lastname = prefix1 .. lastname elseif resources.lastnamePrefixes[prefix1] == false then name = name.." "..mw.text.trim(prefix1) end if not lastname then result.lastname = mw.text.trim(rest2) else result.name = fixInitials(name) result.lastname = lastname result.nameinitials = makeInitials(name) end if #result.lastname == 0 then return nil end setmetatable(result, authorMetatable) return result end local function parseDate(date, month, year, patch) local result = {} -- parse full date local y, m, d = false, false, false y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)") if y and patch and (date == (y.."-01-01")) then result.year = tonumber(y) result.month = false result.day = false return result, true end if not y then d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)") if not y then y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)") if not y then d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false d = false end end end end if y then y = tonumber(y) m = tonumber(m) d = tonumber(d) end if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then y = false m = false d = false elseif y then result.year = y result.month = m result.day = d return result, false end -- parse year and month y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)") if not y then m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)") if not y then y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)") if not y then m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false end end end end if y then y = tonumber(y) m = tonumber(m) end if y and ((m > 12) or (m < 1)) then y = false m = false elseif y then result.year = y result.month = m return result, false end -- try any method to extract year or month if not y then y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?") if y then y = tonumber(y) end if y then result.year = y end end if y then if not m then m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?") if m then m = resources.monthparser[mw.ustring.lower(m)] end if m then result.month = m end end else -- reset only month result.month = nil end if y then return result, false end end local function collectAuthors(author, checkForAltFormat) if not author then return end -- Obsługa cudzysłowów w autorach (treat quoted authors as-is) if (isInQuotes(mw.text.trim(author))) then local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ') return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" } end function findUtf8CharAt(text, at) local back = false if at < 0 then at = #text + at + 1 back = true end while at > 1 do local b = string.byte(text, at, at) if (b < 128) or (b >= 192) then break end at = at - 1 end return back and at - #text - 1 or at end local etal = false local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50)) for i, p in ipairs(resources.etalPatterns) do local a, e = string.match(authorTail, p) if a then author = string.sub(author, 1, #author-#e) etal = e break end end function decodeEntity(s) local result = nil local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$") if hex then result = mw.ustring.char(tonumber(hex, 16)) else local dec = string.match(s, "^&#([0-9]+);$") if dec then result = mw.ustring.char(tonumber(dec, 10)) elseif resources.htmlEntities[s] then result = mw.ustring.char(resources.htmlEntities[s]) else return string.gsub(s, ";", "\\:") end end if result == ";" then return "\\:" elseif result == "," then return "\\." elseif result == "\\" then return "\\\\" else return result end end local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1) local result = {} local esc1 = string.gsub(authorHead, "\\", "\\\\") local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity) local splitter = string.match(esc2, ";") and ";" or "," local authors = mw.text.split(esc2, splitter.."%s*", false) local nth = false local count = #authors if (#authorHead < #author) and (count > 4) then if count > 5 then table.remove(authors, count) count = count - 1 end local at, _ = string.find(authorHead, authors[count], 1, true) nth = string.sub(author, at) table.remove(authors, count) count = count - 1 end local alt = false if (splitter == ",") and checkForAltFormat then local altAuthors = {} alt = true for i, v in ipairs(authors) do local n0 = "" local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$") if not s then s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$") end if not s then n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc. end if not s then alt = false break end local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.") if #n0 > 0 then n0 = " "..n0 end table.insert(altAuthors, s..", "..initials..n0) end if alt then authors = altAuthors splitter = ";" end end for i, v in ipairs(authors) do local author = parseAuthor(v) if author then table.insert(result, author) end end if #result == 0 then return end local check = false if alt then check = "alt" elseif (#result == 2) and (splitter == ",") then check = not result[1].link and not result[1].exact and not result[1].name or not result[2].link and not result[2].exact and not result[2].name if check then if result[1].lastname and not result[1].name and not result[2].exact and not mw.ustring.match(result[1].lastname, "%S%s+%S") then local oneAuthor = parseAuthor(author) if oneAuthor then table.remove(result,2) result[1] = oneAuthor check = false end end end if check then mw.logObject(result,"przecinek u autora") end end return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " } end local function formatAuthors(authors, useDecorations, nextgroup, etalForm) local count = #authors.items if count == 0 then return nil, false end local suffix = function(author) if useDecorations then for _, v in ipairs(resources.authorFunc) do if checkPatterns(author, v.prefixes, v.suffixes) then return v.append end end end return "" end local formatter = function(author) local a = author:format(nextgroup) local r = author.link and ("[["..author.link.."|"..a.."]]") or a return r..suffix(author) end if count == 1 then local a1 = formatter(authors.items[1]) local etal = authors.etal and (etalForm or " i inni") or "" return a1..etal, false end local result = {} table.insert(result, formatter(authors.items[1])) if not authors.etal and (count <= 3) then table.insert(result, ", "); table.insert(result, formatter(authors.items[2])) if count == 3 then table.insert(result, ", "); table.insert(result, formatter(authors.items[3])) end return table.concat(result, ""), false end local title = {} for i = 1, count do table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i])) end if authors.more then table.insert(title, authors.more) end table.insert(result, "<span class=\"cite-at-al\" title=\"") table.insert(result, table.concat(title, authors.separator)) if authors.etal then table.insert(result, etalForm or " i inni") end table.insert(result, "\">") table.insert(result, etalForm or " i inni") table.insert(result, "</span>") return table.concat(result, ""), true end local function collectLanguages(value) if value then local result = {} local values = mw.text.split(value, "%s+") for _, v in ipairs(values) do if #v > 0 then table.insert(result, v) end end if #result > 0 then return result end end return nil end local function splitFileLink(link) local linkTitle = string.match(link, "^:(.+)$") if not linkTitle then return link, false end local title = mw.title.new(link) if not title then return link, false end mw.logObject(title.text, "splitFileLink - title.text") if title.namespace == 6 then local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$") if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end elseif #title.interwiki > 0 then local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$") if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end end return link, false end local function splitWikiLink(text) local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$") if link then local name, ext = splitFileLink(link) return description, link, false, ext end local link = mw.ustring.match(text, "^%[%[(.-)%]%]$") if link then local name, ext = splitFileLink(link) return name or link, link, false, ext end local strony_modul=require("Module:Strony"); local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$") if link and strony_modul.SprawdzanieURL(link) then return description, false, link, false end return text, false, false, false end local function detectArchive(url) local uri = mw.uri.new(url) local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]] if detectors then --mw.logObject(uri.host,"detectArchive uri.host") --mw.logObject(uri.relativePath,"detectArchive uri.relativePath") --mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service") for i, v in ipairs(detectors) do local pattern = v.pattern local decoder = resources.archiveDecoders.decoders[v.decoder] if pattern and decoder then local items = { mw.ustring.match(uri.relativePath, pattern) } if #items > 0 then --mw.logObject(items[decoder.link],"detectArchive link") --mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date") return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day] end end end end return false, false end local function isAutoGeneratedUrl(url) local address = string.gsub(url, "^https?:", "") for k, v in pairs(resources.params) do if v.link then local links = type(v.link) == "table" and v.link or { v.link } for _, vlink in ipairs(links) do local prefix = string.gsub(vlink, "^https?:", "") if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then return v.name end end end end return false end local function loadCitation(frame, mode) local result = {} -- map parameters based on: Moduł:Cytuj/dane for k, v in pairs(resources.params) do if v.used[mode] then local value = frame.args[v.name] if value then value = mw.text.trim(value) if #value > 0 then result[k] = value end end if (v.used[mode] == "!") and not result[k] then -- simulate missing mandatory parameter result[k] = "{{{"..v.name.."}}}" if not result.missing then result.missing = v.name end end end end -- check url argument if result.url == "nie" then result.url = false elseif result.url then local strony_modul=require("Module:Strony"); if not strony_modul.SprawdzanieURL(result.url) then local unstrip = mw.text.unstripNoWiki( result.url ) result.url = false if unstrip then result.urlnowiki = strony_modul.SprawdzanieURL(unstrip) end end end -- translate some parameters local altAuthorParser = false if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then altAuthorParser = true end result.chapterauthor = collectAuthors(result.chapterauthor, false) result.author = collectAuthors(result.author, altAuthorParser) result.lang = collectLanguages(result.lang) result.editor = collectAuthors(result.editor, false) result.others = collectAuthors(result.others, false) -- parse main bibliographic date if result.date then local bibDate = false local bibDateHint = false local coinsDate = false local odnDate = false for _, v in ipairs(resources.bibDates) do for _, p in ipairs(v.patterns) do local bib, c = mw.ustring.gsub(result.date, p, v.show) if bib and (c > 0) then bibDate = bib bibDateHint = v.hint if v.coins then local cd, cc = mw.ustring.gsub(result.date, p, v.coins) if cd and (cc > 0) then coinsDate = cd end end if v.odn then local od, oc = mw.ustring.gsub(result.date, p, v.odn) if od and (oc > 0) then odnDate = od end end break end if bibDate then break end end end if bibDate then result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate } else local date, patch = parseDate(result.date or "", false, false, true) if date then date.coins = (patch and date.year) or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day)) or (date.month and string.format("%04d-%02d", date.year, date.month)) or date.year date.odn = date.year elseif result.date then result.badDate = true end result.date = date result.patchCitoidDate = patch end end -- fix other dates if result.accessdate then result.accessdate = parseDate(result.accessdate or "", false, false, false) if result.accessdate and not result.accessdate.day then result.badAccessDate = true result.accessdate = nil elseif not result.accessdate then result.badAccessDate = true end end -- allow more ISBN numbers if result.isbn then -- TODO allow "(info)" for custom description followed each identifier result.isbn = mw.text.split(result.isbn, "%s+") end if result.title then local url result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title) if url or result.titlelink then if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then result.urlWarning = true end result.url = url end end if result.chapter then result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter) end if result.journal then local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ") mw.logObject(journalAbbr, "journalAbbr") if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)] if expandedJournal then result.originalJournal = result.journal result.journal = expandedJournal end end result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal) end if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then result.journalurl = result.url result.url = false end if result.url then local n = isAutoGeneratedUrl(result.url) if n then result.rejectedurl = true if result[n] then result.url = false end end end if result.chapterurl then local n = isAutoGeneratedUrl(result.chapterurl) if n then result.rejectedurl = true if result[n] then result.chapterurl = false end end end if result.journalurl then local n = isAutoGeneratedUrl(result.journalurl) if n then result.rejectedurl = true if result[n] then result.journalurl = false end end end if not result.archive and result.url then local al, ad = detectArchive(result.url) if al then result.archiveurl = true result.archive = result.url result.url = al if ad then result.archived = ad end end elseif not result.archive and result.chapterurl then local al, ad = detectArchive(result.chapterurl) if al then result.archivechapter = true result.archive = result.chapterurl result.chapterurl = al if ad then result.archived = ad end end elseif not result.archive and result.journalurl then local al, ad = detectArchive(result.journalurl) if al then result.archivejournal = true result.archive = result.journalurl result.journalurl = al if ad then result.archived = ad end end elseif result.archive and not result.archived then local al, ad = detectArchive(result.archive) if ad and not result.archived then result.archived = ad end end if result.archive then if result.chapterurl and not result.url then result.archivechapter = true elseif result.title then result.archiveurl = true elseif result.journal then result.archivejournal = true end end if result.archived then result.archived = parseDate(result.archived or "", false, false, false) if result.archived and not result.archived.day then result.badArchivedDate = true result.archived = null elseif not result.archived then result.badArchivedDate = true end end if result.edition and result.journal and not result.volume and not result.issue then local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$"); if volume then result.volume = volume result.issue = issue result.edition = nil end end if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc) end if result.accessKind then result.accessKind = access.choice[result.accessKind] result.unknownAccess = not result.accessKind else result.accessKind = (result.pmc and "open") or access.doi[doiPrefix] or access.journals[result.journal] end if result.doi then result.doi = mw.text.split(result.doi, '%s+', false) for i, v in ipairs(result.doi) do local doiPrefix local doiSuffix doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$") if (doiPrefix == "2307") and not result.jstor then result.jstor = doiSuffix end if not result.accessKind and not result.unknownAccess then result.accessKind = access.doi[doiPrefix] end end end if result.patent then mw.logObject(result.patent,"input:patent") local patentPatterns = mw.loadData("Moduł:Cytuj/patent") local patent = nil local strony_modul=require("Module:Strony"); for _, v in ipairs(patentPatterns) do if string.match(result.patent, v.pattern) then local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1") local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country) local patentInfo = v.info or patentPatterns.ccinfo[patentCountry] if (result.url == nil) and v.url then local url, _ = string.gsub(result.patent, v.pattern, v.url) if strony_modul.SprawdzanieURL(url) then result.url = url end end local patentTitle if v.title then patentTitle, _ = string.gsub(result.patent, v.pattern, v.title) elseif patentInfo then patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber) else patentTitle = patentCountry.." "..patentNumber end patent = { number = patentNumber, application = v.application, country = patentCountry, title = patentTitle, } break end end result.patent = patent mw.logObject(result.patent,"parsed:patent") end -- return collected parameters if there is any for k, v in pairs(result) do return result end -- there are no supported parameters return nil end local function prepareOdnIdentifier(data) if not data.odn or (#data.odn == 0) or (data.odn == "nie") then return nil end data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false if data.odn ~= "tak" and not data.diferentiator then -- TODO return only CITEREF... return data.odn end local authors = data.chapterauthor or data.author or data.editor if not authors then -- required custom identifier return nil end return "CITEREF" .. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "") .. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "") .. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "") .. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "") .. (data.date and data.date.odn or "") .. (data.diferentiator or "") end local function bookCOinS(data) local authors = data.chapterauthor or data.author local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book" if data.chapter and (#data.chapter > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.chapter) result["rft.btitle"] = plainText(data.title) elseif data.work and (#data.work > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.title) result["rft.btitle"] = plainText(data.work) else result["rft.btitle"] = plainText(data.title) result["rft.gengre"] = "book" end if authors then if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.series then result["rft.series"] = data.series end if data.edition then result["rft.edition"] = data.edition end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.isbn then result["rft.isbn"] = data.isbn[1] end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end local coinsData = table.concat(params, "&") return coinsData; end local function journalCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article" result["rft.gengre"] = data.title and gengre or "journal" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.journal) if data.chapter then result["rft.atitle"] = plainText(data.chapter) end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end if data.volume then result["rft.volume"] = data.volume end if data.issue then result["rft.edition"] = data.issue end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function webCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" result["rft.gengre"] = "unknown" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.published) if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function patentCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" if data.title then result["rft.title"] = plainText(data.title) end result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number result["rft.cc"] = data.patent.country if data.date and data.date.coins then result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins end if author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end -- rft.assignee = author (wszyscy?) -- rft.inventor = others (wszyscy?) local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function COinS(data, coinsFormat) if resources.abbrTitles[data.title] then -- full citation is elsewhere return false elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then -- title is mandatory element for books return bookCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then -- journal title is mandatory element for journals return journalCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then return webCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then return patentCOinS(data) elseif data.title and (#data.title > 0) then -- treat web or unrecognized citations as book return bookCOinS(data) else return false end end --[[ Format edition (number or marc 250$a). Different for journal. Tests: Wikipedysta:Nux/test Cytuj wydanie --]] local function formatEdition(edition, journal) local prefix = false if not journal then prefix = true if string.find(edition, "[Ww]yd[a. ]") then prefix = false elseif string.find(edition, "[Ee]dition") then prefix = false end end return (prefix and "wyd. " or "") .. edition end --[[ Main. --]] local function Cite(p, mode, appendText, firewall) -- typ jednostki 2 --local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame; local types; local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}} local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2) if(typ_jednostki=="artykuł")then types="(artykuły)"; elseif(typ_jednostki=="artykuł dla dzieci")then types="(artykuły dla dzieci)"; elseif(typ_jednostki=="strona użytkownika")then types="(strony użytkowników)"; elseif(typ_jednostki=="strona brudnopisu projektu")then types="(strony brudnopisu projektu)"; else types="(strony niepodręcznikowe)"; end; -- debug helper if p.args[3] then mw.log(p.args[3]) end local customMode = mode -- try to determine type basing on passed parameters local coinsFormat = resources.COinS[mode] if not mode then mode, coinsFormat = determineMode(p) end local data = loadCitation(p, mode) if not data then local result = mw.html.create("span") :addClass("problemy") :attr("aria-hidden", "true") :attr("data-nosnippet", "") :attr("data-problemy", "Brak wyników w szablonie cytowania") if mw.title.getCurrentTitle().namespace == 0 then result:wikitext(string.format(categories.empty,types)) end result:wikitext("&#8201;") -- thin space return tostring(result) end -- convert web page to book for old date if (mode == 4) and data.date and data.date.odn then local year = tonumber(data.date.odn) if year and (year < 1990) then mode = 2 end end if data.missing then -- do not produce any COiNS info -- if some mandatory argument is missing coinsFormat = false end local builder = mw.html.create("cite") builder :addClass("citation") :addClass(resources.cite[mode] or nil) :addClass(access.class[data.accessKind]) :attr("id", prepareOdnIdentifier(data)) --:wikitext(access.render[data.accessKind], ' ') local needDot = false local nextAuthorGroup = false if data.title or data.patent then if data.chapter then local authors = data.editor and data.author or data.chapterauthor if authors then local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil) builder:wikitext(list, ", ") nextAuthorGroup = true end local title = softNoWiki(data.chapter) if data.urlstatus == "ukryj" then if data.archivechapter and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.chapterurl then builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']") elseif data.chapterlink then builder:wikitext("[[", data.chapterlink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") end builder:wikitext(", [w:] ") end local authors = false local editor = false if not data.chapter and data.author then authors = data.author else authors = data.editor or data.author editor = data.editor end if authors then local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil) builder:wikitext(list) nextAuthorGroup = true if editor and not etal and not authors.etal then builder:wikitext(" (red.)") end builder:wikitext(", ") end if customMode and data.authorextra then builder:wikitext(data.authorextra, ", ") end if resources.abbrTitles[data.title] then local title = resources.abbrTitles[data.title] builder:wikitext(title) needDot = not mw.ustring.match(title, "%.%]%]$") and not mw.ustring.match(title, "%.$") elseif data.title then local title = softNoWiki(data.title) if data.urlstatus == "ukryj" then if data.archiveurl and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.url or data.archiveurl then builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']") elseif data.titlelink then builder:wikitext("[[", data.titlelink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if not data.chapter and data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") needDot = true elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then needDot = true end local showmediatype = data.mediatype and (#data.mediatype > 0) if showmediatype then builder:wikitext(" &#x5B;", data.mediatype, "&#x5D;") needDot = true end end if not editor and data.editor then local list, etal = formatAuthors(data.editor, false, true, " i inni red.") builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)") needDot = true end if data.others then local list, etal = formatAuthors(data.others, true, true, nil) builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list) needDot = true end if data.patent then local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title) needDot = true end elseif data.journal and data.author then local list, etal = formatAuthors(data.author, false, false, nil) builder:wikitext(list, ", ") end if data.work then builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work) needDot = true end -- web -> [online] if (mode == 4) and not data.mediatype then builder:wikitext(" [online]") end if data.journal and (not data.published or (data.journal ~= data.published)) then builder:wikitext((data.title or data.work) and ", " or "") local title = softNoWiki(data.journal) if data.urlstatus == "ukryj" then if data.archivejournal and data.archive then builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]") else builder:wikitext("„", title, "”") end elseif data.journalurl or data.archivejournal then builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]") elseif data.journallink then builder:wikitext("„[[", data.journallink, "|", title, "]]”") else builder:wikitext("„", title, "”") end needDot = true end if data.responsibility then builder:wikitext(", ", data.responsibility) needDot = true end if data.edition then builder:wikitext(", ", formatEdition(data.edition, data.journal)) needDot = true end if data.volume then builder:wikitext(data.journal and ", " or ", t. ", data.volume) needDot = true end if data.journal and data.issue then builder:wikitext(" (", data.issue, ")") needDot = true end if data.description and (#data.description > 0) then builder:wikitext(", ", data.description) needDot = true end if data.published and not data.publisher then builder:wikitext(", ", data.published) needDot = true end local place = false if data.place then builder:wikitext(", ", data.place) needDot = true place = true end if data.publisher then builder:wikitext(place and ": " or ", ", data.publisher) needDot = true place = false end if data.date then local shortDate = data.journal and (data.doi or data.pmid or data.pmc) if data.date.bib and data.date.hint then builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib) elseif data.date.bib then builder:wikitext(place and " " or ", ", data.date.bib) elseif data.date.day and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.month and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.day then builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year)) elseif data.date.month then builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year)) else builder:wikitext(place and " " or ", ", data.date.year) end builder:wikitext(data.diferentiator or "") needDot = true end if not data.journal and (data.series or data.issue) then builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")") needDot = true elseif data.journal and data.series then builder:wikitext(" (", data.series, ")") needDot = true end if data.p and #data.p > 0 then local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]") builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p) needDot = true end if data.doi then local separator = "&nbsp;" builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:") local doiLink = first(resources.params.doi.link) for _, v in ipairs(data.doi) do builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]") separator = ", " end needDot = true end if data.isbn then for i,v in ipairs(data.isbn) do builder:wikitext(", ") require("Moduł:ISBN").link(builder, v) end needDot = true end if data.lccn then builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]") needDot = true end if data.issn then builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]") needDot = true end if data.pmid then builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]:&nbsp;[", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]") needDot = true end if data.pmc then builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]:&nbsp;[", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]") needDot = true end if data.bibcode then builder:wikitext(", [[w:Bibcode|Bibcode]]:&nbsp;[", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]") needDot = true end if data.oclc then builder:wikitext(", [[w:Online Computer Library Center|OCLC]]&nbsp;[", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]") needDot = true end if data.arxiv then builder:wikitext(", [[arXiv]]:") local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$") if eprint then builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] &#x5B;[//arxiv.org/archive/", class, " ", class, "]&#x5D;" ) else builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" ) end needDot = true end if data.jstor then builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]:&nbsp;[", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]") needDot = true end if data.ol then builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]:&nbsp;[", first(resources.params.ol.link), data.ol, " ", data.ol, "]") needDot = true end if data.id then builder:wikitext(", ", data.id) needDot = true end if data.accessdate then builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]") needDot = true end if data.archive then builder:wikitext(" [zarchiwizowane") if data.urlstatus ~= "ukryj" then local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl) if url then builder:wikitext(" z [", escapeUrl(url), " adresu]") end end if data.archived and data.archived.day then builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day)) end builder:wikitext("]") needDot = true end if data.quotation then builder:wikitext(", Cytat: ", data.quotation) needDot = true end local coinsData = COinS(data, coinsFormat) if coinsData then builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext("&nbsp;") end if data.lang then local languages = require("Moduł:Lang").lang({args = data.lang}) builder:wikitext(" ", languages) needDot = true end if data.fullStop then if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then builder:wikitext(", ") end builder:wikitext(data.fullStop) needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil end if needDot then builder:wikitext(".") end if appendText then builder:wikitext(string.format(appendText,types)) end -- categories local addCategories = mw.title.getCurrentTitle().namespace == 0 local problems = {} if not customMode and (mode == 1) then builder:wikitext(string.format(categories.undetermined,types)) table.insert(problems, "???") end if data.publisher and data.published then table.insert(problems, "p?") if addCategories then table.insert(problems, string.format(categories.unusedPublished,types)) end end if data.journal and data.published and (data.journal == data.published) then table.insert(problems, "j?") if addCategories then table.insert(problems, string.fomat(categories.sameJournalAndPublished,types)) end end if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then builder:addClass(data.urlnowiki and "urlnowiki" or "nourl") end local missing = false local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*") if data.missing then -- usually missing title, this is the first check for mandatory arguments table.insert(problems, data.missing) missing = true elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then -- build in support for missing external link for page citation table.insert(problems, resources.params.url.name) missing = true else -- any other missing value (first catch) for k, v in pairs(resources.params) do if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then table.insert(problems, v.name) missing = true break end end end if missing and addCategories then builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode])) end if (data.chapterauthor and data.chapterauthor.comma) or (data.author and (data.author.comma == true)) or (data.editor and data.editor.comma) or (data.others and data.others.comma) then table.insert(problems, "!!!") if addCategories then builder:wikitext(string.format(categories.suspectedComma,types)) end end if data.author and (data.author.comma == "alt") then table.insert(problems, "a?") if addCategories then builder:wikitext(string.format(categories.altAuthor,types)) end end if data.originalJournal then builder:addClass("c") -- CSS dla lokalizacji w treści if addCategories then builder:wikitext(string.format(categories.altJournal,types)) end end local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia")); local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks")); if citewikipedia or citewikibooks then local justification = false local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {} for i, v in ipairs(acceptedLinks) do justification = (v == data.url) or (v == data.archive) if justification then break end end if not justification then table.insert(problems, "wiki?") if addCategories then if(citewikipedia)then builder:wikitext(string.format(categories.wikipedia,types)) end; if(citewikibooks)then builder:wikitext(string.format(categories.wikibooks,types)) end; end end end if data.unknownAccess then table.insert(problems, "dostęp?") if addCategories then builder:wikitext(string.format(categories.unknownAccess,types)) end end if data.rejectedurl then table.insert(problems, "<s>url</s>") if addCategories then builder:wikitext(string.format(categories.rejectedUrl,types)) end end if data.urlWarning then table.insert(problems, "Url") if addCategories then builder:wikitext(string.format(categories.unusedUrl,types)) end end if data.patchCitoidDate then table.insert(problems, "1 stycznia") end if data.badDate then table.insert(problems, "data?") end if data.badAccessDate then table.insert(problems, "data dostępu?") end if data.badArchivedDate then table.insert(problems, "zarchiwizowano?") end if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then builder:wikitext(string.format(categories.badDate,types)) end if (data.author and data.author.etal) or (data.chapterauthor and data.chapterauthor.etal) or (data.editor and data.editor.etal) or (data.others and data.others.etal) then table.insert(problems, "i inni") if addCategories then builder:wikitext(string.format(categories.etal,types)) end end if firewall then local reportFirewall = function(report) if report then table.insert(problems, report.info) if addCategories and report.cat then local cat = mw.ustring.format(categories.firewall, types, report.cat) builder:wikitext(cat) end end end local reportCommonsFile = function(ext) mw.logObject(ext, "ext") if ext and (firewall.commonsFile[ext] ~= false) then local issue = firewall.commonsFile[ext] or firewall.commonsFile[true] reportFirewall(firewall.reports[issue]) end end if data.url and firewall.url[data.url] ~= false then local uri = mw.uri.new(data.url) local issue = firewall.url[data.url] or firewall.host[uri.host] or firewall.path[uri.relativePath] reportFirewall(firewall.reports[issue]) end reportCommonsFile(data.chapterext) reportCommonsFile(data.titleext) reportCommonsFile(data.journalext) end if #problems > 0 then local info = builder:tag("span") :addClass("problemy") :addClass("problemy-w-cytuj") :attr("aria-hidden", "true") :attr("data-nosnippet", "") info:wikitext(table.concat(problems,", ")) end return builder:done() end local p={}; p.auto = function(frame) return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall")) end; p.custom = function(frame,pf) local traceCategory = false local pagename = mw.title.getCurrentTitle() if (pagename.namespace == 10) and (pf or frame.getParent) then local nazwa_szablonu_rodzica=(pf or frame:getParent()).args["nazwa szablonu przodka"] or (pf or frame:getParent()).args["nazwa szablonu rodzica"]; local pelna_nazwa_szablonu_rodzica=nazwa_szablonu_rodzica and ("Szablon:"..nazwa_szablonu_rodzica) or nil; local template = mw.title.new(pelna_nazwa_szablonu_rodzica or (pf or frame:getParent()):getTitle(), "Szablon" ) if mw.title.compare(template, pagename) == 0 then traceCategory = categories.traceInvokeCustom end end local customMode = frame.args[1] local mode = 1 if customMode then customMode = mw.text.trim(customMode) for i, v in ipairs(resources.modes) do if customMode == v then mode = i break end end end return Cite(pf or frame, mode, traceCategory, null) end; p.custom2=function(frame) return p.custom(frame,frame:getParent()); end; return p; 9k9jk2tzl8nuu5css4onsbu1crszzki Szablon:Cytuj 10 31188 558003 556530 2026-09-29T17:49:52Z Persino 2851 558003 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!-- -->{{#switch:{{{Funkcja|auto}}} | custom2 = {{#invoke:Cytuj|custom2}} | custom = {{#invoke:Cytuj|custom}} | #default | auto = {{#invoke:Cytuj|auto}} }}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!-- -->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=|adres=}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} }}<!-- -->}}<!-- -->{{#if:{{{opis|}}}{{{kropka|}}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}} }} }}<!-- -->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}}}}}<!-- -->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!-- -->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!-- -->{{#if:{{{czasopismo|}}}|<!-- -->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->|{{#if:{{{s|}}}{{{odn|}}}||<!-- -->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> p98942lrbypedvxekts2ys5mhhlyr34 Szablon:Lua 10 32972 558072 544053 2026-09-30T11:19:04Z Persino 2851 558072 wikitext text/x-wiki <includeonly>{{#invoke:Pudełko|Ogólne pudełko | cecha = {{#invoke:Pudełko|Przedmiotowa cecha pudełka|pierwszy człon kategorii błędu=Szablony informacyjne|nieobsługiwane strony główne=tak|obsługiwane nieudokumentowane szablony jako szablony=tak|nazwy jednostki numerowane=tak|nazwa przestrzeni nazw i=Module|Template|Module}} | warunek niealternatywnego wywołania = {{Jeśli niepuste|{{{dokumentacja|}}}|{{#if:{{Dopasuj|ciąg={{#invoke:Pudełko|Nazwa jednostki}}|wzór=/{{#invoke:Techniczne|WzórDanejPrzestrzeniNazw|{{{strona|opis}}}|wyspecjalizowana=tak}}$}}||tak}}}} | alternatywne wywołanie = {{Div|styl=width:0;height:0}} | typ = wiadomość | nazwa = ombox | grafika = {{ikona|lua|35}} | tekst = '''Ten {{#switch: {{Np|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2}}|kanoniczna=tak}}|Template=szablon|Module=moduł|#default=szablon}} {{#if: {{{1|}}} |wykorzystuje{{#if:{{{2|}}}|&#58;}} {{#invoke:Ramka|Powtarzaj|wyliczanka=tak|{{!((}}{{((}}#invoke:Pudełko{{!}}Pełna nazwa jednostki 2{{!}}numer jednostki{{=}}{{((}}_{{))}}{{!}}nazwa przestrzeni nazw i{{=}}Module{{))}}{{))!}}}}{{#if:{{{2|}}}|,}} napisan{{#if:{{{2|}}}|e|y}} w |wykorzystuje}} {{lpg|Lua}}.'''{{Br}}{{Small|Jeśli chcesz się nauczyć stosować Lua, dalsze informacje możesz znaleźć na stronie {{lpr2|Lua}}. Wszelkie testowe skrypty należy tworzyć w {{ld|Brudnopis|brudnopisie}} dla modułów Lua.}} | kategorie = {{#if:{{{bez kategorii|}}}|| {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady - dokumentacja}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady - dokumentacja}} |{{Kategoria|Szablony wykorzystujące moduły Lua}} }} }} }} }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 93swgn74n0fhfqx4hv8nbmdb25fr6oy 558074 558072 2026-09-30T11:22:51Z Persino 2851 558074 wikitext text/x-wiki <includeonly>{{#invoke:Pudełko|Ogólne pudełko | cecha = {{#invoke:Pudełko|Przedmiotowa cecha pudełka|pierwszy człon kategorii błędu=Szablony informacyjne|nieobsługiwane strony główne=tak|obsługiwane nieudokumentowane szablony jako szablony=tak|nazwy jednostki numerowane=tak|nazwa przestrzeni nazw i=Module|Template|Module}} | warunek niealternatywnego wywołania = {{Jeśli niepuste|{{{dokumentacja|}}}|{{#if:{{Dopasuj|ciąg={{#invoke:Pudełko|Nazwa jednostki}}|wzór=/{{#invoke:Techniczne|WzórDanejPrzestrzeniNazw|{{{strona|opis}}}|wyspecjalizowana=tak}}$}}||tak}}}} | alternatywne wywołanie = {{Div|styl=width:0;height:0}} | typ = wiadomość | nazwa = ombox | grafika = {{ikona|lua|35}} | tekst = '''Ten {{#switch: {{Np|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2}}|kanoniczna=tak}}|Template=szablon|Module=moduł|#default=szablon}} {{#if: {{{1|}}} |wykorzystuje{{#if:{{{2|}}}|&#58;}} {{#invoke:Ramka|Powtarzaj|wyliczanka=tak|{{!((}}{{((}}#invoke:Pudełko{{!}}Pełna nazwa jednostki 2{{!}}numer jednostki{{=}}{{((}}_{{))}}{{!}}nazwa przestrzeni nazw i{{=}}Module{{))}}{{))!}}}}{{#if:{{{2|}}}|,}} napisan{{#if:{{{2|}}}|e|y}} w |wykorzystuje}} {{lpg|Lua}}.'''{{Br}}{{Small|Jeśli chcesz się nauczyć stosować Lua, dalsze informacje możesz znaleźć na stronie {{lpr2|Lua}}. Wszelkie testowe skrypty należy tworzyć w {{ld|Brudnopis|brudnopisie}} dla modułów Lua.}} | kategorie = {{#if:{{{bez kategorii|}}}|| {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady w modułach Lua w Scribunto - dokumentacja}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady w modułach Lua w Scribunto - dokumentacja}} |{{Kategoria|Szablony wykorzystujące moduły Lua}} }} }} }} }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> dmk1p3yru0xftqtcu4p4p0qeqpf9f76 558076 558074 2026-09-30T11:25:42Z Persino 2851 558076 wikitext text/x-wiki <includeonly>{{#invoke:Pudełko|Ogólne pudełko | cecha = {{#invoke:Pudełko|Przedmiotowa cecha pudełka|pierwszy człon kategorii błędu=Szablony informacyjne|nieobsługiwane strony główne=tak|obsługiwane nieudokumentowane szablony jako szablony=tak|nazwy jednostki numerowane=tak|nazwa przestrzeni nazw i=Module|Template|Module}} | warunek niealternatywnego wywołania = {{Jeśli niepuste|{{{dokumentacja|}}}|{{#if:{{Dopasuj|ciąg={{#invoke:Pudełko|Nazwa jednostki}}|wzór=/{{#invoke:Techniczne|WzórDanejPrzestrzeniNazw|{{{strona|opis}}}|wyspecjalizowana=tak}}$}}||tak}}}} | alternatywne wywołanie = {{Div|styl=width:0;height:0}} | typ = wiadomość | nazwa = ombox | grafika = {{ikona|lua|35}} | tekst = '''Ten {{#switch: {{Np|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2}}|kanoniczna=tak}}|Template=szablon|Module=moduł|#default=szablon}} {{#if: {{{1|}}} |wykorzystuje{{#if:{{{2|}}}|&#58;}} {{#invoke:Ramka|Powtarzaj|wyliczanka=tak|{{!((}}{{((}}#invoke:Pudełko{{!}}Pełna nazwa jednostki 2{{!}}numer jednostki{{=}}{{((}}_{{))}}{{!}}nazwa przestrzeni nazw i{{=}}Module{{))}}{{))!}}}}{{#if:{{{2|}}}|,}} napisan{{#if:{{{2|}}}|e|y}} w |wykorzystuje}} {{lpg|Lua}}.'''{{Br}}{{Small|Jeśli chcesz się nauczyć stosować Lua, dalsze informacje możesz znaleźć na stronie {{lpr2|Lua}}. Wszelkie testowe skrypty należy tworzyć w {{ld|Brudnopis|brudnopisie}} dla modułów Lua.}} | kategorie = {{#if:{{{bez kategorii|}}}|| {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady, w modułach Lua w Scribunto, przygotowane specjalnie dla dokumentacji}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady, w modułach Lua w Scribunto, przygotowane specjalnie dla dokumentacji}} |{{Kategoria|Szablony wykorzystujące moduły Lua}} }} }} }} }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> n0dagyi3h4r1zeg1n0i0xe25jrxzpws 558078 558076 2026-09-30T11:27:59Z Persino 2851 558078 wikitext text/x-wiki <includeonly>{{#invoke:Pudełko|Ogólne pudełko | cecha = {{#invoke:Pudełko|Przedmiotowa cecha pudełka|pierwszy człon kategorii błędu=Szablony informacyjne|nieobsługiwane strony główne=tak|obsługiwane nieudokumentowane szablony jako szablony=tak|nazwy jednostki numerowane=tak|nazwa przestrzeni nazw i=Module|Template|Module}} | warunek niealternatywnego wywołania = {{Jeśli niepuste|{{{dokumentacja|}}}|{{#if:{{Dopasuj|ciąg={{#invoke:Pudełko|Nazwa jednostki}}|wzór=/{{#invoke:Techniczne|WzórDanejPrzestrzeniNazw|{{{strona|opis}}}|wyspecjalizowana=tak}}$}}||tak}}}} | alternatywne wywołanie = {{Div|styl=width:0;height:0}} | typ = wiadomość | nazwa = ombox | grafika = {{ikona|lua|35}} | tekst = '''Ten {{#switch: {{Np|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2}}|kanoniczna=tak}}|Template=szablon|Module=moduł|#default=szablon}} {{#if: {{{1|}}} |wykorzystuje{{#if:{{{2|}}}|&#58;}} {{#invoke:Ramka|Powtarzaj|wyliczanka=tak|{{!((}}{{((}}#invoke:Pudełko{{!}}Pełna nazwa jednostki 2{{!}}numer jednostki{{=}}{{((}}_{{))}}{{!}}nazwa przestrzeni nazw i{{=}}Module{{))}}{{))!}}}}{{#if:{{{2|}}}|,}} napisan{{#if:{{{2|}}}|e|y}} w |wykorzystuje}} {{lpg|Lua}}.'''{{Br}}{{Small|Jeśli chcesz się nauczyć stosować Lua, dalsze informacje możesz znaleźć na stronie {{lpr2|Lua}}. Wszelkie testowe skrypty należy tworzyć w {{ld|Brudnopis|brudnopisie}} dla modułów Lua.}} | kategorie = {{#if:{{{bez kategorii|}}}|| {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady, w modułach Lua w Scribunto, przygotowane specjalnie dla dokumentacji funkcji bibliotecznych}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady, w modułach Lua w Scribunto, przygotowane specjalnie dla dokumentacji funkcji bibliotecznych}} |{{Kategoria|Szablony wykorzystujące moduły Lua}} }} }} }} }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> ouby6sbbwougm55mmsk4z9acmbb14su 558081 558078 2026-09-30T11:37:15Z Persino 2851 558081 wikitext text/x-wiki <includeonly>{{#invoke:Pudełko|Ogólne pudełko | cecha = {{#invoke:Pudełko|Przedmiotowa cecha pudełka|pierwszy człon kategorii błędu=Szablony informacyjne|nieobsługiwane strony główne=tak|obsługiwane nieudokumentowane szablony jako szablony=tak|nazwy jednostki numerowane=tak|nazwa przestrzeni nazw i=Module|Template|Module}} | warunek niealternatywnego wywołania = {{Jeśli niepuste|{{{dokumentacja|}}}|{{#if:{{Dopasuj|ciąg={{#invoke:Pudełko|Nazwa jednostki}}|wzór=/{{#invoke:Techniczne|WzórDanejPrzestrzeniNazw|{{{strona|opis}}}|wyspecjalizowana=tak}}$}}||tak}}}} | alternatywne wywołanie = {{Div|styl=width:0;height:0}} | typ = wiadomość | nazwa = ombox | grafika = {{ikona|lua|35}} | tekst = '''Ten {{#switch: {{Np|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2}}|kanoniczna=tak}}|Template=szablon|Module=moduł|#default=szablon}} {{#if: {{{1|}}} |wykorzystuje{{#if:{{{2|}}}|&#58;}} {{#invoke:Ramka|Powtarzaj|wyliczanka=tak|{{!((}}{{((}}#invoke:Pudełko{{!}}Pełna nazwa jednostki 2{{!}}numer jednostki{{=}}{{((}}_{{))}}{{!}}nazwa przestrzeni nazw i{{=}}Module{{))}}{{))!}}}}{{#if:{{{2|}}}|,}} napisan{{#if:{{{2|}}}|e|y}} w |wykorzystuje}} {{lpg|Lua}}.'''{{Br}}{{Small|Jeśli chcesz się nauczyć stosować Lua, dalsze informacje możesz znaleźć na stronie {{lpr2|Lua}}. Wszelkie testowe skrypty należy tworzyć w {{ld|Brudnopis|brudnopisie}} dla modułów Lua.}} | kategorie = {{#if:{{{bez kategorii|}}}|| {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady, w modułach Lua w Scribunto, przygotowane specjalnie dla dokumentacji funkcji bibliotecznych}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady, w modułach Lua w Scribunto, przygotowane specjalnie dla dokumentacji funkcji bibliotecznych}} |{{#if:{{Dopasuj|ciąg={{FULLPAGENAME}}|wzór=^Szablon:Książka:.*$}} |{{Lua|Szablony wykorzystujące moduły Lua/Szablony pomocnicze do tworzenia książek}} |{{Kategoria|Szablony wykorzystujące moduły Lua}} }} }} }} }} }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 6m8phsfsunbiooix6hp82feej3v62ky 558082 558081 2026-09-30T11:37:59Z Persino 2851 558082 wikitext text/x-wiki <includeonly>{{#invoke:Pudełko|Ogólne pudełko | cecha = {{#invoke:Pudełko|Przedmiotowa cecha pudełka|pierwszy człon kategorii błędu=Szablony informacyjne|nieobsługiwane strony główne=tak|obsługiwane nieudokumentowane szablony jako szablony=tak|nazwy jednostki numerowane=tak|nazwa przestrzeni nazw i=Module|Template|Module}} | warunek niealternatywnego wywołania = {{Jeśli niepuste|{{{dokumentacja|}}}|{{#if:{{Dopasuj|ciąg={{#invoke:Pudełko|Nazwa jednostki}}|wzór=/{{#invoke:Techniczne|WzórDanejPrzestrzeniNazw|{{{strona|opis}}}|wyspecjalizowana=tak}}$}}||tak}}}} | alternatywne wywołanie = {{Div|styl=width:0;height:0}} | typ = wiadomość | nazwa = ombox | grafika = {{ikona|lua|35}} | tekst = '''Ten {{#switch: {{Np|{{#invoke:Pudełko|Nazwa przestrzeni nazw 2}}|kanoniczna=tak}}|Template=szablon|Module=moduł|#default=szablon}} {{#if: {{{1|}}} |wykorzystuje{{#if:{{{2|}}}|&#58;}} {{#invoke:Ramka|Powtarzaj|wyliczanka=tak|{{!((}}{{((}}#invoke:Pudełko{{!}}Pełna nazwa jednostki 2{{!}}numer jednostki{{=}}{{((}}_{{))}}{{!}}nazwa przestrzeni nazw i{{=}}Module{{))}}{{))!}}}}{{#if:{{{2|}}}|,}} napisan{{#if:{{{2|}}}|e|y}} w |wykorzystuje}} {{lpg|Lua}}.'''{{Br}}{{Small|Jeśli chcesz się nauczyć stosować Lua, dalsze informacje możesz znaleźć na stronie {{lpr2|Lua}}. Wszelkie testowe skrypty należy tworzyć w {{ld|Brudnopis|brudnopisie}} dla modułów Lua.}} | kategorie = {{#if:{{{bez kategorii|}}}|| {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady, w modułach Lua w Scribunto, przygotowane specjalnie dla dokumentacji funkcji bibliotecznych}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Przykłady, w modułach Lua w Scribunto, przygotowane specjalnie dla dokumentacji funkcji bibliotecznych}} |{{#if:{{Dopasuj|ciąg={{FULLPAGENAME}}|wzór=^Szablon:Książka:.*$}} |{{Kategoria|Szablony wykorzystujące moduły Lua/Szablony pomocnicze do tworzenia książek}} |{{Kategoria|Szablony wykorzystujące moduły Lua}} }} }} }} }} }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 9zfmckdulrp071pavmdsuxedwhswk2t Moduł:Cytuj/opis 828 33708 557999 542129 2026-09-29T17:43:38Z Persino 2851 557999 wikitext text/x-wiki <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> {{Wysokie ryzyko}} == Użycie == Moduł wspierający szablony cytowania. == {{Tt|auto}} == Implementacja {{s|Cytuj}}. == {{Tt|custom}} == Wsparcie dla wyspecjalizowanych szablonów cytowania. Wymaga jawnego podawania wszystkich pól opisanych w dokumentacji {{s|Cytuj}} w wywołaniu {{m|Cytuj|custom|...}}. ; zobacz też : {{lk2|Szablony cytowania bazujące na uniwersalnym}}. == {{Tt|custom2}} == Wsparcie dla innego wyspecjalizowanych szablonów cytowania. Wymaga niejawnego podawania wszystkich pól opisanych w dokumentacji: {{s|Cytuj}}, w wywołaniu: {{m|Cytuj|custom2|...}} (funkcja używa: {{m|Cytuj|custom}}), przykład na podstawie wykorzystania w szablonie: {{s|PrzypisStrona}}, przy pomocy: {{m|Ramka|Moduł}}. == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> </includeonly> t3p0qvxjdl6gn1c41zf1ic746mt0tr8 558000 557999 2026-09-29T17:45:44Z Persino 2851 /* {{Tt|custom2}} */ 558000 wikitext text/x-wiki <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> {{Wysokie ryzyko}} == Użycie == Moduł wspierający szablony cytowania. == {{Tt|auto}} == Implementacja {{s|Cytuj}}. == {{Tt|custom}} == Wsparcie dla wyspecjalizowanych szablonów cytowania. Wymaga jawnego podawania wszystkich pól opisanych w dokumentacji {{s|Cytuj}} w wywołaniu {{m|Cytuj|custom|...}}. ; zobacz też : {{lk2|Szablony cytowania bazujące na uniwersalnym}}. == {{Tt|custom2}} == Wsparcie dla innego wyspecjalizowanych szablonów cytowania. Wymaga niejawnego podawania wszystkich pól opisanych w dokumentacji: {{s|Cytuj}}, w wywołaniu: {{m|Cytuj|custom2|...}} (funkcja używa: {{m|Cytuj|custom}}), przykład na podstawie wykorzystania w szablonie: {{s|PrzypisStrona}}, przy pomocy: {{m|Ramka|Szablon|Nazwa=Cytuj|Funkcja{{=}}custom2}}. == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> </includeonly> f46ddj9jdg07j0fnos2rog4vssuyjdc 558001 558000 2026-09-29T17:46:29Z Persino 2851 /* {{Tt|custom2}} */ 558001 wikitext text/x-wiki <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> {{Wysokie ryzyko}} == Użycie == Moduł wspierający szablony cytowania. == {{Tt|auto}} == Implementacja {{s|Cytuj}}. == {{Tt|custom}} == Wsparcie dla wyspecjalizowanych szablonów cytowania. Wymaga jawnego podawania wszystkich pól opisanych w dokumentacji {{s|Cytuj}} w wywołaniu {{m|Cytuj|custom|...}}. ; zobacz też : {{lk2|Szablony cytowania bazujące na uniwersalnym}}. == {{Tt|custom2}} == Wsparcie dla innego wyspecjalizowanych szablonów cytowania. Wymaga niejawnego podawania wszystkich pól opisanych w dokumentacji: {{s|Cytuj}}, w wywołaniu: {{m|Cytuj|custom2|...}} (funkcja używa: {{m|Cytuj|custom}}), przykład na podstawie wykorzystania w szablonie: {{s|PrzypisStrona}}, przy pomocy: {{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|Funkcja{{=}}custom2}}. == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> </includeonly> m2n2b67wgelxqot7zzznlu9gybb81uz 558002 558001 2026-09-29T17:48:25Z Persino 2851 558002 wikitext text/x-wiki <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> {{Wysokie ryzyko}} == Użycie == Moduł wspierający szablony cytowania. == {{Tt|auto}} == Implementacja {{s|Cytuj}}. == {{Tt|custom}} == Wsparcie dla wyspecjalizowanych szablonów cytowania. Wymaga jawnego podawania wszystkich pól opisanych w dokumentacji: {{Code|{{s|Cytuj}}}}, w wywołaniu: {{Code|{{m|Cytuj|custom|...}}}}. ; zobacz też : {{lk2|Szablony cytowania bazujące na uniwersalnym}}. == {{Tt|custom2}} == Wsparcie dla innego wyspecjalizowanych szablonów cytowania. Wymaga niejawnego podawania wszystkich pól opisanych w dokumentacji: {{Code|{{s|Cytuj}}}}, w wywołaniu: {{Code|{{m|Cytuj|custom2|...}}}} (funkcja używa: {{Code|{{m|Cytuj|custom}}}}), przykład na podstawie wykorzystania w szablonie: {{Code|{{s|PrzypisStrona}}}}, przy pomocy: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|Funkcja{{=}}custom2}}}}. == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> </includeonly> dub87qp0xpg2k8jnkjv2f556wkekvr2 Moduł:Ramka 828 44224 558005 556516 2026-09-29T18:49:01Z Persino 2851 558005 Scribunto text/plain local p={}; local function ParserBlokowy(frame, co_ma_wywolac) local pf=frame:getParent(); local nazwa_szablonu_modulu_lub_parsera="Nazwa"; local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera]; local argumenty_szablonu_modulu_lub_parsera={}; local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={}; local ramka_dane_modul=mw.loadData("Module:Ramka/dane"); local bez_parametrowa_tablica=ramka_dane_modul.bez_parametrowa_tablica; local bez_parametrow={}; if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end; local parametry_modul=require("Module:Parametry"); local tab_usun_parametry; local czy_usun=frame.args["usuń z parametrów ramki"]; if(parametry_modul.CzyTak(czy_usun))then tab_usun_parametry={}; local iter=mw.text.gsplit(czy_usun,";",true); for name in iter do name=mw.ustring.gsub(name,"^[%s_]*",""); name=mw.ustring.gsub(name,"[%s_]*$",""); name=tonumber(name) or name; tab_usun_parametry[name]=true; end; end; for nazwa_parametru,wartosc_parametru in pairs(frame.args) do if(((not tab_usun_parametry)or(not tab_usun_parametry[nazwa_parametru])) and((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru]))) )then tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru; argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru; end; end; local szablonowe_modul=require("Module:Szablonowe"); local tabela_bez_argumentow=p.RozpakujArgumenty(frame.args["bez argumentów rodzica"]); local zmienna_z_parametrami_rodzica=frame.args["zmienna z parametrami rodzica"]; local czy_przekazac_parametry_rodzica=zmienna_z_parametrami_rodzica and parametry_modul.CzyTak(zmienna_z_parametrami_rodzica) or false; ---- local frame_sprawdzenia_args=frame.args["bez dodatkowych sprawdzeń"]; local bez_dodatkowych_sprawdzen; local czy_podano_bez_dodatkowych_sprawdzen; if(frame_sprawdzenia_args)then czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_args and true or false; bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_args); else local frame_sprawdzenia_pf_args=pf.args["bez dodatkowych sprawdzeń"]; if(frame_sprawdzenia_pf_args)then czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_pf_args and true or false; bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_pf_args); end; end; local z_dodatkowymi_sprawdzeniami=not(bez_dodatkowych_sprawdzen); --- local PakujArgumentyRamki = function(args) local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"]; if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end; local tabelka1={}; for nazwa_parametru,_ in pairs(args)do if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))then tabelka1[nazwa_parametru]=true; end; end; local tabelka2=(args["bez argumentów szablonu"]) and p.RozpakujArgumenty(args["bez argumentów szablonu"]); local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2); local tablica_mikroszablonow={ [";"]="{{+}}", }; local str=""; for name,_ in pairs(tabelka) do str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow); end; return str,tabelka2; end; local nazwa_szablonu; local function TempFunc() if(not nazwa_szablonu)then local nazwa=szablonowe_modul.NazwaSzablonu(pf:getTitle()); nazwa_szablonu=nazwa; return nazwa; else return nazwa_szablonu; end; end; local bez_argumentow_szablonu=nil; if(czy_przekazac_parametry_rodzica)then if(z_dodatkowymi_sprawdzeniami)then local str=p.PakujParametry(pf.args); argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str; end; argumenty_szablonu_modulu_lub_parsera["potomek"]="tak"; argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args); if(czy_podano_bez_dodatkowych_sprawdzen)then argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or ""; end; argumenty_szablonu_modulu_lub_parsera["nazwa szablonu przodka"]=pf.args["nazwa szablonu przodka"] or TempFunc(); argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or TempFunc(); else local function ZmiennaZNazwaSzablonuRodzica() local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"]; if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle()); end; argumenty_szablonu_modulu_lub_parsera["nazwa szablonu przodka"]=pf.args["nazwa szablonu przodka"] or TempFunc(); end; local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]); if(z_argumentami_najwyzszego_rodzica)then local potomek=parametry_modul.CzyTak(pf.args["potomek"]); if(potomek)then local parametry_rodzic=pf.args["parametry rodzica"]; if(parametry_rodzic)then if(z_dodatkowymi_sprawdzeniami)then argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic; end; argumenty_szablonu_modulu_lub_parsera["potomek"]="tak"; argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args); if(czy_podano_bez_dodatkowych_sprawdzen)then argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or ""; end; argumenty_szablonu_modulu_lub_parsera["nazwa szablonu przodka"]=pf.args["nazwa szablonu przodka"] or TempFunc(); argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or TempFunc(); else ZmiennaZNazwaSzablonuRodzica(); end; else ZmiennaZNazwaSzablonuRodzica(); end; else ZmiennaZNazwaSzablonuRodzica() end; end; local czy_bez_argumentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]); local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]); local czy_parametry_pudelka_podstawowe=parametry_modul.CzyTak(frame.args["parametry podstawowe funkcji modułu pudełek"]) local pudelko_modul=require("Module:Pudełko"); for nazwa_parametru,wartosc_parametru in pairs(pf.args) do if(((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))and((not bez_argumentow_szablonu)or(not bez_argumentow_szablonu[nazwa_parametru])))then if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]) and(not tabela_bez_argumentow[nazwa_parametru]) and((not czy_bez_argumentow_nienazwanych_rodzica)or((czy_bez_argumentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru))) ))then local czy_dodac_do_parametrow; if czy_parametry_pudelka or czy_parametry_pudelka_podstawowe then local czy_dodac_do_parametrow=((not czy_parametry_pudelka_podstawowe) and mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$") and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$") and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or ((not czy_parametry_pudelka_podstawowe) and mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$") and wartosc_parametru~="" and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$") and wartosc_parametru~="" and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or ((not czy_parametry_pudelka_podstawowe) and mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$") and wartosc_parametru~="" and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or (mw.ustring.match(nazwa_parametru,"^typ jednostki$") and wartosc_parametru~="" and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)); if(czy_dodac_do_parametrow)then argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru; end; else argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru; end; end; end; end; if(co_ma_wywolac==0)then return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera}; elseif(co_ma_wywolac==1)then local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera}; local funkcja=frame.args["Funkcja"]; return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2); elseif(co_ma_wywolac==2)then return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera}; else return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera}; end; end; local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum) local parametry_modul=require("Module:Parametry"); local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]); local akapit=czy_akapit and "\n\n" or ""; local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or ""; local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]); local nowa_linia=czy_nowa_linia and "\n" or ""; local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]); local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]); local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]); local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]); local lancuch_znakow=""; local koniec=#tab_lancuch; for i=1,koniec,1 do local lancuch=tab_lancuch[i]; lancuch=mw.ustring.gsub(lancuch,"{{min}}",minimum); lancuch=mw.ustring.gsub(lancuch,"{{max}}",maksimum); if(not wyliczanka)then lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and "&nbsp;- " or ""))); else lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or "&nbsp;i ")); end; lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch; end; if(warunkowe)then local parametr=parametry_modul.CzyTak(frame.args["parametr"]); return p.InstrukcjeWarunkowe(lancuch_znakow,true,parametr); else return lancuch_znakow; end; end; p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe) local ciag_warunkowe_fun=function(s) local function ParserWiki(s,wywolanie) local czy_parser=mw.ustring.match(s,wywolanie); if(czy_parser)then return mw.getCurrentFrame():preprocess(s); end; end return ParserWiki(s,"^({{%s*#if:[^{}]*}})$") or ParserWiki(s,"^({{%s*#ifeq:[^{}]*}})$") or ParserWiki(s,"^({{%s*#switch:[^{}]*}})$") or ParserWiki(s,"^({{%s*#ifexpr:[^{}]*}})$") or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$") or ParserWiki(s,"^({{%s*#iferror:[^{}]*}})$") or ParserWiki(s,"^({{%s*#ifexist:[^{}]*}})$") or nil; end; local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun); if(derektywy_specjalne)then local ramka_dane_modul=mw.loadData("Module:Ramka/dane"); local tab_zamieniane=ramka_dane_modul.tablica_warunkowe_i_parametr; ciag=mw.ustring.gsub(ciag,"(__[^_]+__)",function(s) local tab_szablon=tab_zamieniane[s]; if(tab_szablon)then if(not derektywy_parametrowe)then return tab_szablon[1];end; return tab_szablon[2]; end; return nil; end); return ciag; end; return ciag; end; p.RozpakujArgumenty = function(zmienna_z_argumentami) local tablica_mikroszablonow={ ["{{+}}"]=";", }; local tabela_bez_argumentow={}; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(zmienna_z_argumentami))then local iter=mw.text.gsplit(zmienna_z_argumentami,";",true); local podlancuch; for podlancuch in iter do podlancuch=mw.text.trim(podlancuch); local liczba=tonumber(podlancuch); tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true; end; end; return tabela_bez_argumentow; end; p.PakujParametry = function(args) return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS); end; p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; p.Log = function(frame) local parametry_modul=require("Module:Parametry"); local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]); local wikitekst=frame.args["log"]; mw.log(wikitekst); return (czy_zwracac and wikitekst or ""); end; p.Szablon = function(frame) return ParserBlokowy(frame,0); end; p["Moduł"] = function(frame) return ParserBlokowy(frame, 1); end; p.Parser = function(frame) return ParserBlokowy(frame, 2); end; p.Q =function(frame) local parametry_modul=require("Module:Parametry"); local args_szablon=parametry_modul.PobierzArgsParametry(frame); local args_ksiazka={}; for name,value in pairs(args_szablon)do if(not parametry_modul.TypeNumber(name))then args_ksiazka[name]=value; elseif(name>1)then args_ksiazka[name-1]=value; elseif(name~=1)then args_ksiazka[name]=value; end; end; if(parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))then args_ksiazka["wyspecjalizowana"]=nil; end; local szablon=args_szablon[1]; local szablon_ksiazka=p["N"]{args={[1]=szablon,}}; local pf=frame:getParent(); return pf:expandTemplate{title=szablon_ksiazka,args=args_ksiazka,}; end; p.N=function(frame) local parametr=frame.args[1]; local parametry_modul=require("Module:Parametry"); local parametr_p=tonumber(frame.args["p"]) or 0; local parametr_n=parametry_modul.CzyTak(frame.args["n"]); local szablon=parametry_modul["CzyTakCiąg"](parametr) and parametr or ((parametr_p==1) and "Nieznany moduł" or ((parametr_p==2) and "Nieznana kategoria" or "Nieznany szablon")); szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local przestrzen=((parametr_p==1) and nazwy_np_modul.Module or ((parametr_p==2) and nazwy_np_modul.Category or nazwy_np_modul.Template)); local szablon_ksiazka=przestrzen..":Książka:"..szablon; local parametr_k=parametry_modul.CzyTak(frame.args["k"]); if(not parametr_k)then local techniczne_modul=require("Module:Techniczne"); local liczba_title,tab_title=techniczne_modul.PoliczZbiory{[1]=szablon_ksiazka,tekst=true,}; szablon_ksiazka=((liczba_title>0)and (szablon_ksiazka) or (przestrzen..":"..szablon)); end; if(parametr_n)then local nazwy_modul=require("Module:Nazwy"); szablon_ksiazka=nazwy_modul["NAZWASTRONY"]{nazwa=szablon_ksiazka,}; end; return szablon_ksiazka; end; p.A=function(frame) local parametr=frame.args[1]; local parametry_modul=require("Module:Parametry"); local parametr_p=parametry_modul.CzyTak(frame.args["p"]); local przestrzen; if(parametr_p)then local tabela_nazw={}; local nazwy_modul=require("Module:Nazwy"); przestrzen=nazwy_modul["NAZWAPRZESTRZENI"](parametr,tabela_nazw); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((przestrzen~=nazwy_np_modul.Template)and(przestrzen~=nazwy_np_modul.Module)and(przestrzen~=nazwy_np_modul.Category))then return parametr; end; parametr=nazwy_modul["NAZWASTRONY"](parametr,tabela_nazw); end; parametr=mw.ustring.gsub(parametr,"^[Kk]siążka:",""); parametr=(parametr_p and ((przestrzen~="") and (przestrzen..":") or "") or "")..parametr; return parametr; end; p.Powtarzaj = function(frame) local pf=frame:getParent(); local parametry_modul=require("Moduł:Parametry"); local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]); local tabela={}; local zacznij_nazwane; local parametry_modul=require("Module:Parametry"); if(czy_parametry)then local FormatujTabela=function(parametr_tab) return{ parametry_modul.CzyTak(parametr_tab[1]), parametry_modul.CzyTak(parametr_tab[2]), tonumber(parametr_tab[3]) or 0, tonumber(parametr_tab[4]), tonumber(parametr_tab[5]), }; end; local WstawDoTabeli=function(znaczenia_parametr) local parametr,wartosc=mw.ustring.match(znaczenia_parametr,"%s*([%w_%-][%w%s_%-]-)%s*=%s*(.-)%s*$"); if(parametr and wartosc)then if((not tonumber(parametr))and(not tabela[parametr]))then local parametr_tab=mw.text.split(wartosc,"%s*,%s*",false); tabela[parametr]=FormatujTabela(parametr_tab); end; else if((not tonumber(znaczenia_parametr))and(not tabela[znaczenia_parametr]))then tabela[znaczenia_parametr]={}; end; end; end; local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false); local czy=true; for znaczenia_parametr in iter do znaczenia_parametr=mw.text.trim(znaczenia_parametr); local czy_nie_omijac=parametry_modul.CzyTak(znaczenia_parametr); if(czy_nie_omijac)then if(czy)then zacznij_nazwane=tonumber(znaczenia_parametr); czy=false; if(not zacznij_nazwane)then zacznij_nazwane=0; WstawDoTabeli(znaczenia_parametr); end; else WstawDoTabeli(znaczenia_parametr); end; end; end; end; local tabela_dodatkowe={}; local czy_dodatkowe=parametry_modul.CzyTak(frame.args["dodatkowe"]); if(czy_dodatkowe)then local iter=mw.text.gsplit(mw.text.trim(frame.args["dodatkowe"]),"%s*;%s*",false); for name in iter do tabela_dodatkowe[name]=true; end; end; if(not zacznij_nazwane)then zacznij_nazwane=0;end; local function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana) local args=pf.args; local maksymalna_liczba_nazwy_danego_parametru=0; for nazwa_parametru, wartosc_parametru in pairs(args)do local czy_jedynka=false; if(type(nazwa_parametru)=="string")then local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%-%s]*[%a%-])(%s?)(%d+)$"); if(not nazwa_podstawy_parametru and not spacja and not liczba)then nazwa_podstawy_parametru=nazwa_parametru; spacja=""; liczba=1; czy_jedynka=true; end; local subtab=tabela[nazwa_podstawy_parametru]; if(subtab)then local nie_spacja_parametru=subtab[1]; local czy_z_jedynka=subtab[2]; liczba=tonumber(liczba) or 0; if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1)))) or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1)))) )then if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba); end; end; end; end; end; return maksymalna_liczba_nazwy_danego_parametru; end; local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function() local maksimum_all=0; for wartosc_parametru,dane_parametru in pairs(tabela)do if(parametry_modul.TypeString(wartosc_parametru))then if(not tabela_dodatkowe[wartosc_parametru])then local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru); local maksimum=maksymalna_liczba_nazwy_danego_parametru-(dane_parametru[3] or 0); maksimum_all=math.max(maksimum-zacznij_nazwane,maksimum_all); end; end; end; return maksimum_all; end; local zacznij_na_poczatku,skoncz_na_koncu; local tekst_do_analizy=frame.args[1]; if(not frame.args[1])then return "(brak parametru do analizy)";end; local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy); if(not czy_tekst)then return "(parametr do analizy pusty)";end; local start=frame.args["start"]; local koniec=frame.args["koniec"]; local czy_start=parametry_modul.CzyTak(start); local czy_koniec=parametry_modul.CzyTak(koniec); local zaznacz=frame.args["zaznacz"]; local tabela_zaznacz={}; if(zaznacz)then local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false) for liczba in iter do tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0; end; end; local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]); local czy_ma_nazwane; local function Wylicz_skoncz_na_koncu() czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela); if(czy_ma_nazwane)then if(czy_rozne)then local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]); if(not maks_numer)then return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args)); else return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args); end; else return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(); end; else return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args); end; end; local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu(); if(not czy_koniec)then skoncz_na_koncu=skoncz_na_koncu_wyliczona; else skoncz_na_koncu=math.max(math.min(skoncz_na_koncu_wyliczona, tonumber(koniec) or 0),0); end; zacznij_na_poczatku=math.max(tonumber(start) or 1,1); if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end; for name, tab_par in pairs(tabela)do local _4=tab_par[4];local _5=tab_par[5]; if(_4)then zacznij_na_poczatku=math.max(math.min(zacznij_na_poczatku,_4 or 1),1);end; if(_5)then skoncz_na_koncu=math.max(math.max(skoncz_na_koncu,_5 or 0),0);end; end; local czy_niepodane=parametry_modul.CzyTak(frame.args["niepodane"]); local czy_zero_element=false; if(czy_niepodane)then if(zacznij_na_poczatku>skoncz_na_koncu)then skoncz_na_koncu=zacznij_na_poczatku; czy_zero_element=true; end; end; local lancuch_znakow=""; local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or ""; if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end; local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]); local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]); local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]); local nie_wytnij_nazwane=parametry_modul.CzyTak(frame.args["nie wytnij nazwane"]); local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_"; local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru) local parametr_tab=tabela[nazwa_parametru]; if(parametr_tab)then return (not parametr_tab[1]),parametr_tab[2]; end; return true,false; end; if(not czy_rozne)then if(czy_ma_nazwane)then local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow) local tab_lancuch={}; local maksimum=0; local minimum; for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do local lancuch=tekst_do_analizy; local czy=nil; local wytnij_ujemne; for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do if(zmienne_parametrowe)then local subtab=tabela[zmienne_parametrowe]; local liczba_przesuniecia=subtab and subtab[3] or 0; local liczba=licznik+liczba_przesuniecia+zacznij_nazwane; ---- if(liczba<1)then wytnij_ujemne=true;end; if(liczba>0)then local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe); local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik]; local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element)))); local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe]))))); czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste))) or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu))) or ((wytnij_puste and not wytnij)and (parametry_modul.CzyTak(wartosc_elementu)))); local tabelka_szablonow={ ["{{".._i.."}}"]=licznik, ["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))), }; local function fun_tabelka_szablonow(ciag) local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}"); return tabelka_szablonow[ciag_strip] or ciag; end; lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow); end; end; end; if(not wytnij_ujemne)then local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik); czy=czy or czy_zero_element; if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then tab_lancuch[#tab_lancuch+1]=lancuch; maksimum=math.max(maksimum,licznik); minimum=math.min(minimum or licznik,licznik); end; end; end lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum); end; Analizuj_dla_bez_rozne(tabela); else local tab_lancuch={}; local maksimum=0; local minimum; for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do local element=pf.args[licznik] local czy=czy_zero_element or (((element)and ((not wytnij)and(not wytnij_puste))) or((wytnij)and(parametry_modul["CzyTakCiąg"](element))) or((wytnij_puste and not wytnij)and(parametry_modul.CzyTak(element)))); local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik); if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik); maksimum=math.max(maksimum,licznik); minimum=math.min(minimum or licznik,licznik); end; end; lancuch_znakow=BudowaSzereguZDanych(frame, tab_lancuch,minimum or 0,maksimum); end; else local function Analizuj_z_rozne(tabela_wszystkich_parametrow) local tab_lancuch={}; local maksimum=0; local minimum; for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do local czy=false; local czy_niepuste=false; local wytnij_ujemne=false; local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka) local wartosc,klucz; if(zmienne_parametrowe)then local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia) local liczba=licznik+liczba_przesuniecia+zacznij_nazwane; if(liczba<1)then wytnij_ujemne=true;end; if(liczba>0)then local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba]; local czy_jedynka=(liczba==1)and element; local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe]))))); czy_niepuste=czy_niepuste or ((not nie_wytnij_nazwane)and((wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu)) or (wytnij_puste and not wytnij and parametry_modul.CzyTak(wartosc_elementu))) or (nie_wytnij_nazwane and wartosc_elementu)); czy=czy or wartosc_elementu; wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or ""))); klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}"; end; end; local subtab=tabela[zmienne_parametrowe]; local liczba_przesuniecia=subtab and subtab[3] or 0; Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia); end; return klucz,wartosc; end; local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc) if((wartosc)and(klucz))then local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc); return przetwarzane; end; return ""; end; local lancuch_zaanalizowany=tekst_do_analizy; for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.."%s*{{%s*".._i.._i.."+%s*}}"); if(lokalizacja)then zmienne_parametrowe=mw.text.trim(zmienne_parametrowe); local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe); local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka); if(wytnij_ujemne)then break;end; lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc); end; end; if(not wytnij_ujemne)then local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}"); czy=czy_zero_element or czy or ((not zmienna_numerowana_wikikodu)and(mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")))or((zmienna_numerowana_wikikodu)and(pf.args[licznik])); local klucz="{{%s*".._i.."%s*}}"; local wartosc=licznik; lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc); czy_niepuste=czy_zero_element or czy_niepuste or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik])) or (wytnij_puste and not wytnij and parametry_modul.CzyTak(pf.args[licznik])); local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik); if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany; maksimum=math.max(maksimum,licznik); minimum=math.min(minimum or licznik,licznik); end; end; end; lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum); end; Analizuj_z_rozne(tabela); end; if(#lancuch_znakow==0)then return gdy_nic;end; local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow; return przetworzony_wikikod; end; p.PowtarzajOdDo=function(frame) local start=tonumber(frame.args["start"]); local koniec=tonumber(frame.args["koniec"]); local krok=tonumber(frame.args["krok"]) or 1; local parametry_modul=require("Module:Parametry") local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or ""); if((not start)or(not koniec))then return "";end; if(krok==0)then return "";end; if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end; local kod=frame.args[1]; tabela_mikroszablonow={ ["{{start}}"]=start, ["{{koniec}}"]=koniec, ["{{krok}}"]=krok, } kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow); local lancuch=""; local licznik=start; local kodprzeskok=frame.args["przeskok"]; local pf=frame:getParent(); while licznik<=koniec do local przeskok; if(kodprzeskok)then local _; przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik); przeskok=pf:preprocess(przeskok); end; local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik); lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2; licznik=licznik+krok+(tonumber(przeskok) or 0); end; local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch; return przetworzony_wikikod; end; p["PrzetwarzajIterującCiąg"]=function(frame) local poziom=frame.args["ciąg"]; poziom=mw.text.trim(poziom); local tab_poziom=mw.text.split(poziom,"%s*;%s*",false); local len_tab_poziom=#tab_poziom; local start=1;local koniec=len_tab_poziom;local krok=1; tabela_mikroszablonow={ ["{{start}}"]=start, ["{{koniec}}"]=koniec, ["{{krok}}"]=krok, } local parametry_modul=require("Module:Parametry"); local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or ""); local kod=frame.args[1]; kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow); local lancuch=""; local licznik=start; local kodprzeskok=frame.args["przeskok"]; if(kodprzeskok)then kodprzeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_mikroszablonow); end; local pf=frame:getParent(); while licznik<=koniec do local przeskok; local tabela_microszablonow2={ ["{{_}}"]=licznik, ["{{ciąg}}"]=tab_poziom[licznik]; }; if(kodprzeskok)then przeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_microszablonow2); przeskok=pf:preprocess(przeskok); end; local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2); lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2; licznik=licznik+krok+(tonumber(przeskok) or 0); end; local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch; return przetworzony_wikikod; end; p["PowtarzajWedług"] = function(frame) local start=tonumber(frame.args["start"]) or 1; local wybrany_wzor=frame.args["wzór"]; local parametry_modul=require("Module:Parametry") local czy_link=parametry_modul.CzyTak(frame.args["link"]); local liczba_list=p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}}; local lancuch=""; local linki_modul=require("Module:S"); for i=start,liczba_list,1 do local wybrany_link_lub_bez; local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i)); if czy_link then wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez}; end; lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez; end; return lancuch; end; p["LiczbaPrawychUkośników"] = function(frame) local nazwa=frame.args[1]; local _,ile=mw.ustring.gsub(nazwa,"/",function(s)return nil;end); return ile; end; p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame) local start=tonumber(frame.args["start"]) or 1; licznik=start; local strona=frame.args["wzór"]; while true do local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik); local title=mw.title.makeTitle('',strona2); if((not title) or (not title.exists))then return licznik-1; end; licznik=licznik+1; end; end; p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame) local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local pf=frame:getParent(); local parametr=frame.args["zmienna"]; local numerowane=frame.args["numerowane"]; parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr); local czy_numerowane=parametry_modul.CzyTak(numerowane); local numer=nil; for name,value in pairs(pf.args)do local __name=tostring(name); local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$"); __numer=tonumber(__numer) or (((__numer)and(__numer=="")) and 1 or nil); if((__numer)or((czy_numerowane)and(parametry_modul.TypeNumber(name))))then if(numer)then numer=math.min(__numer or name,numer); else numer=__numer or name; end; end; end; return numer; end; p.IleJestTakichOdpowiednikowychZmiennych=function(frame) local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local pf=frame:getParent(); local parametr=frame.args["zmienna"]; local numerowane=frame.args["numerowane"]; parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr); local czy_numerowane=parametry_modul.CzyTak(numerowane); local numer=0; local tab={}; for name,value in pairs(pf.args)do local __name=tostring(name); local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$"); if((not tab[name])and((__numer)or((czy_numerowane)and(parametry_modul.TypeNumber(name)))))then numer=numer+1; tab[tonumber(__numer) or(((__numer)and(__numer==""))and 1 or nil) or name]=true; end; end; return numer; end; p["Parametr w tablicy nazw"]=function(frame) local zmienna_z_argumentami=frame.args["parametry"]; if(not zmienna_z_argumentami)then return;end; local jedna_pozycja=frame.args["pozycja"]; if(not jedna_pozycja)then return;end; local parametry_modul=require("Module:Parametry"); jedna_pozycja=parametry_modul["Odstępy"]{[1]=jedna_pozycja,[2]="tak"}; if(jedna_pozycja=="")then return;end; local od_duzej=parametry_modul.CzyTak(frame.args["od dużej"]); jedna_pozycja=od_duzej and mw.getContentLanguage():ucfirst(jedna_pozycja) or jedna_pozycja; local iter=mw.text.gsplit(zmienna_z_argumentami,";",true); local tablica={}; for pozycja in iter do pozycja=parametry_modul["Odstępy"]{[1]=pozycja,[2]="tak"}; if(pozycja~="")then tablica[od_duzej and mw.getContentLanguage():ucfirst(pozycja) or pozycja]=true; end; end; return (tablica[jedna_pozycja] and "tak" or nil); end; return p; exzl6v1x5lr48oonp0xab5seh48zvpx Moduł:Szablonowe/Potrzebne 828 60145 558006 557814 2026-09-29T19:32:09Z Persino 2851 558006 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; 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 numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else 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])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; awl4synl9cp3863iyyqryqez8uk6zd7 558007 558006 2026-09-29T19:33:09Z Persino 2851 Anulowano wersję [[Special:Diff/558006|558006]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 558007 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; 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 numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),1; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),1; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),1; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else 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])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; h9020qcoax8pauxy8sqx31x1bhsz65q 558009 558007 2026-09-29T21:12:17Z Persino 2851 558009 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,nazwa_modulu,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; local __metatable=getmetatable(tab_atrybuty); local __tab_atrybuty=__metatable and {} or nil; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=__metatablekoniec; local tekst=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); if(__metatable)then table.insert(__tab_atrybuty,{name,tekst,start,}); else tab_atrybuty[name]=tekst; end; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; if(__metatable)then table.insert(__tab_atrybuty,{name,true,start,}); else tab_atrybuty[name]=tekst; end; end; if(__metatable)then table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) ; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nazwa_modulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nazwa_modulu,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; 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 numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) local czy_dalej_kwadratowe=mw.ustring.match(szablon,"%[%["); if(czy_dalej_kwadratowe)then return czy_dalej_kwadratowe,2; else return mw.ustring.match(szablon,"^%["),3; end; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,3; else return mw.ustring.match(szablon,"^%{"),4; end; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) local czy_dalej_klamerka=mw.ustring.match(szablon,"%{%{"); if(czy_dalej_klamerka)then return czy_dalej_klamerka,2; else return mw.ustring.match(szablon,"^%{"),3; end; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else 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])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; p8v3hvew9bd3f1kneiv0mwy5pbrqaio Napary/Ostryż długi 0 61478 557993 552141 2026-09-29T15:35:27Z EdytaT 2664 557993 wikitext text/x-wiki {{Podrozdział|[[Napary]]|Ostryż długi}} {{Uprawa - roślina infobox | nazwa = Ostryż długi | obrazek = A closeup of Turmeric.JPG | łacina = Curcuma longa L. | nazwy = kurkuma | wikipedia = Ostryż długi | wikibooks 1 = Napary/Ostryż długi | _wikibooks 1 = herbatek z kurkumy | wikibooks 2 = Zioła i przyprawy/Kurkuma | _wikibooks 2 = kurkumy | wikibooks 3 = Ekoogrodnictwo/Rośliny użytkowe/Ostryż długi | _wikibooks 3 = uprawy ostryżu długiego | wikispecies = Curcuma longa | wikisłownik 1 = ostryż długi | wikisłownik 2 = kurkuma | commons = Category:Curcuma longa }} == Ostryż długi (kurkuma) == {{Uwaga|Informacje tu zawarte nie są tekstami medycznymi i nie służą leczeniu zachorowań!<br>W przypadku alergii nie należy korzystać z produktów wytwarzanych z tej rośliny.}} {{Uwaga|Zobacz też: {{lpr|Zastrzeżenia dotyczące pojęć medycznych}} w Wikipedii.}} * Jest [[Napary/Działanie#Przeciwutleniacze|przeciwutleniaczem]]. * Ma działanie [[Napary/Działanie#Przeciwzapalne|przeciwzapalne]], co nieco łagodzi dolegliwości przy [[Napary/Działanie#Stawy|artrozie]]. * Zawiera kurkuminę wspierając tworzenie serotoniny i dopaminy. * Działanie [[Napary/Działanie#Przeciwbólowe|przeciwbólowe]] i [[Napary/Działanie#Przeciwzapalne|przeciwzapalne]] kurkumy może przynieść ulgę osobom cierpiącym na [[Napary/Działanie#Stawy|bóle stawów (artrozę)]] i mięśni. * Istnieją badania wskazujące na działanie porównywalne do działania [[Napary/Działanie#Depresja|antydepresantów]]. * Poprawia [[Napary/Działanie#Nastrój|nastrój]]. == Przeciwwskazania == * Może szkodzić wątrobie. == Surowiec zielarski == * Surowcem zielarskim jest kłącze kurkumy (''Curcumae longae rhizoma''). == Suplementacja == * Maksymalna dawka dzienna to 1,5 bis 3 g (ok. pół łyżeczki do jednej łyżeczki) proszku. * 0,5 g (niewielka szczypta) zawartej w kurkumie [[Napary/Pomoc#K|kurkuminy]] dziennie ma ogólnoustrojowy efekt przeciwzapalny. * Spożywaj w połączeniu z pożywieniem zawierającym oliwę z oliwek, olej z czarnuszki, olej lnianym, jogurt itp., ponieważ kurkuma jest przyswajana w połączeniu z tłuszczem. * Dodaj trochę pieprzu, by polepszyć przyswajanie [[Napary/Pomoc#K|kurkuminy]]. == Napary z ostryża długiego == === Herbatka z kurkumy === === Mieszanka === * Poleca się łączyć z [[Napary/Bakopa drobnolistna|brahmi (bakopą drobnolistną)]], [[Napary/Różeniec górski|różeńcem górskim]], [[Napary/Witania ospała|ashwagandhą (witanią ospałą)]], [[Napary/Klitoria ternateńska|klitorią ternateńską]] oraz z [[Napary/Herbata zielona|herbatą zieloną]]. == Przypisy == {{Przypisy}} {{BrClear}} <noinclude>{{Wolumin}}</noinclude> kgheg9nppf246yj8f87kd5ojpnyv33k Napary/Wąkrotka azjatycka 0 61480 557992 520958 2026-09-29T15:35:15Z EdytaT 2664 557992 wikitext text/x-wiki {{Podrozdział|[[Napary]]|Wąkrotka azjatycka}} {{Uprawa - roślina infobox | nazwa = Wąkrotka azjatycka | obrazek = Centella asiatica 6121.jpg | łacina = Centella asiatica | nazwy = wąkrota azjatycka, gotu kola | wikipedia = Wąkrotka azjatycka | wikispecies = Centella asiatica | wikisłownik = wąkrotka azjatycka | commons = Category:Centella asiatica }} == Wąkrotka azjatycka == {{Uwaga|Informacje tu zawarte nie są tekstami medycznymi i nie służą leczeniu zachorowań!<br>W przypadku alergii nie należy korzystać z produktów wytwarzanych z tej rośliny.}} {{Uwaga|Zobacz też: {{lpr|Zastrzeżenia dotyczące pojęć medycznych}} w Wikipedii.}} * Jest ważnym ziołem w tradycyjnej medycynie chińskiej. * Wąkrotka azjatycka jest [[Napary/Pomoc#A|adaptogenem]]. * Wspomaga regenerację komórek nerwowych, poprawia [[Napary/Działanie#Pamięć|pamięć]] i [[Napary/Działanie#Koncentracja|koncentrację]], a także łagodzi objawy [[Napary/Działanie#Stres|stresu]]. == Przeciwwskazania == == Surowiec zielarski == == Suplementacja == * Można pić 1-2 szklanki dziennie, najlepiej rano i w południe. == Napary z wąkrotki azjatyckiej == === Herbatka z suszonego ziela wąkrotki azjatyckiej === * Przygotuj zalewając 1-2 łyżeczki suszonego ziela szklanką wrzącej wody i parząc przez 10-20 minut. === Mieszanka === * Gotu kola w połączeniu z [[Napary/Witania ospała|ashwagandhą (witanią ospałą)]] działa synergistycznie. == Przypisy == {{Przypisy}} {{BrClear}} <noinclude>{{Wolumin}}</noinclude> md0ovebc9814plb2t9tj698x6kn9gfa Napary/Mięta pieprzowa 0 61502 557994 549699 2026-09-29T15:36:58Z EdytaT 2664 557994 wikitext text/x-wiki {{Podrozdział|[[Napary]]<br>Mięta pieprzowa}} {{Uprawa - roślina infobox | nazwa = Mięta pieprzowa | obrazek = Mentha piperita 0zz.jpg | łacina = Mentha × piperita L. | nazwy = Mięta lekarska | wikipedia = Mięta pieprzowa | wikispecies = Mentha × piperita | wikisłownik = mięta pieprzowa | commons = Category:Mentha × piperita }} == Mięta pieprzowa == {{Uwaga|Informacje tu zawarte nie są tekstami medycznymi i nie służą leczeniu zachorowań!<br>W przypadku alergii nie należy korzystać z produktów wytwarzanych z tej rośliny.}} {{Uwaga|Zobacz też: {{lpr|Zastrzeżenia dotyczące pojęć medycznych}} w Wikipedii.}} * Zawiera [[Napary/Pomoc#M|mentol]]. * Łagodzi [[Napary/Działanie#Nudności|nudności]] i [[Napary/Działanie#Wzdęcia|wzdęcia]]. * Pomaga przy [[Napary/Działanie#Ból głowy|bólu głowy]]. * Pomaga przy [[Napary/Działanie#Inkontynencja|inkontynencji]]. == Przeciwwskazania == == Surowiec zielarski == == Suplementacja == == Herbatki z mięty pieprzowej == * Do mięty lub mieszanek z mięta można również dodać nieco miodu i cytryny lub łyżkę stołową [[Napary/Pomoc#O|octu jabłkowego]]. === Herbata z suszonej mięty klasyczna === * 1-2 łyżeczki suszonej mięty na 200 ml wody. * Parz przez 5-10 minut. === Mieszanka [[Napary/Działanie#Rozkurczowe|rozluźniająca]] z [[Napary/Rumianek pospolity|rumianku pospolitego]] i mięty === * Zaparz 1 łyżkę mieszanki suszonych koszyczków [[Napary/Rumianek pospolity|rumianku pospolitego]] i suszonych liści mięty i parz jak powyżej. * Pij 1-2 filiżanki dziennie po posiłkach, aby wspomóc [[Napary/Działanie#Trawienie|trawienie]], albo wieczorem, aby się [[Napary/Działanie#Uspokojenie|wyciszyć]]. === Mieszanka [[Napary/Działanie#Rozkurczowe|rozluźniająca]] z [[Napary/Rumianek pospolity|rumianku pospolitego]], mięty i [[Napary/Melisa lekarska|melisy lekarskiej]] === * Uspokajające działanie melisy dodatkowo łagodzi dolegliwości przewodu pokarmowego. * Zaparzaj i popijaj jak wyżej. === Mieszanka na [[Napary/Działanie#Trawienie|trawienie]] z [[Napary/Melisa lekarska|melisy lekarskiej]], mięty i [[Napary/Dziurawiec zwyczajny|dziurawca zwyczajnego]] === * Wymieszaj po łyżeczce suszonego ziela [[Napary/Melisa lekarska|melisy lekarskiej]], mięty pieprzowej i [[Napary/Dziurawiec zwyczajny|dziurawca zwyczajnego]]. * Zalej szklanką wrzątku. * Parz 10 minut. === Mieszanka na [[Napary/Działanie#Uspokojenie|uspokojenie]] z [[Napary/Lawenda wąskolistna|lawendy]] i mięty === Z miętą pieprzową świetnie komponuje się [[Napary/Lawenda wąskolistna|lawenda]]. Połączenie tych dwóch ziół działa zarówno uspokajająco, jak i regenerująco. Ta mieszanka pomaga złagodzić stres i niepokój, a kojąca lawenda i orzeźwiająca mięta działają razem, przywracając równowagę ciała i umysłu. * Wsyp do szklanki jedną łyżeczkę suszonej [[Napary/Lawenda wąskolistna|lawendy]] i 1 łyżeczkę suszonej mięty. * Zalej świeżo zagotowaną wodą. * Parz co najmniej 15 minut. * Można pić na zimno i gorąco. == Przypisy == {{Przypisy}} {{BrClear}} <noinclude>{{Wolumin}}</noinclude> ooiymst19kg4fd4bjl4od4ev83sm3am Napary/Malina właściwa 0 61554 557995 522846 2026-09-29T15:42:46Z EdytaT 2664 557995 wikitext text/x-wiki {{Podrozdział|[[Napary]]|Malina właściwa}} {{Uprawa - roślina infobox | nazwa = Malina właściwa | obrazek = Himbeeren IMG 7639.jpg | łacina = Rubus idaeus L. | nazwy = | wikipedia = Malina właściwa | wikispecies = Rubus idaeus | wikisłownik = malina właściwa | commons = Category:Rubus idaeus }} == Malina właściwa == {{Uwaga|Informacje tu zawarte nie są tekstami medycznymi i nie służą leczeniu zachorowań!<br />W przypadku alergii nie należy korzystać z produktów wytwarzanych z tej rośliny.}} {{Uwaga|Zobacz też: {{lpr|Zastrzeżenia dotyczące pojęć medycznych}} w Wikipedii.}} * Ma działanie [[Napary/Działanie#Ściągające|ściągające|]] == Przeciwwskazania == == Surowiec zielarski == * Surowcem zielarskim są liście maliny właściwej (''Rubi idaei folium''). * Owoce maliny również mogą być stosowane, zwłaszcza w wersjach owocowych herbatek, np. w kompozycji z [[Napary/Jeżyna krzewiasta|jeżynami]], [[Napary/Porzeczka|porzeczkami]] czy [[Napary/Dzika róża|dziką różą]]. == Suplementacja == == Napary z maliny == === Herbatka z suszonych liści maliny === * Zalej suszone liście lub owoce maliny wrzątkiem. * Zaparzaj ok. 10 minut pod przykryciem. === Mieszanka === * Możesz połączyć z [[Napary/Mięta pieprzowa|mięta]] dodając garść suszonych lub świeżych liści mięty. * Napój smakuje bardzo dobrze latem jako herbata lodowa z dodatkiem [[Napary/Lima|limetki]] i miodu. == Przypisy == {{Przypisy}} {{BrClear}} <noinclude>{{Wolumin}}</noinclude> cw9vjgxa82nwc7bwjw5ufj1dmxulp0h Napary/Biblioteka 0 62042 557996 530817 2026-09-29T16:03:57Z EdytaT 2664 557996 wikitext text/x-wiki <noinclude>{{NawigacjaG | 1 = Napary | 2 = | 3 = }}</noinclude> == [[Grafika:Open book nae 02.png|100px|left]] Biblioteka == <!--TODO Daktyle, 15 % Brązowy cukier, Żółte rodzynki, Pomarańcza, Rodzynki, 5 % Kawałki śliwek, Cynamon, Naturalny aromat, 1 % Wanilia, Rodzynki sułtanki --> <!--TODO Kaufen Sie ungeschwefelte getrocknete Feigen. Schneiden Sie drei Stück davon mit einem scharfen Messer in dünne Scheiben und legen Sie diese in eine Kräutertasse. Nun müssen Sie den gehäuften Teelöffel eines Käutertees dazu geben, der speziell für die Atemwege geeignet ist: Thymian, Malve, Spitzwegerich oder Fenchel. --> <!--TODO Wanilia - właściwości, jako dodatek do herbatek --> ====== WPZielarstwo ====== * [https://portal.abczdrowie.pl/ziololecznictwo-kategoria], Wirtualna Polska, dostęp 03.07.2025. * [https://atlas.roslin.pl/ Atlas roślin (zielarskie, pszczelarskie)], dostęp 03.07.2025. * [https://www.ekologia.pl/atlas-ziol/ Atlas ziol], dostęp 03.07.2025. * [https://www.aok.de/pk/magazin/suche/?q=Melisse AOK], dostęp 03.07.2025. * [https://apteline.pl/encyklopedia-ziol/ Sklep internetowy Apteline, ''Encyklopedia ziół''], dostęp 03.07.2025. * [https://www.aromatika.com.pl/pl/c/Ziola/59/ Sklep internetowy AROMATIKA], dostęp 03.07.2025. * [https://www.doz.pl/czytelnia DOZ], dostęp 03.07.2025. * [https://www.labofarm.pl/encyklopedia-ziol/ Encyklopedia ziol], dostęp 03.07.2025. * [https://www.escop.com/ ESCOP], dostęp 03.07.2025. * [https://gotujwstylueko.pl/artykuly/eko-produkty/topinambur-cytrus-polnocy-naturalny-probiotyk- Gotuj w stylu eko], dostęp 03.07.2025. * [https://www.izielnik.pl/blog/ izielnik], dostęp 03.07.2025. * [https://www.lekinatury.pl/pl/encyklopedia-ziol/jezyna-faldowana.html Leki natury Encyklopedia ziół], dostęp 03.07.2025. * [https://jn.nutrition.org/ The Journal of Nutrition], dostęp 03.07.2025. * [https://www.plantago.com.pl/blog/slowniczek-zielarza/ Sklep internetowy Plantago Słowniczek zielarza cz. I], 03.01.2017, dostęp 03.07.2025. * [https://www.plantago.com.pl/ziola/herbaty-ziolowe Sklep internetowy Plantago], dostęp 03.07.2025. * [https://www.plantura.garden/gruenes-leben/ernaehrung/kraeutertee-mischungen-aus-dem-garten Plantura], dostęp 03.07.2025. * [https://ziolaioleje.pl/pl/herbatki-do-zaparzania Sklep internetowy Zioła i oleje], dostęp 03.07.2025. * [https://lubelskieziola.pl/ Lubelskie zioła], dostęp 03.07.2025. * [https://www.magicznyogrod.pl/?_gl=1*1qqxp4q*_up*MQ..*_ga*ODY5MDQzMzk4LjE3NTQyMTUzMjk.*_ga_MKNX66454E*czE3NTQyMTUzMjkkbzEkZzAkdDE3NTQyMTUzMjkkajYwJGwwJGgw Sklep internetowy Magiczny ogród], dostęp 03.07.2025. * [https://trafionewzielone.pl/rodzaje-japonskiej-herbaty-pm-26.html Rodzaje japońskiej herbaty], dostęp 03.07.2025. * [https://swiatsupli.pl/blog/top-10-ziol-na-poprawe-pamieci-i-koncentracji/ 10 ziol na poprawe pamieci i koncentracji], dostęp 03.07.2025. * [https://netzdrowie.pl/blog/ziola-na-alzheimera-i-demencje-naturalne-metody-wspomagania-pamieci-i-funkcji-poznawczych-u-seniorow.html ziola-na-alzheimera-i-demencje], dostęp 03.07.2025. * [https://www.tk.de/techniker/gesundheit-foerdern/gesunde-ernaehrung/rezepte/trinken-2020716 Techniker Krankenkasse (Getränke)], dostęp 03.07.2025. * [https://krukam.pl/Suszona-lawenda-do-picia-sprawdz-dlaczego-warto-blog-pol-1724746816.html Suszona-lawenda-do-picia], dostęp 03.07.2025. * [https://www.teelexikon.com/GABA-tee.php Teelexikon], dostęp 03.07.2025. * [https://www.das-tee-magazin.de/kraeuter-tee/ Das Teemagazin], dostęp 03.07.2025. * [https://www.meine-teemischung.de/ Teemischung], dostęp 03.07.2025. * [https://www.kostbarenatur.net/gesunde-wildpflanzen-teemischung-selber-machen/ gesunde Wildpflanzen], dostęp 03.07.2025. * [https://www.wwf.pl/sites/default/files/inline-files/ZIELNIK_EDUKACYJNY.pdf/ Zielnik edukacyjny], dostęp 03.07.2025. * [https://ziolowaprzystan.pl/przewodnik-po-ziolach-sezonowych-jakie-ziola-zbierac-w-sierpniu/ Ziolowa Przystan], dostęp 03.07.2025. * [https://onlinelibrary.wiley.com/doi/abs/10.1002/ptr.5591 Phytotherapy Research], dostęp 03.07.2025. * [https://www.zentrum-der-gesundheit.de/ernaehrung/lebensmittel/tee-uebersicht/kamillentee Zentrum der Gesundheit], dostęp 03.07.2025. * [https://samen.de/blog/estragon-tee-zubereiten-aromatisches-kraeutererlebnis.html?srsltid=AfmBOopIozGj7t3OrFtftn8DqinwtHxfLgDxWauoIZaLmlHEzFYLaskO Samen.de], dostęp 03.07.2025. * [https://modr.mazowsze.pl/images/wies-mazowiecka/dopobrania/Wies_Mazowiecka_04_2020.pdf Wieś mazowiecka], dostęp 03.07.2025. * [https://www.dlr.rlp.de/internet/global/inetcntr.nsf/dlr_web_full.xsp?src=V4149DX59B&p1=title%3DKr%C3%A4uter~~url%3D%2FInternet%2Fglobal%2Fthemen.nsf%2F0%2F0124E1BDB24340E1C12570760033C1E6%3FOpenDocument&p4=GM3SL3UZH8 Ernährungsberatung], dostęp 03.07.2025. * [https://cybra.lodz.pl/Content/17812/ziolo-musz.pdf Ziololecznictwo], dostęp 03.07.2025. * [https://leksykon.com.pl/leksykon-skladnikow/skladniki-na-r/ Leksykon skadnikow], dostęp 03.07.2025. * [https://www.manutea.pl/zielnik Sklep internetowy Manutea], dostęp 03.07.2025. {{Przypisy}} <noinclude>{{Nawigacja | 1 = Napary | 2 = | 3 = }}</noinclude> 6zk7ybojh1y0837y17baadkeijzhshp Szablon:PrzypisStrona/opis 10 62171 557997 556547 2026-09-29T17:29:31Z Persino 2851 /* Zobacz też */ 557997 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest problematycczny, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, które te zmienne nie wolno podawać, bo zostanie wywołany błąd funkcji: {{Code|{{m|Sprawdź|Parametry}}}}. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o szablon: {{Code|{{s|Cytuj}}}}, i w niej wywołany moduł: {{Code|{{ld2|Cytuj}}}}, a w niej funkcję: {{Code|{{m|Cytuj|custom2}}}}, zbudowaną w oparciu, w języku {{lpg|Lua}} w {{lpr|Lua|Sccribunto}}, o: {{Code|{{m|Cytuj|custom}}}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> tb2nd85o9plx8vzqk2vj50vtv70gw2b 558008 557997 2026-09-29T19:38:10Z Persino 2851 558008 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest problematycczny, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, które te zmienne nie wolno podawać, bo zostanie wywołany błąd funkcji: {{Code|{{m|Sprawdź|Parametry}}}}. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o szablon: {{Code|{{s|Cytuj}}}}, i w niej wywołany moduł: {{Code|{{ld2|Cytuj}}}}, a w niej funkcję: {{Code|{{m|Cytuj|custom2}}}}, zbudowaną w oparciu, w języku {{lpg|Lua}} w {{lpr|Lua|Sccribunto}}, o: {{Code|{{m|Cytuj|custom}}}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> 31sw2gy3e6woe32lc3svz5eb45oz5z2 558010 558008 2026-09-29T21:19:25Z Persino 2851 Anulowano wersję [[Special:Diff/558008|558008]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 558010 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest problematycczny, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, które te zmienne nie wolno podawać, bo zostanie wywołany błąd funkcji: {{Code|{{m|Sprawdź|Parametry}}}}. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o szablon: {{Code|{{s|Cytuj}}}}, i w niej wywołany moduł: {{Code|{{ld2|Cytuj}}}}, a w niej funkcję: {{Code|{{m|Cytuj|custom2}}}}, zbudowaną w oparciu, w języku {{lpg|Lua}} w {{lpr|Lua|Sccribunto}}, o: {{Code|{{m|Cytuj|custom}}}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> tb2nd85o9plx8vzqk2vj50vtv70gw2b 558011 558010 2026-09-30T05:26:59Z Persino 2851 /* Parametry ignorowane */ 558011 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest problematycczny, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, które te zmienne nie wolno podawać, bo zostanie wywołany błąd funkcji: {{Code|{{m|Sprawdź|Parametry}}}}. === Parametry nieobsługiwane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o szablon: {{Code|{{s|Cytuj}}}}, i w niej wywołany moduł: {{Code|{{ld2|Cytuj}}}}, a w niej funkcję: {{Code|{{m|Cytuj|custom2}}}}, zbudowaną w oparciu, w języku {{lpg|Lua}} w {{lpr|Lua|Sccribunto}}, o: {{Code|{{m|Cytuj|custom}}}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> 9oo7ehs6zlbzyiajd9rt550u0phddrs Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III 4 63905 558023 556356 2026-09-30T06:20:08Z Persino 2851 558023 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}} == {{Śródtytuł|p.CzyJestJakikolwiekLinkArtykularnyTekstu}}{{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy 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}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. 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: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Funkcja wykorzystuje: {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. | 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = Jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. }} Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Śródtytuł|p.CzyJestInnySpecjalnyTekstowyObiekt}}{{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami. | 2 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _2 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przerobienia. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Śródtytuł|p.ObiektySzablonoweFormatowaniaTekstu}}{{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami. | 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Śródtytuł|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}}{{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. }} Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Śródtytuł|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}}{{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_5 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Śródtytuł|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}}{{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> 83bk0uq5wg5aghm1qjmbc8ugqyzwa2a 558035 558023 2026-09-30T07:00:53Z Persino 2851 /* {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} */ 558035 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}} == {{Śródtytuł|p.CzyJestJakikolwiekLinkArtykularnyTekstu}}{{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy 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}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. 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: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Funkcja wykorzystuje: {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. | 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = Jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. }} Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Śródtytuł|p.CzyJestInnySpecjalnyTekstowyObiekt}}{{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami. | 2 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _2 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Śródtytuł|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}}{{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przerobienia. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Śródtytuł|p.ObiektySzablonoweFormatowaniaTekstu}}{{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami. | 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Śródtytuł|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}}{{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. }} Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Śródtytuł|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}}{{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_5 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Śródtytuł|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}}{{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> ti7a0mhvtgizrxbnc6jf7qi798252jx 558054 558035 2026-09-30T08:40:22Z Persino 2851 558054 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}} == {{Śródtytuł|p.CzyJestJakikolwiekLinkArtykularnyTekstu}}{{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy 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}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Funkcja wykorzystuje: {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. | 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = Jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. }} Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Śródtytuł|p.CzyJestInnySpecjalnyTekstowyObiekt}}{{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Śródtytuł|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}}{{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przerobienia. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Śródtytuł|p.ObiektySzablonoweFormatowaniaTekstu}}{{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami. | 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Śródtytuł|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}}{{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. }} Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Śródtytuł|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}}{{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Śródtytuł|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}}{{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> 610zz5yxrebu9ci4g6fcghfg8rvi02n 558055 558054 2026-09-30T08:41:31Z Persino 2851 558055 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}} == {{Śródtytuł|p.CzyJestJakikolwiekLinkArtykularnyTekstu}}{{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy 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}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Funkcja wykorzystuje: {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. | 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = Jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. }} Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Śródtytuł|p.CzyJestInnySpecjalnyTekstowyObiekt}}{{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Śródtytuł|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}}{{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przerobienia. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Śródtytuł|p.ObiektySzablonoweFormatowaniaTekstu}}{{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami. | 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Śródtytuł|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}}{{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. }} Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Śródtytuł|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}}{{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Śródtytuł|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}}{{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> k6nwn4pq5ub44k5zyvt1zsbowcnneti 558056 558055 2026-09-30T08:56:31Z Persino 2851 558056 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}} == {{Śródtytuł|p.CzyJestJakikolwiekLinkArtykularnyTekstu}}{{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy 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}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Funkcja wykorzystuje: {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. | 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = Jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestJakikolwiekLinkArtykularnyTekstu/}}. == {{Śródtytuł|p.CzyJestInnySpecjalnyTekstowyObiekt}}{{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestInnySpecjalnyTekstowyObiekt/}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ FUNKCJA KOMPLETOWANIA/}}. == {{Śródtytuł|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}}{{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przerobienia. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu/}}. == {{Śródtytuł|p.ObiektySzablonoweFormatowaniaTekstu}}{{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami. | 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweFormatowaniaTekstu/}}. == {{Śródtytuł|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}}{{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. }} Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu/}}. == {{Śródtytuł|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}}{{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/}}. == {{Śródtytuł|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}}{{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l04wgh53imi79dlm602j2m02jkqvaaj 558057 558056 2026-09-30T08:57:41Z Persino 2851 /* Przykład kodu na stronie modułów z przykładami na stronie ich opisów */ 558057 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}} == {{Śródtytuł|p.CzyJestJakikolwiekLinkArtykularnyTekstu}}{{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy 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}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Funkcja wykorzystuje: {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. | 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = Jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestJakikolwiekLinkArtykularnyTekstu/}}. == {{Śródtytuł|p.CzyJestInnySpecjalnyTekstowyObiekt}}{{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestInnySpecjalnyTekstowyObiekt/}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/__FUNKCJA_KOMPLETOWANIA/}}. == {{Śródtytuł|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}}{{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przerobienia. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu/}}. == {{Śródtytuł|p.ObiektySzablonoweFormatowaniaTekstu}}{{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami. | 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweFormatowaniaTekstu/}}. == {{Śródtytuł|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}}{{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. }} Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu/}}. == {{Śródtytuł|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}}{{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/}}. == {{Śródtytuł|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}}{{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pzszcss3ksqquk0ath411zqdqin7m4n 558059 558057 2026-09-30T09:44:44Z Persino 2851 /* {{Śródtytuł|p.CzyJestInnySpecjalnyTekstowyObiekt}}{{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} */ 558059 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}} == {{Śródtytuł|p.CzyJestJakikolwiekLinkArtykularnyTekstu}}{{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy 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}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Funkcja wykorzystuje: {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. | 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = Jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestJakikolwiekLinkArtykularnyTekstu/}}. == {{Śródtytuł|p.CzyJestInnySpecjalnyTekstowyObiekt}}{{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody, to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestInnySpecjalnyTekstowyObiekt/}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/__FUNKCJA_KOMPLETOWANIA/}}. == {{Śródtytuł|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}}{{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przerobienia. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu/}}. == {{Śródtytuł|p.ObiektySzablonoweFormatowaniaTekstu}}{{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami. | 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweFormatowaniaTekstu/}}. == {{Śródtytuł|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}}{{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. }} Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu/}}. == {{Śródtytuł|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}}{{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/}}. == {{Śródtytuł|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}}{{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7z3uib4r6m5vpyg5h6u80xr3fg4g7d3 Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV 4 63906 558060 556357 2026-09-30T09:51:53Z Persino 2851 /* {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} */ 558060 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.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) ... return function(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} | _1 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}. | 2 = {{Code|nazwa_przestrzeni_ksiazki}} | _2 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}. | 3 = {{Code|nazwa_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}. | 4 = {{Code|nazwa_spisu_tresci}} | _4 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 9 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _9 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, | 2 = {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} | _2 = Czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. }} Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: {{OpisParametrów | 1 = {{Code|linia_temp}} {{Patrz|linia_temp}} | _1 = Rozważana linia. | 2 = {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} | _2 = Nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii. | 3 = {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} | _3 = Poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}. | 4 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _4 = Początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}. | 5 = {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} | _5 = Numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi. | 6 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _6 = Czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.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) end; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pogy1f1jqtji5zmpixz3u7jvrhge1tz 558063 558060 2026-09-30T09:56:32Z Persino 2851 558063 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}} == {{Śródtytuł|p.UruchamianieAnalizatoraSpisuRzeczyStrony}}{{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Śródtytuł|p.ParserPodawaniaNapisuWprowadzeniaTekstu}}{{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) ... return function(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} | _1 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}. | 2 = {{Code|nazwa_przestrzeni_ksiazki}} | _2 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}. | 3 = {{Code|nazwa_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}. | 4 = {{Code|nazwa_spisu_tresci}} | _4 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 9 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _9 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, | 2 = {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} | _2 = Czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. }} Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: {{OpisParametrów | 1 = {{Code|linia_temp}} {{Patrz|linia_temp}} | _1 = Rozważana linia. | 2 = {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} | _2 = Nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii. | 3 = {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} | _3 = Poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}. | 4 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _4 = Początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}. | 5 = {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} | _5 = Numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi. | 6 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _6 = Czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.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) end; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0fsw4xd71bay6vys9uzrv314rsb4xn6 558069 558063 2026-09-30T10:25:02Z Persino 2851 558069 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}} == {{Śródtytuł|p.UruchamianieAnalizatoraSpisuRzeczyStrony}}{{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> {{OpisParametrów | 1 = Funkcja nie przyjmuje żadnego parametru. | komórka1 = tak }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UruchamianieAnalizatoraSpisuRzeczyStrony/}}. == {{Śródtytuł|p.ParserPodawaniaNapisuWprowadzeniaTekstu}}{{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) ... return function(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} | _1 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}. | 2 = {{Code|nazwa_przestrzeni_ksiazki}} | _2 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}. | 3 = {{Code|nazwa_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}. | 4 = {{Code|nazwa_spisu_tresci}} | _4 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 9 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _9 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, | 2 = {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} | _2 = Czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. }} Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: {{OpisParametrów | 1 = {{Code|linia_temp}} {{Patrz|linia_temp}} | _1 = Rozważana linia. | 2 = {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} | _2 = Nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii. | 3 = {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} | _3 = Poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}. | 4 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _4 = Początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}. | 5 = {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} | _5 = Numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi. | 6 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _6 = Czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ParserPodawaniaNapisuWprowadzeniaTekstu/}}. === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qihsw91k586g44scfa7b65h6h4o9358 558071 558069 2026-09-30T10:43:33Z Persino 2851 /* {{Śródtytuł|p.ParserPodawaniaNapisuWprowadzeniaTekstu}}{{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} */ 558071 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}} == {{Śródtytuł|p.UruchamianieAnalizatoraSpisuRzeczyStrony}}{{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> {{OpisParametrów | 1 = Funkcja nie przyjmuje żadnego parametru. | komórka1 = tak }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/UruchamianieAnalizatoraSpisuRzeczyStrony/}}. == {{Śródtytuł|p.ParserPodawaniaNapisuWprowadzeniaTekstu}}{{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni równaniowy, czy jest rzeczywiście nagłówkiem rozdziału, czy tylko zwykłym tekstem. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza też do rozdziałów linie utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|<nowiki>1-6</nowiki>}}, ale też i: {{Code|<nowiki>> 6</nowiki>}}. Funkcja sprawdza też, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów, jeśli zajdzie taka potrzeba. Nie wszystkie rozdziały ujemne (rozdziały listy) przez ten twór (przez niego) są uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) ... return function(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} | _1 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}. | 2 = {{Code|nazwa_przestrzeni_ksiazki}} | _2 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}. | 3 = {{Code|nazwa_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}. | 4 = {{Code|nazwa_spisu_tresci}} | _4 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 5 = {{Code|pelna_nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 9 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _9 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, | 2 = {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} | _2 = Czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. }} Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: {{OpisParametrów | 1 = {{Code|linia_temp}} {{Patrz|linia_temp}} | _1 = Rozważana linia. | 2 = {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} | _2 = Nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii. | 3 = {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} | _3 = Poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}. | 4 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _4 = Początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}. | 5 = {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} | _5 = Numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi. | 6 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _6 = Czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/ParserPodawaniaNapisuWprowadzeniaTekstu/}}. === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4sqka5j7f7wifieozimnm0zxrg829nl Wikipedysta:Persino/brudnopis13 2 63962 558004 557799 2026-09-29T18:36:27Z Persino 2851 558004 wikitext text/x-wiki Podręcznik zawiera nieprzydzielony do innych podręczników materiał fizyki na poziomie studiów. Aktualnie w lekkim chaosie. '''Zawartość:''' * [[/Ogólna teoria względności/]] : wzmianka o [[Szczególna teoria względności|Szczególnej teorii względności]] * [[/Fala grawitacyjna/]] * [[/Energia, pęd i moment pędu pola elektromagnetycznego/]] '''Inne podręczniki:''' <br /> > [[Fizyka teoretyczna]] <br /> > [[Wstęp do fizyki atomu]] <br /> > [[Elektrodynamika klasyczna]] <br /> > [[Wprowadzenie do fizyki kwantowej]] <br /> > [[Mechanika kwantowa]] <br /> {{LinkWzór|}} {{lg|tytan|tytan1|parametr=}} 5wbigw4p6elhm82nupx6qlq1kiant9z Moduł:ŹródłoLua 828 64049 558019 556021 2026-09-30T06:07:47Z Persino 2851 558019 Scribunto text/plain require("strict"); local p={}; function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value) local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value); local str_element=""; if(not tab_ile)then str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#"; table.insert(tabela_elementy_tabelowe[element],{value,str_element,}); end; str_element=tab_ile or (str_element..tostring(value)) return str_element,tab_ile; end; function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2) local parametry_modul=require("Module:Parametry"); if(parametry_modul.TypeTable(value))then local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value); if(not tab_ile)then str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe); end; str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja; return str_funkcja; elseif(parametry_modul.TypeFunction(value))then local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value); str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja; return str_funkcja; elseif(parametry_modul.TypeString(value))then local czy_dobrze=funkcja2 and funkcja2(value,"string") or nil; if(not czy_dobrze)then value=p.String(value); value=funkcja and funkcja(value,"string") or value; end; return value; else local value=tostring(value); value=funkcja and funkcja(value,type(value)) or value; return value; end; end; function p.Value(value,tabela_elementy_tabelowe) return p.NameValue(value,tabela_elementy_tabelowe, function(value) return nil; end, function(value) return nil; end ); end; function p.Name(name,tabela_elementy_tabelowe) return p.NameValue(name,tabela_elementy_tabelowe, function(name) return "["..name.."]"; end, function(name) local czy_dobrze=string.match(name,"^[%a_][%w_]*$"); return czy_dobrze; end ); end; function p.String(value,czy_w_cudzyslowy) value=mw.ustring.gsub(value,"\\","\\\\"); value=mw.ustring.gsub(value,"\"","\\\""); local tab={ {"\n","\\n",}, {"\t","\\t",}, {"\r","\\r",}, {"\b","\\b",}, {"\v","\\v",}, {"\f","\\f",}, {"\a","\\a",}, {"\0","\\0",}, }; for _,tab_element in ipairs(tab)do value=mw.ustring.gsub(value,tab_element[1],tab_element[2]); end; if(not czy_w_cudzyslowy)then value="\""..value.."\"";end; return value; end; function p.JakiElement(tabela_elementy_tabelowe,element,value) local name_tab=nil; for a,b in ipairs(tabela_elementy_tabelowe[element])do if(b[1]==value)then name_tab=b[2]; break; end; end; return name_tab; end; function p.Iter(tabelka) local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,false, function(a,b) if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then return (a<b); elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then return (a<b); elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then local a=a and 1 or 0;local b=b and 1 or 0; return (a<b); elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then return true; elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then return true; elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then return true; elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then return false; elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then return false; elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then return false; end; end ); return __next,tabelka,nil; end; function p.Pairs(tabelka) local __metatable=getmetatable(tabelka); if(__metatable)then return pairs(tabelka); else return p.Iter(tabelka); end; end; function p.Table(tabelka,tabela_elementy_tabelowe) local parametry_modul=require("Module:Parametry"); local str="\n{\n"; local pokolei=0; local function WyswietlanieTable(tabelka,czy_liczba) local pokolei=0; for name,value in p.Pairs(tabelka) do if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then local name_str=p.Name(name,tabela_elementy_tabelowe); local value_str=p.Value(value,tabela_elementy_tabelowe); if(not czy_liczba)then str=str..name_str.." = "..value_str..",\n"; else if((pokolei)and(name==pokolei+1))then pokolei=pokolei+1; str=str..value_str..",\n"; else pokolei=nil; str=str..name_str.." = "..value_str..",\n"; end; end; end; end; end; WyswietlanieTable(tabelka,true); WyswietlanieTable(tabelka,false); str=str.."}"; return str; end; function p.FormatowanieTabelki(str_tabela,ile_dodane) local ile_klamerek=ile_dodane or 0; local szeregi_modul=require("Module:Szeregi"); str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela, function(linia) local spacje; if(mw.ustring.match(linia,"^{"))then spacje=mw.ustring.rep(" ",ile_klamerek*4); ile_klamerek=ile_klamerek+1; elseif(mw.ustring.match(linia,"^}"))then ile_klamerek=ile_klamerek-1; spacje=mw.ustring.rep(" ",ile_klamerek*4); else spacje=mw.ustring.rep(" ",ile_klamerek*4); end; return (spacje or "")..linia; end); return str_tabela; end; function p.PozycjaZmienna(name,value,tabela_elementy_tabelowe) local parametry_modul=require("Module:Parametry"); tabela_elementy_tabelowe=tabela_elementy_tabelowe or {tabela={},funkcja={},}; local str_name=p.Name(name,tabela_elementy_tabelowe); str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name; local str_value=p.Value(value,tabela_elementy_tabelowe); str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value; local str=str_name.." = "..str_value..";"; return str; end; p["ŹródłoLua"]=function(frame,args) local str=""; local tabela_elementy_tabelowe={tabela={},funkcja={},}; for _,__value in ipairs(args)do local name=__value[1]; local value=__value[2]; local pozycja_zmienna=p.PozycjaZmienna(name,value,tabela_elementy_tabelowe); str=str..((str~="")and "\n" or "")..pozycja_zmienna; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", ["{"]="{{(}}", ["}"]="{{)}}", ["["]="{{!(}}", ["]"]="{{)!}}", ["<"]="{{Mniejszy}}", [">"]="{{Większy}}", }; str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; lzhnalsfc7qthbib0cyf7h6yzfgwvjb 558020 558019 2026-09-30T06:09:04Z Persino 2851 558020 Scribunto text/plain require("strict"); local p={}; function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value) local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value); local str_element=""; if(not tab_ile)then str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#"; table.insert(tabela_elementy_tabelowe[element],{value,str_element,}); end; str_element=tab_ile or (str_element..tostring(value)) return str_element,tab_ile; end; function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2) local parametry_modul=require("Module:Parametry"); if(parametry_modul.TypeTable(value))then local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value); if(not tab_ile)then str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe); end; str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja; return str_funkcja; elseif(parametry_modul.TypeFunction(value))then local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value); str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja; return str_funkcja; elseif(parametry_modul.TypeString(value))then local czy_dobrze=funkcja2 and funkcja2(value,"string") or nil; if(not czy_dobrze)then value=p.String(value); value=funkcja and funkcja(value,"string") or value; end; return value; else local value=tostring(value); value=funkcja and funkcja(value,type(value)) or value; return value; end; end; function p.Value(value,tabela_elementy_tabelowe) return p.NameValue(value,tabela_elementy_tabelowe, function(value) return nil; end, function(value) return nil; end ); end; function p.Name(name,tabela_elementy_tabelowe) return p.NameValue(name,tabela_elementy_tabelowe, function(name) return "["..name.."]"; end, function(name) local czy_dobrze=string.match(name,"^[%a_][%w_]*$"); return czy_dobrze; end ); end; function p.String(value,czy_w_cudzyslowy) value=mw.ustring.gsub(value,"\\","\\\\"); value=mw.ustring.gsub(value,"\"","\\\""); local tab={ {"\n","\\n",}, {"\t","\\t",}, {"\r","\\r",}, {"\b","\\b",}, {"\v","\\v",}, {"\f","\\f",}, {"\a","\\a",}, {"\0","\\0",}, }; for _,tab_element in ipairs(tab)do value=mw.ustring.gsub(value,tab_element[1],tab_element[2]); end; if(not czy_w_cudzyslowy)then value="\""..value.."\"";end; return value; end; function p.JakiElement(tabela_elementy_tabelowe,element,value) local name_tab=nil; for a,b in ipairs(tabela_elementy_tabelowe[element])do if(b[1]==value)then name_tab=b[2]; break; end; end; return name_tab; end; function p.Iter(tabelka) local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,false, function(a,b) if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then return (a<b); elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then return (a<b); elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then local a=a and 1 or 0;local b=b and 1 or 0; return (a<b); elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then return true; elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then return true; elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then return true; elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then return false; elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then return false; elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then return false; end; end ); return __next,tabelka,nil; end; function p.Pairs(tabelka) local __metatable=getmetatable(tabelka); if(__metatable)then return pairs(tabelka); else return p.Iter(tabelka); end; end; function p.Table(tabelka,tabela_elementy_tabelowe) local parametry_modul=require("Module:Parametry"); local str="\n{\n"; local pokolei=0; local function WyswietlanieTable(tabelka,czy_liczba) local pokolei=0; for name,value in p.Pairs(tabelka) do if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then local name_str=p.Name(name,tabela_elementy_tabelowe); local value_str=p.Value(value,tabela_elementy_tabelowe); if(not czy_liczba)then str=str..name_str.." = "..value_str..",\n"; else if((pokolei)and(name==pokolei+1))then pokolei=pokolei+1; str=str..value_str..",\n"; else pokolei=nil; str=str..name_str.." = "..value_str..",\n"; end; end; end; end; end; WyswietlanieTable(tabelka,true); WyswietlanieTable(tabelka,false); str=str.."}"; return str; end; function p.FormatowanieTabelki(str_tabela,ile_dodane) local ile_klamerek=ile_dodane or 0; local szeregi_modul=require("Module:Szeregi"); str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela, function(linia) local spacje; if(mw.ustring.match(linia,"^{"))then spacje=mw.ustring.rep(" ",ile_klamerek*4); ile_klamerek=ile_klamerek+1; elseif(mw.ustring.match(linia,"^}"))then ile_klamerek=ile_klamerek-1; spacje=mw.ustring.rep(" ",ile_klamerek*4); else spacje=mw.ustring.rep(" ",ile_klamerek*4); end; return (spacje or "")..linia; end); return str_tabela; end; function p.PozycjaZmienna(name,value,tabela_elementy_tabelowe) local parametry_modul=require("Module:Parametry"); tabela_elementy_tabelowe=tabela_elementy_tabelowe or {tabela={},funkcja={},}; local str_name=p.Name(name,tabela_elementy_tabelowe); str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name; local str_value=p.Value(value,tabela_elementy_tabelowe); str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value; local str=str_name.." = "..str_value..";"; return str; end; p["ŹródłoLua"]=function(frame,args) local str=""; local tabela_elementy_tabelowe={tabela={},funkcja={},}; for _,__value in ipairs(args)do local name=__value[1]; local value=__value[2]; local pozycja_zmienna=p.PozycjaZmienna(name,value,tabela_elementy_tabelowe); str=str..((str~="")and "\n" or "")..pozycja_zmienna; end; str="{{ŹródłoLua|<nowiki>"..str.."</nowiki>}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; m5euitxrmcqzw5njbdsicijioiehumi MediaWiki:Scribunto-doc-page-przykład/dokumentacja 8 64331 558031 557521 2026-09-30T06:49:02Z Persino 2851 558031 wikitext text/x-wiki <!-- ------------------------------------------------------------------------------------------------------------------------------------------------- Strona potrzebna do tworzenia dokumentacji modułów w: Lua w Scribunto, na stronie w nibyprzestrzeni nazw: "Wikibooks:Moduły/...". Parametry: * "klucz" - To jest szablon nie opis. Schemat tej nazwy wygląda tak: "Wikibooks/Przykład/<nazwa modułu>/<nazwa funkcji bez prawych ukośników>/Kod 1". * "klucz2" - To jest,jeśli niepuste, wtedy przyzwolenie przyrostka do różnych przykładów dla tej samej funkcji, te przykłady mogą być: "/Kod 1", "/Kod 2", "/Kod 3", ...., przeciwnie, nie ma tego. * "klucz3" - Gdy opis danego modułu dzieli się na tomy i części, jak: "Tom I", "Tom II", "Tom III" ..., czy: "Tom V/Część I", "Tom V/Część II", ...., to jakąś tę nazwę ta zmienna przyjmuje. * "klucz4" - Gdy definicja funkcji w module, musi być użyta w nawiasach kwadratowych w cudzysłowie podwójnym. * "klucz5" - Nazwa zmiennej tablicy transportu danego modułu zwracanej do niego (opcjonalny). * "klucz6" - Jeśli niepuste, to mamy do czynienia z szablonami, zdefiniowanych o funkcje, ramki Lua w Scribunto, które wykorzystujemy do budowy szablonów przykładów, zbudowanych o przykładowe funkcje biblioteczne, opisane w dokumentacji modułów. ------------------------------------------------------------------------------------------------------------------------------------------------- Jak tworzymy odwołanie do tej strony, czyli odwołanie do szablonu: {{Śródtekst}}, to piszemy za pomocą szablonu: {{PobierzŚródteksst}}, kod, np. taki: {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom XX|klucz4=}} -------- Widzimy, tu zmienne: * "nazwa artykułu" i "nazwa książki" - są to odwołania do tej strony, czyli: "MediaWiki:Scribunto-doc-page-przykład/dokumentacja". * "klucz", "klucz2", "klucz3", "klucz4", a dalsze zmienne o nazwach: "klucz5", są zmiennymi domyślnymi tutaj, - są to zmienne w szablonie: {{PobierzŚródtekst}}, który wyświetla zawartość z szablonu: {{Śródtekst}}, z podzmiennej: "tekst", i rozwija tą zawartość względem tych swoich zmiennych, i dlatego nie mamy tutaj zawartości: "tak", tylko inną treściwą zawartość. ------------------------------------------------------------------------------------------------------------------------------------------------- --> {{Śródtekst | uchwyt = dokumentacja | bez preprocess = tak | klucz = Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/Kod 1 | klucz2 = tak | klucz3 = | klucz4 = <!-- | klucz5 = p | klucz6 = tak --> | tekst = {{#if:{{{klucz|}}}{{{klucz2|}}}{{{klucz3|}}}{{{klucz4|}}} | == Opis dokumentacji przykładów funkcji == Funkcja jest opisana w dokumentacji modułu: {{Code|{{m|{{Dopasuj|ciąg={{{klucz}}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{#if:{{{klucz2|}}}|%/{{#if:{{{klucz6|}}}|[Ww][Ii][Kk][Ii]|}}[Kk][Oo][Dd]%s*%d+|}}$}}}}}}, w nagłówku przypisaną linkowi: {{LinkŚródtytuł|{{{klucz5|p}}}{{#if:{{{klucz4|}}}|["|.}}{{Dopasuj|ciąg={{{klucz}}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{#if:{{{klucz2|}}}|%/{{#if:{{{klucz6|}}}|[Ww][Ii][Kk][Ii]|}}[Kk][Oo][Dd]%s*%d+|}}$}}{{#if:{{{klucz4|}}}|"]|}}|{{Dopasuj|ciąg={{{klucz}}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{#if:{{{klucz2|}}}|%/{{#if:{{{klucz6|}}}|[Ww][Ii][Kk][Ii]|}}[Kk][Oo][Dd]%s*%d+|}}$}}{{#if:{{{klucz3|}}}|/{{{klucz3}}}}}|Wikibooks:Moduły}}, odpowiadającą jej nazwie, w dokumentacji projektu, opisującą elementy przestrzeni nazw: {{Np|Module|link=tak}}, dotyczącą opisu funkcji w: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, na stronie projektu, dotyczacą implementacji jej na polskim {{NS|l=tak|k=b|w=tak|pk=mj}}, o nazwie: {{Tt|{{lr2|Moduły/{{Dopasuj|ciąg={{{klucz}}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{#if:{{{klucz2|}}}|%/{{#if:{{{klucz6|}}}|[Ww][Ii][Kk][Ii]|}}[Kk][Oo][Dd]%s*%d+|}}$}}}}}}. {{#if:{{{klucz6|}}}| == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji: {{m|{{Dopasuj|ciąg={{{klucz}}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{#if:{{{klucz2|}}}|%/{{#if:{{{klucz6|}}}|[Ww][Ii][Kk][Ii]|}}[Kk][Oo][Dd]%s*%d+|}}$}}|{{Dopasuj|ciąg={{{klucz}}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{#if:{{{klucz2|}}}|%/[Ww][Ii][Kk][Ii][Kk][Oo][Dd]%s*%d+|}}$}}}}. {{#if:{{LuaSubst|strona=Szablon:{{{klucz}}}|inkludowana=tak}}| == Kod szablonu - przykładu == {{PreWikikod|{{{klucz}}}}} |{{DivLinia}} }} |{{DivLinia}} }} == Jakiego modułu, to dotyczy == Ta dokumentacja przykładów dotyczy dokumentacji funkcji, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w przestrzeni nazw: {{Np|Module|link=tak}}, w niby-przestrzeni: {{{{#if:{{{klucz6|}}}|s|m}}|Wikibooks/Przykład/}}, a jej właściwy moduł znajdują się w: {{ld2|{{Dopasuj|ciąg={{{klucz}}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{#if:{{{klucz2|}}}|%/{{#if:{{{klucz6|}}}|[Ww][Ii][Kk][Ii]|}}[Kk][Oo][Dd]%s*%d+|}}$}}}}, czego dotyczy: * {{lr2|Moduły/{{Dopasuj|ciąg={{{klucz}}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{#if:{{{klucz2|}}}|%/{{#if:{{{klucz6|}}}|[Ww][Ii][Kk][Ii]|}}[Kk][Oo][Dd]%s*%d+|}}$}}{{#if:{{{klucz3|}}}|/{{{klucz3}}}}}#{{Zastąp|ciąg={{{klucz5|p}}}{{#if:{{{klucz4|}}}|["|.}}{{Dopasuj|ciąg={{{klucz}}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{#if:{{{klucz2|}}}|%/{{#if:{{{klucz6|}}}|[Ww][Ii][Kk][Ii]|}}[Kk][Oo][Dd]%s*%d+|}}$}}{{#if:{{{klucz4|}}}|"]|}}|wzór=%s+|zamień=_}}}}. | tak }} }} 1jqpe1z8rksutkbv3892cye6jnml86f Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestJakikolwiekLinkArtykularnyTekstu/Kod 1 828 64376 558012 2026-09-30T05:44:57Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; local tekst2=szablonowe_modul:Kodowan…” 558012 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul); local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"tekst2",tekst2,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"czy_tak_wynik",czy_tak_wynik,}, }); return wikikod; end; return p; ayx9rxx2ub4zqmwvgx5qqpkzjxh8kax 558013 558012 2026-09-30T05:46:31Z Persino 2851 558013 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst2",tekst2,}, {"czy_tak_wynik",czy_tak_wynik,}, }); return wikikod; end; return p; 0eyl2mm8n7p076mh4d4z3aq599uuktx 558014 558013 2026-09-30T05:47:14Z Persino 2851 558014 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst2",tekst2,}, {"czy_tak_wynik",czy_tak_wynik,}, }); return wikikod; end; return p; lxgdnwxnit1bf3nt03lukzthcg5yq8m 558015 558014 2026-09-30T05:49:04Z Persino 2851 558015 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst2",tekst2,}, {"czy_tak_wynik",czy_tak_wynik,}, {"tablica_analizy_obiektow_strony_dany_modul",tablica_analizy_obiektow_strony_dany_modul,}, {"tablica_danych_parametrow_szablonu_strony",tablica_danych_parametrow_szablonu_strony,}, }); return wikikod; end; return p; sloxv8y4l0wsqd4dsnjawld1ztf0m18 558016 558015 2026-09-30T05:49:34Z Persino 2851 558016 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst2",tekst2,}, {"czy_tak_wynik",czy_tak_wynik,}, }); return wikikod; end; return p; lxgdnwxnit1bf3nt03lukzthcg5yq8m Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestJakikolwiekLinkArtykularnyTekstu/Kod 1/opis 828 64377 558017 2026-09-30T05:52:15Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom II|klucz4=}}” 558017 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom II|klucz4=}} i7c35wj7jmf6evuqteywkwemwpf4vz1 558022 558017 2026-09-30T06:14:08Z Persino 2851 558022 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestInnySpecjalnyTekstowyObiekt/Kod 1 828 64378 558018 2026-09-30T06:01:19Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; local strona="Książka"; local tekst2=szablonowe_modul:Kodowan…” 558018 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; local strona="Książka"; local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst2,strona,tablica_analizy_obiektow_strony_dany_modul); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"tekst2",tekst2,}, {"czy_tak_wynik",czy_tak_wynik,}, }); return wikikod; end; return p; igbowbtu8i19leebwipxe5ieqci3bdr Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/CzyJestInnySpecjalnyTekstowyObiekt/Kod 1/opis 828 64379 558021 2026-09-30T06:13:30Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}}” 558021 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ FUNKCJA KOMPLETOWANIA/Kod 1 828 64380 558024 2026-09-30T06:26:08Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"nazwa_szablonu",nazwa_szablonu,}, {"czy_wyni…” 558024 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"nazwa_szablonu",nazwa_szablonu,}, {"czy_wynik",czy_wynik,}, }); return wikikod; end; return p; 758o8pvbtokbnmpkenv7twgk1xa3k6t 558025 558024 2026-09-30T06:29:44Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/FUNKCJA KOMPLETOWANIA/Kod 1]] do [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ FUNKCJA KOMPLETOWANIA/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 558024 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"nazwa_szablonu",nazwa_szablonu,}, {"czy_wynik",czy_wynik,}, }); return wikikod; end; return p; 758o8pvbtokbnmpkenv7twgk1xa3k6t 558027 558025 2026-09-30T06:33:35Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ FUNKCJA KOMPLETOWANIA/Kod 1]] do [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/FUNKCJA KOMPLETOWANIA/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 558024 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"nazwa_szablonu",nazwa_szablonu,}, {"czy_wynik",czy_wynik,}, }); return wikikod; end; return p; 758o8pvbtokbnmpkenv7twgk1xa3k6t 558029 558027 2026-09-30T06:35:56Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/FUNKCJA KOMPLETOWANIA/Kod 1]] do [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ FUNKCJA KOMPLETOWANIA/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 558024 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"nazwa_szablonu",nazwa_szablonu,}, {"czy_wynik",czy_wynik,}, }); return wikikod; end; return p; 758o8pvbtokbnmpkenv7twgk1xa3k6t Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ FUNKCJA KOMPLETOWANIA/Kod 1/opis 828 64381 558026 2026-09-30T06:31:15Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom II|klucz4=}}” 558026 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom II|klucz4=}} i7c35wj7jmf6evuqteywkwemwpf4vz1 558028 558026 2026-09-30T06:33:35Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ FUNKCJA KOMPLETOWANIA/Kod 1/opis]] do [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/FUNKCJA KOMPLETOWANIA/Kod 1/opis]], bez pozostawienia przekierowania pod starym tytułem 558026 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom II|klucz4=}} i7c35wj7jmf6evuqteywkwemwpf4vz1 558030 558028 2026-09-30T06:35:57Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/FUNKCJA KOMPLETOWANIA/Kod 1/opis]] do [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ FUNKCJA KOMPLETOWANIA/Kod 1/opis]], bez pozostawienia przekierowania pod starym tytułem 558026 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom II|klucz4=}} i7c35wj7jmf6evuqteywkwemwpf4vz1 558032 558030 2026-09-30T06:50:02Z Persino 2851 558032 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu/Kod 1 828 64382 558033 2026-09-30T06:58:56Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; local tekst2=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{…” 558033 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; local tekst2=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"tekst2",tekst2,}, }); return wikikod; end; return p; 67hsimsjkh29aemc8abo95s9i4zm51s Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu/Kod 1/opis 828 64383 558034 2026-09-30T06:59:45Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}}” 558034 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweFormatowaniaTekstu/Kod 1 828 64384 558036 2026-09-30T07:10:20Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyP…” 558036 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon2,nil,tablica_analizy_obiektow_strony_dany_modul); local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon2,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,strona_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"szablon",szablon,}, {"szablon2",szablon2,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst",tekst,}, }); return wikikod; end; return p; 6kctjrxnwn19dbl30r7e4dyi4kexgoi 558037 558036 2026-09-30T07:12:14Z Persino 2851 558037 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,strona,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon2,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon2,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,strona_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"szablon",szablon,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"szablon2",szablon2,}, {"tekst",tekst,}, }); return wikikod; end; return p; bkm7tikwx2376c4cd9cy16gw1wa35a6 558038 558037 2026-09-30T07:13:22Z Persino 2851 558038 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local strona="Książka"; local szablonowe_modul=require("Module:Szablonowe"); local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tablica_analizy_obiektow_strony_dany_modul={}; local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,strona,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon2,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon2,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,strona_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"szablon",szablon,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"szablon2",szablon2,}, {"tekst",tekst,}, }); return wikikod; end; return p; my5vayg46oi9dbrgq69ooswr72ez81h 558039 558038 2026-09-30T07:14:17Z Persino 2851 558039 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local strona="Książka"; local szablonowe_modul=require("Module:Szablonowe"); local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tablica_analizy_obiektow_strony_dany_modul={}; local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,strona,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon2,strona,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon2,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,strona_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"szablon",szablon,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"szablon2",szablon2,}, {"tekst",tekst,}, }); return wikikod; end; return p; 8dkqrqt6pbkmqv3sai7nf2qrn56jgyw 558040 558039 2026-09-30T07:17:30Z Persino 2851 558040 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local strona="Książka"; local szablonowe_modul=require("Module:Szablonowe"); local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tablica_analizy_obiektow_strony_dany_modul={}; local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,strona,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon2,strona,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon2,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,strona_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"szablon",szablon,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"szablon2",szablon2,}, {"tekst",tekst,}, }); return wikikod; end; return p; tm6lw07862q44onq6j0b07svsfite7j 558041 558040 2026-09-30T07:24:25Z Persino 2851 558041 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local strona="Książka"; local szablonowe_modul=require("Module:Szablonowe"); local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tablica_analizy_obiektow_strony_dany_modul={}; local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,strona,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon2,strona,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon2,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon2,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,strona_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"szablon",szablon,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"szablon2",szablon2,}, {"tekst",tekst,}, }); return wikikod; end; return p; kwbbuo2o6dklvilfm3pziaq3vsl2rlh 558042 558041 2026-09-30T07:32:42Z Persino 2851 558042 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local strona="Książka"; local szablonowe_modul=require("Module:Szablonowe"); local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tablica_analizy_obiektow_strony_dany_modul={}; local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,strona,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon2,strona,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,strona_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"szablon",szablon,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"szablon2",szablon2,}, {"tekst",tekst,}, }); return wikikod; end; return p; p2l4u07ajdtw0e6p8wm2rb0yg221n4w Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu/Kod 1 828 64385 558043 2026-09-30T07:38:57Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon2,strona,tablica_analizy_obiektow_strony_dany_modul); l…” 558043 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon2,strona,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon2,strona,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,strona_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"szablon",szablon,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"szablon2",szablon2,}, {"tekst",tekst,}, }); return wikikod; end; return p; px1vh4oih74f6w1v8og1hwrpeyojv2s 558044 558043 2026-09-30T07:39:49Z Persino 2851 558044 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local szablon2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,strona,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon2,strona,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,strona_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"szablon",szablon,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"szablon2",szablon2,}, {"tekst",tekst,}, }); return wikikod; end; return p; 1h0pny0iviby8upjvaeudo0tvhkc3qy Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu/Kod 1/opis 828 64386 558045 2026-09-30T07:43:03Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}}” 558045 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/Kod 1 828 64387 558046 2026-09-30T07:49:40Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tablica_analizy_obiektow_strony_dany_modul={};…” 558046 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tablica_analizy_obiektow_strony_dany_modul={}; local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; local tekst3=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst2",tekst2,}, {"tekst3",tekst3,}, }); return wikikod; end; return p; b09qqpnu0aj10e8ie6rfxy0afmfz6s7 558048 558046 2026-09-30T07:52:50Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/StronicowyParser/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/Kod 1]] do [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/Kod 1]], bez pozostawienia przekierowania pod starym tytułem 558046 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tablica_analizy_obiektow_strony_dany_modul={}; local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; local tekst3=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst2",tekst2,}, {"tekst3",tekst3,}, }); return wikikod; end; return p; b09qqpnu0aj10e8ie6rfxy0afmfz6s7 Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/Kod 1/opis 828 64388 558047 2026-09-30T07:51:39Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}}” 558047 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks 558049 558047 2026-09-30T07:52:50Z Persino 2851 Persino przeniósł(-osła) stronę [[Moduł:Wikibooks/Przykład/StronicowyParser/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/Kod 1/opis]] do [[Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii/Kod 1/opis]], bez pozostawienia przekierowania pod starym tytułem 558047 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia/Kod 1 828 64389 558050 2026-09-30T08:00:07Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local strona="Książka"; local strona_szablonowa=szablonowe_modul…” 558050 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; local tekst3=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst2",tekst2,}, {"tekst3",tekst3,}, }); return wikikod; end; return p; biifhsbsq5m17zt1ofs1nwpc088y0uo 558052 558050 2026-09-30T08:07:12Z Persino 2851 558052 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; local tekst3=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); local tekst4=stronicowyparser_rozdzialy_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst3,strona,tablica_analizy_obiektow_strony_dany_modul); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst2",tekst2,}, {"tekst3",tekst3,}, {"tekst4",tekst4,}, }); return wikikod; end; return p; 5htul6kufa93vuqs18s00v2w6r3918a 558053 558052 2026-09-30T08:07:43Z Persino 2851 558053 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local tekst2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,strona,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; local tekst3=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst2,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); local tekst4=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst3,strona,tablica_analizy_obiektow_strony_dany_modul); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"tekst",tekst,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"tekst2",tekst2,}, {"tekst3",tekst3,}, {"tekst4",tekst4,}, }); return wikikod; end; return p; 9rvrikij3hdutuzxvslmqyqmjliaott Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia/Kod 1/opis 828 64390 558051 2026-09-30T08:01:06Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}}” 558051 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ObiektySzablonoweFormatowaniaTekstu/Kod 1/opis 828 64391 558058 2026-09-30T09:12:22Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}}” 558058 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/UruchamianieAnalizatoraSpisuRzeczyStrony/Kod 1 828 64392 558061 2026-09-30T09:53:54Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"czy_tak",czy_tak,}, }); return wikikod; end; return p;” 558061 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"czy_tak",czy_tak,}, }); return wikikod; end; return p; i7j3f1r1biyo2q13p1e7f5eu9u90afw Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/UruchamianieAnalizatoraSpisuRzeczyStrony/Kod 1/opis 828 64393 558062 2026-09-30T09:55:05Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}}” 558062 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks 558064 558062 2026-09-30T09:57:36Z Persino 2851 558064 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom IV|klucz4=}} etgfslvvdmx6ddpek93xgj1evmnpznr Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ParserPodawaniaNapisuWprowadzeniaTekstu/Kod 1 828 64394 558065 2026-09-30T10:08:42Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local linia2=szablonowe_modul:KodowanieSzablonowegoTekstuZO…” 558065 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local linia2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,strona,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książka"; local nazwa_spisu_tresci=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia2,true); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"linia",linia,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"linia2",linia2,}, {"nazwa_przestrzeni",nazwa_przestrzeni,}, {"nazwa_przestrzeni_ksiazki",nazwa_przestrzeni_ksiazki,}, {"nazwa_ksiazki",nazwa_ksiazki,}, {"nazwa_spisu_tresci",nazwa_spisu_tresci,}, {"parser",parser,}, {"linia_temp",linia_temp,}, {"nazwa_rozdzialu",nazwa_rozdzialu,}, {"poziom_rozdzialu",poziom_rozdzialu,}, {"poczatek_rozdzialu",poczatek_rozdzialu,}, {"numeracja_rozdzialu",numeracja_rozdzialu,}, {"czy_rozdzial_centrowany",czy_rozdzial_centrowany,}, }); return wikikod; end; return p; ldrfxc1ls7zjbh688elwp9i43qr6wmx 558066 558065 2026-09-30T10:09:54Z Persino 2851 558066 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; local linia="<h6>Nagłówek</h6>"; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local linia2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,strona,tablica_analizy_obiektow_strony_dany_modul); local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książka"; local nazwa_spisu_tresci=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia2,true); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"linia",linia,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"linia2",linia2,}, {"nazwa_przestrzeni",nazwa_przestrzeni,}, {"nazwa_przestrzeni_ksiazki",nazwa_przestrzeni_ksiazki,}, {"nazwa_ksiazki",nazwa_ksiazki,}, {"nazwa_spisu_tresci",nazwa_spisu_tresci,}, {"parser",parser,}, {"linia_temp",linia_temp,}, {"nazwa_rozdzialu",nazwa_rozdzialu,}, {"poziom_rozdzialu",poziom_rozdzialu,}, {"poczatek_rozdzialu",poczatek_rozdzialu,}, {"numeracja_rozdzialu",numeracja_rozdzialu,}, {"czy_rozdzial_centrowany",czy_rozdzial_centrowany,}, }); return wikikod; end; return p; 0owguc565g1t0d21wxggbwxiqu9sj1z 558070 558066 2026-09-30T10:29:26Z Persino 2851 558070 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; local linia="<h6>2.1. Nagłówek</h6>"; local strona="Książka"; local strona_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](strona); local linia2=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,strona,tablica_analizy_obiektow_strony_dany_modul); local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książka"; local nazwa_spisu_tresci=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,strona,strona_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia2,true); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"linia",linia,}, {"strona",strona,}, {"strona_szablonowa",strona_szablonowa,}, {"linia2",linia2,}, {"nazwa_przestrzeni",nazwa_przestrzeni,}, {"nazwa_przestrzeni_ksiazki",nazwa_przestrzeni_ksiazki,}, {"nazwa_ksiazki",nazwa_ksiazki,}, {"nazwa_spisu_tresci",nazwa_spisu_tresci,}, {"parser",parser,}, {"linia_temp",linia_temp,}, {"nazwa_rozdzialu",nazwa_rozdzialu,}, {"poziom_rozdzialu",poziom_rozdzialu,}, {"poczatek_rozdzialu",poczatek_rozdzialu,}, {"numeracja_rozdzialu",numeracja_rozdzialu,}, {"czy_rozdzial_centrowany",czy_rozdzial_centrowany,}, }); return wikikod; end; return p; kwhydd2acpbh5i97rwi3f5nimmpsiup Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/ParserPodawaniaNapisuWprowadzeniaTekstu/Kod 1/opis 828 64395 558067 2026-09-30T10:11:43Z Persino 2851 Utworzono nową stronę „{{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}}” 558067 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom III|klucz4=}} h9vaw2gc4bxmyj9kghu43dlcri8v3ks 558068 558067 2026-09-30T10:12:06Z Persino 2851 558068 wikitext text/x-wiki {{PobierzŚródtekst|uchwyt=dokumentacja|nazwa artykułu=dokumentacja|nazwa książki=MediaWiki:Scribunto-doc-page-przykład|klucz={{Szablon nie opis}}|klucz2=tak|klucz3=Tom IV|klucz4=}} etgfslvvdmx6ddpek93xgj1evmnpznr Kategoria:Szablony wykorzystujące moduły Lua/Przykłady, w modułach Lua w Scribunto, przygotowane specjalnie dla dokumentacji funkcji bibliotecznych 14 64397 558079 2026-09-30T11:29:50Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony wykorzystujące moduły Lua}}” 558079 wikitext text/x-wiki {{Kategoria|Szablony wykorzystujące moduły Lua}} 5e53iqedpjvmozy3qdb8mna52k01sm8 Kategoria:Szablony wykorzystujące moduły Lua/Szablony pomocnicze do tworzenia książek 14 64398 558080 2026-09-30T11:33:28Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony wykorzystujące moduły Lua}}” 558080 wikitext text/x-wiki {{Kategoria|Szablony wykorzystujące moduły Lua}} 5e53iqedpjvmozy3qdb8mna52k01sm8