Wikipedia:Lua
Plantilya:WikiProject Lua header Plantilya:Information page Plantilya:Namespaces
Ang Lua amo ang programming language nga yara na subong, paagi sa Scribunto nga extension sang MediaWiki, sa Wikipedya.
Pwede na isulod ang Lua nga code sa wiki templates pinaagi sa paggamit sang #invoke nga kapasidad sang Scribunto.
Ini nga extension nagasuporta sang Lua 5.1 puon kan Hulyo 2015[update].
"Kamusta, kalibutan!" in Lua
[baguhon an source]Ang source code sang Lua gin-a-imbak sa isa ka pahina nga may prefix nga Module: (halimbawa, Module:Bananas). Tapos, ini nga mga indibidwal nga module ginagamit (ginapadul-ong ng code nga #invoke) sa mga pahina sang template (halimbawa, Module:Bananas/doc nagagamit sang code nga {{#invoke:Bananas|hello}} para ihatag ang teksto nga "Kamusta, kalibutan!").
Ang mga module ginapatakod sa normal nga mga pahina sang wiki gamit ang #invoke nga parser function. Ang syntax sang #invoke pareho sang template syntax, pero may yara sang indi pareho nga mga detalye. Ang pinakamahalaga nga kalainan amo nga kinahanglan mong isurat ang isa ka ngalan sang function.
Ang function amo ang isa ka set sang mga instruksiyon nga nagatanggap sang mga input values, ginaproseso ini, kag nagabalik sang isa ka output value.[1] Ini pareho gid sang ginahimo sang template: ginahatagan mo ini sang mga argumento, ginaproseso niya ini, kag makuha mo ang resulta. Pero pwede ka magtukod sang madamo nga functions sa isa ka Lua module, samtang isa ka template lang ang pwede nimo ma-define sa isa ka pahina.
Saka, indi nimo pwede padaku-on basta lang ang Lua module direkta—ang pwede lang amo ang padaku-on ang isa sa mga function sang module. Ang module amo lang ang container para sa mga function, kag indi ini mismo ang nagahimo sang bisan ano sa kaugalingon. Tungod sini may duha ka rason nga kinahanglan ta mag-input sang ngalan sang function:
- Indi ta pwede padaku-on ang module nga nag-inusara lang.
- Kung wala kita magtumukoy sang function name, indi mahibal-an sang Lua kon ano nga function ang gusto naton ipatakod.
Ang pinaka-simple nga paagi para padaku-on ang isa ka module gikan sa isa ka pahina sang wiki amo ini:
{{#invoke:NgaranSangModule|ngalanSangFunction}}
- Simple nga script, nagahatag sang isa ka function lang nga wala sing mga argumento.
Pwede ta padaku-on ang Module:Bananas sa paagi nga ini, nga may isa ka function nga gin-ngaran hello.
Indi mo kinahanglan mag-install ukon mag-save sang bisan ano.
- Sa imo nga pahina nin Paragamit.
- Idikit ang sunod nga tawag sa umpisa sang isa ka bag-o nga linya sa imo nga pahina sang User:
{{#invoke:Bananas|hello}}
- Clik "
Pasirip". Ang tawag sang functionhellosa Module:Bananas mapapalitan sang sunod-sunod nga ini:
Hello, world!
- Clik "
Ikansela". Kon pamamangkot, i-click angLeave. - Ang imo nga Paragamit indi magasubli un kung nabag-o.
Debug console: Magsugod pag-adal nin Lua
[baguhon an source]Ang Lua Scribunto Debug Console sangin ligtas, pakigsaboy-pakigbugto kag pangkatuto sang Lua sa Wikipedya.
- I-click ang
Baguhon an sourcesa Module:WikidataIB nga pahina. - Paligid sa pinakamaangub sang pahina paing sa bahin nga
Debug console. - I-paste ang komento kag ang pagtawag sa abo nga input box (sa ibabaw sang buton nga
Clear).
--[[Ang imo pirmi nga Lua nga Hello World-like program]]-- print("Malipayong pag-abot sa " .. _VERSION .. "!") -- Pagsagka sang bersyon sang Lua kag `..`
- Baluan ↵ Enter isa ka beses para patuyuan ang duha ka Lua commands.
- Ang resulta magpakita sa ubos sang linya sang Lua
printnga command:
Malipayong pag-abot sa Lua 5.1!
- Pindota ang ↑
Pataas nga arrowpara ikot ang una nga mga Lua command. - Sa mapusible, i-click ang
Clearpara limpyohan lamang angDebug Console;
ang Lua editor sa ibabaw mananatiling un kung nabag-o.
- HTML generator sa Debug console
Tawga ang function hello sa Module:Bananas:
local modKamusta = require('Module:Bananas') -- i-load ang module sa Debug console print(modKamusta.hello()) -- magpakita sang "Hello World!"
Hello World!
- Function nga pareho sang identidad
callParserFunction #if
-- #if yesno kung kaya nga i-balikan ang input parameter local yesno = require('Module:Yesno') print(mw.getCurrentFrame():callParserFunction("#if", yesno("Yes"), "Yes", 'no')) print(mw.getCurrentFrame():callParserFunction("#if", yesno('dai'), "Iyo", 'dai'))
Yes dai
- Isara ang protektado nga
Module:WikidataIB nga mananatiling un kung nabag-o.
Paggamit sang mga argumento
[baguhon an source]Ang mga argumento ginapasa sa mga module sa pareho nga paagi sang ila pagpasahan sa mga template. Pero pakigatiman, nga ang teksto pagkahuman sang una nga "pipe" (|) nga karakter ang ginikanan palagi sang ngalan sang function; ang una nga positional argument amo ang teksto pagkatapos sang ikalawa nga pipe.
{{#invoke:NgaranSangMod|ngalanSangFnc|positionalNgaArg1|arg2|pinangarananNgaArg=halaga}}
- Nagpapakita kon paano ma-access kag magamit ang mga parameter.
Sa Module:BananasArgs, ang hello nga function nag-greet sang nagkalain-lain nga tawo depende sa una nga positional argument.
Ang BananasArgs may yara man sang function nga gin-ngaran count_fruit nga nagagamit sang mga named arguments bananas kag apples para ihambal kon pila ka saging kag pila ka mansanas ang yara kita. Mahimo ini patakdon sini nga paagi:
Sa imo nga pahina nin Paragamit:
# {{#invoke:BananasArgs|hello|Maria}} # {{#invoke:BananasArgs|hello|Jose}} # {{#invoke:BananasArgs|count_fruit|apples=3|bananas=4}} # {{#invoke:BananasArgs|count_fruit|bananas=5|apples=2}}
- Hello, Maria!
- Hello, Jose!
- I have 4 bananas and 3 apples
- I have 5 bananas and 2 apples
- Pagpasa sang mga parameter gamit ang frame
Sa Debug Console sang Module:WikidataIB:
local modArg = require('Module:BananasArgs') -- i-load ang module local frame = mw.getCurrentFrame() frame.args[1] = "Maria"; print("1. " .. modArg.hello(frame)) -- "Hello, Maria!" frame.args[1] = "Jose"; print("2. " .. modArg.hello(frame)) -- "Hello, Jose!" frame.args["apples"] = "3"; frame.args["bananas"] = "4" -- number bilang string print("3. " .. modArg.count_fruit(frame)) -- I have 4 bananas and 3 apples frame.args["bananas"] = "5"; frame.args["apples"] = "2" print("4. " .. modArg.count_fruit(frame)) -- I have 5 bananas and 2 apples
1. Hello, Maria! 2. Hello, Jose! 3. I have 4 bananas and 3 apples 4. I have 5 bananas and 2 apples
Kadaghanan sang mga module may yara sang pahina sang dokumentasyon nga nagakahulag sang ano nga mga argumento ang pwede magamit kag ano ang mga epekto nila.
Mangaro sang script
[baguhon an source]Bumisita sa en:Wikipedia talk:Lua para maghangyo sang bulig sa pag-aram sang Lua script para maghimo sang partikular nga buruhaton sa Wikipedya o sa iba pa nga Wikimedia Foundation nga proyekto.
Kasaysayan
[baguhon an source]Magic words. {{qif}}, ParserFunctions, Lua extension, ginhisgutan sang mahabang panahon ang wiki scripting language (JavaScript kontra Lua), mw:Extension:WikiScripts, ginhimo ni Tim ang Scribunto nga may pauna nga suporta para sa Lua.
- Parser function
Sa Debug Console sang Module:WikidataIB:
local frame = mw.getCurrentFrame()
local candidates = {
-- Ibutang sang output nga kayarian nga pinakabay (ja)pan (tungod kay #language parser function)
{"#language", "ja"},
-- Maghimo sang tag nga <isbn> (pinaagi sang pagtugot sang multiple args sa #tag parser function)
{"#tag", {'isbn', '978-4-87311-471-2'}},
-- Baliktaon ang mga pangungusap depende sa damo (halimbawa sang plural parser function)
{"plural", {'42', 'Sinublî si sang libro.', 'Sinurublî si mga libro.'}},
-- Ibalik ang URL sang pahina nga may canonicalurl parser function
{"canonicalurl", tostring(mw.title.getCurrentTitle())},
}
local function args_to_string(obj)
if type(obj) == "table" then return table.concat(obj, " ") else return tostring(obj or "") end
end
-- _ = index (ginpabay-an), pair = value; ipairs nag-iiterate sang numeric nga keys sa han-ay
for _, pair in ipairs(candidates) do
-- Ngaran sang parser function nga tatawagan, kag ang argumento sini (string ukon table sang args)
local fn, arg = pair[1], pair[2]
local ok, res
if type(arg) == "table" then
-- Kon ang argument table, i-unpack ini kag ipasa bilang pareho nga mga argumento
ok, res = pcall(function() return frame:callParserFunction(fn, unpack(arg)) end)
else
-- Kon ang argument isa ka solong halaga (string), ipasa ini pareho lang
ok, res = pcall(function() return frame:callParserFunction(fn, arg or "") end) -- Luwas nga pagta-try
end
-- Ginhapod sa string kon nagmalampus (success), "<error>" kon nagkaproblema
local out = ok and tostring(res) or ("<error>")
-- Pagdugtong sang mga argumento para sa kahalig—ang output sini para sa Lua console.
print(string.format('%s(%q) -> %s', fn, args_to_string(arg), out))
end
Haponanon nga Sinultian:
#language("ja") -> 日本語
#tag("isbn 978-4-87311-471-2") -> <isbn>978-4-87311-471-2</isbn>
plural("42 Sinublî si sang libro. Sinurublî si mga libro.") -> Sinurublî si mga libro.
canonicalurl("Module:WikidataIB") -> https://bcl.wikipedia.org/wiki/Module:WikidataIB
Ginhisgutan ini sang mga katuigan. Naka-install ang Lua sa 2012 para sa testing sa test2.wikipedia.org, nga may bukas nga imbitasyon sa tanan nga mga editor nga mag-eksperimento sa pag-develop sang mga Lua modules. Naka-install ang Lua sa English Wikipedya sang Pebrero 2013, pagkatapos sang testing sa mediawiki.org kag Wikimedia test wikis.
Tungkol sa Lua
[baguhon an source]Magkakita rin Maikling presentasyon ni Brad Jorsch para sa mas klaro nga halimbawa kung paano i-konvert ang wikitext template ngadto sa Lua module.
Ang Lua kay a scripting language nga magagamit pag-aralan ang data, magkwenta sang mga expression, kag mag-format sang resulta gamit ang functions o object-oriented programming. Maskin ang ara sang iban nga Lua script puwede ipabilin nga simple, para sa sayon nga pagsabat, ang Lua nagtugot sang mas komplikado nga mga estruktura pareho sang tables, dynamic functions, kag associative arrays diin ang index nga subscripts pwede maging mga pulong kag mga index number.
Ang Lua nagpapalab-ot man sang recursion sang re-nested functions, gani kinahanglan magpili sang pag-amping para indi mag-ampon sang sobra nga ka-komplikado nga indi masabtan sang sang iban nga mga gumagamit kag paano mag-maintain sang Lua module.
Ang sunod amo ang halimbawa sang Lua source code para sa sini nga function nga "Kamusta, kalibutan!":
--[[Module:Bananas]]--
local p = {} -- I-initialize (p)ackage table
-- Para sa unit tests, tan-awa [[Module:Bananas/testcases]]
function p.hello()
return "Hello, world!" -- nagabalik "Kamusta, kalibutan!"
end
return p -- nagabalik (p)ackage table
Ang iban nga sample sang Lua gin-highlight sang tag <syntaxhighlight lang="lua" line highlight=1 copy> ... </syntaxhighlight> nga ginbutang palibot sang Lua source code.
Para sa mga panuto kung paano gamiton ang Lua sulod sang MediaWiki (kag amo man sa Wikipedya), tan-awa mw:Extension:Scribunto/Lua reference manual.
Subok sang unit
[baguhon an source]May nagagamit nga framework para sa unit testing sang mga Lua script sa Wikipedya sa Module:UnitTests. Nagapahalin ini sa imo nga subokan ang imo script gamit ang ginpili nga mga input, kag patunayan nga ang gina-expect nga output ang ginaproduce. Mapuslan gid ang unit tests sang partikular sa dali nga pagdiskubre sang mga regression, kay ang mga pagbabago sa script nagapati sang bag-o (o daan) nga mga problema.
Sang kasapukan, ang unit tests para sa module pareho sang Module:Bananas ginaplastar sa Module:Bananas/testcases, kag ginapatuman sa Module talk:Bananas/testcases paagi sa:
- Sa imo nga pahina nin Paragamit.
{{#invoke:Bananas/testcases|run_tests}}
- Clik "
Pasirip"
Sang tanan 1 test nagsukses.
test_hello
test_hello Subok Gina-expect Tatsulod {{#invoke:Bananas|hello}} Hello, world! Hello, world!
- Clik "
Ikansela". Ang imo nga Paragamit indi magasubli un nabag-o.
Ang mga pamaagi sang test dapat magsugod sa p:test_.
--[[Module:Bananas/testcases]]--
local p = require('Module:UnitTests') -- I-initialize (p)ackage table
-- Clik ang Pag-urulay para magpatuman sang mga test.
function p:test_hello() -- Unit tests para sa [[Module:Bananas]].
self:preprocess_equals('{{#invoke:Bananas|hello}}', 'Hello, world!')
end
return p -- nagabalik (p)ackage table
| Prinsipyo sang unit testing |
|---|
|
Sa
Ang gin-generate nga HTML pareho gid. |
Para sa listahan sang tanan nga modules nga nagagamit sang unit tests, tan-awa sa Special:Whatlinkshere/Module:UnitTests.
May-ada man alternative nga unit testing framework ginagamit nga ginatawag en:Module:ScribuntoUnit, nga naggikan sa Hungarian Wikipedya. Sa pareho nga mga bahin (feature-wise) pareho man ini gid sa Module:UnitTests, pero may-ada ini sang nagkalain-lain nga estilo sa pagsulat (coding style), kag nagahabol sang mga tinuod nga error nga ginakaptan paagi sa protected calls. May-ada man ini sang pamaagi para sa pagpares sang mga float sa sulod sang ginhatag nga eksaktong anggulo (precision).
Mga espesyal nga bahin sang Wikipedya
[baguhon an source]Sa tibuok: Ang Lua kay pwede lang makadawat sang input bilang mga text string nga ginapatala sa {{#invoke:}} kag halin sang iban nga maakuha pinaagi sa mw.title.new(...):getContent() kag frame:expandTemplate(). Ang output sang Lua indi ginaproseso sa una maliban kon ang frame:preprocess() ginatawag gid sang klaro, sangto nga ang mga pagtawag sang template kag mga parser function sa output indi magatrabaho sang husto.
Mas mainam na gumamit ng mga function na mw.ustring.len imbes na string.len.
Sa Debug Console sang Module:WikidataIB:
--[[ASCII]]-- local content_lang = mw.getContentLanguage().code -- bcl local lang = mw.getCurrentFrame():callParserFunction("#language", content_lang) -- Bikol local lenUnicode, lenByte, lenSharp = mw.ustring.len(lang), string.len(lang), #lang print(("Content: '%s'. Lang: \"%s\" Mw.ustring.len = %d String.len = %d Sharp = %d"):format(content_lang, lang, lenUnicode, lenByte, lenSharp)) --[[Unicode]]-- lang = "1. Sarô." local lenUnicode, lenByte, lenSharp = mw.ustring.len(lang), string.len(lang), #lang print(("Content: '%s'. Lang: \"%s\" Mw.ustring.len = %d String.len = %d Sharp = %d"):format(content_lang, lang, lenUnicode, lenByte, lenSharp))
Content: 'bcl'. Lang: "Bikol Central" Mw.ustring.len = 13 String.len = 13 Sharp = 13 Content: 'bcl'. Lang: "1. Sarô." Mw.ustring.len = 8 String.len = 9 Sharp = 9
Ang tanan nga Lua sa sulod sang pahina limitado sa 10 segundos nga CPU time (pwede mo tan-awon sa source code sang ginrender nga pahina para makita kon daw ka tagal ang template o module sang nag-parse).
Kag may kaugnayan sa standard nga Lua, ang Lua sang Scribunto ligtas (kita sa Mga kalainan sa karaniwang Lua).
Mga limitasyon sa input sang Lua
[baguhon an source]Ang mga programa ginapadagan ra sang page nga "gin-aproseso" (sang ginbag-o ini o sang ginbag-o man ang page nga iya ginakomponar, ukon gin-preview), indi kada beses nga ginapanood mo ang output. Busa wala sing sayon nga Lua module nga magtugot sa imo nga magtype sang temperatura sa Fahrenheit sa sulod sang isang input box kag makatanggap sang katumbas nga temperatura sa Celsius sang pagpitok mo sang isang button, o nga magtugot sa imo nga i-click ang isa ka bahin sang gin-visualize nga Mandelbrot set sa page para mapalaparan ini kada beses nga gusto mo. Kinahanglan may ara sing tinuod nga Wiki page (ukon bisan pa ang page nga imo ginasubmit para sa preview) nga naglalaman sang input data.
Sa Debug Console sang Module:WikidataIB:
local function toCelsius(tempFahrenheit) return (tempFahrenheit - 32) * 5 / 9 end print(("toCelsius(32°F) = %s°C. toCelsius(68°F) = %d°C"):format(toCelsius(32), toCelsius(68)))
toCelsius(32°F) = 0°C. toCelsius(68°F) = 20°C
Gayunman, posible ring gumamit sang mga function sang library kagaya sang mw.title.getCurrentTitle() agod makuha ang pamagat sang kasalukuyang module.
print(mw.title.getCurrentTitle()) print(mw.getCurrentFrame():preprocess('{{PAGENAME}}'))
Module:WikidataIB WikidataIB
Ang input nga Lua pwede makadawat sang bisan ano nga transcludeable text page sa Wikipedya. Ini wala naga-apil sa graphics files (maskin SVG files, bisan pa nga ini text gid, maliban kung i-cut and paste mo ini papunta sa isang Wiki text page), ang lista sang mga page nga ginatan-aw sa sulod sang kategorya, kag ang nilalaman sang dai-pwedeng i-transclude mga espesyál nga pahina.
LuaCall
[baguhon an source]Ang Module:LuaCall nagbibigay sang kakayahan nga tatawagan ang bisan ano nga isa (isang-isa lang) nga Lua function, sang amo nga indi mo kinahanglan magsurat sang module para sa isa lang nga gusto mo nga feature.
- Unicode
mw.ustring.gsub
Sa imo nga pahina nin Paragamit:
{{#invoke:LuaCall|main|subjectStr=May mga liborong iyan.|pattern=mga liborong|replace=libro na|mw.ustring.gsub(subjectStr,pattern,replace)|lua}}
Clik "Pasirip":
May libro na iyan.
Sa Debug Console sang Module:WikidataIB:
--[[Sang dami sang libro, pili-a ang singular ukon plural]]-- local existentialMarker = "May "; local baseSingular = "libro" -- book local linkerFocus = " na "; local postConnector = "ng " -- bago sang demonstrative local singularExpr = baseSingular .. linkerFocus local pluralMarker = "mga "; local basePlurar = "liboro" -- books local pluralExpr = pluralMarker .. basePlurar .. postConnector local demonstrative = "iyan." -- May libro na iyan. (May isa lang nga libro.) local bookSingular = existentialMarker .. singularExpr .. demonstrative -- May mga liborong iyan. local booksPlural = existentialMarker .. pluralExpr .. demonstrative print("There are those books:") -- plural para sa 42 ka libro print(mw.getCurrentFrame():callParserFunction("plural", {'42', bookSingular, booksPlural})) --[[Palitan ang plural marker sang singular]]-- local function buildFrame(templateTitle, parentArgs, moduleName, childArgs) local root = mw.getCurrentFrame() local parent = root:newChild{title=templateTitle, args=parentArgs or {}} return parent:newChild{title=moduleName, args=childArgs or {}} end -- wala sang tighil-ot nga espasyo separator local globalSub = "mw.ustring.gsub(subjectStr,pattern,replace)" local prm = {subjectStr=booksPlural, pattern=pluralExpr, replace=singularExpr, globalSub, "lua"} local moduleName = 'Module:LuaCall' local frame = buildFrame(moduleName, prm, moduleName) local singularSentence = require(moduleName).main(frame) print("There is that book:\n" .. singularSentence) -- singular print(singularSentence == bookSingular)
There are those books: May mga liborong iyan. There is that book: May libro na iyan. true
- Sinasurat an iskrip Module:LuaCall para tumanggap sang bisan ano nga set sang mga pinangalanan nga parameter
key=value. - Sa kada isa, ginabantayan sini an mga tinaga
valuesa baryable nga may ara sang ngalankey. - Ini nagapaluwas nga magamit mo ini nga mga baryable bilang mga parameter para sa bisan ano nga pagpangandar (function) nga ara sa Lua.
- Pagkatapos, ang iskrip nagabalik lang sang una nga value nga ginbalik sang function.
- Puwede sang Lua functions nga magbalik sang iban-iba nga multiple values, pero sa sini nga kaso, sa module, ang una lang ang ginabalik.
Mga Kamalian
[baguhon an source]Lumilitaw ang mga error sa Lua bilang mga pulang mensaheng "Script error". Kung naka-enable ang Javascript, ang pulang mensahe ng script error ay isang link na kadalasang nagbibigay-daan para masundan pabalik ito sa linya kung saan naganap ang error sa module.
May ilan na mga eksepsiyon, halimbawa ang "Module not found", kung ang pangalan mismo ng module ay maling na-type, o "The function you specified did not exist" kung ang pangalan ng function na ibinigay ay di-wasto.
May ilang mga bug na baka gusto mong tandaan:
- Kulangan ang operator para sa concatenation
local debugLog = "" -- walang laman nga report string debugLog = debugLog "missing double dot" -- idadagdag para sa report
Ini nga ibig sabihin ginlimbuhan mo ang .. sa pagitan sang isang string kag sang isang variable sa kung diin may gulo nga mga bagay nga ginacconcatenate mo.
Lua error sa console input sa linya 8: pagtatangkang tawagon ang local 'debugLog' (isang string value).
- Ang inaasahang string, pero ang nakuha function
local debugLog = "" -- walang laman nga report string local res = mw.ustring.gmatch("Hello World!", "([aeiou])") -- iterator sang mga patinig debugLog = debugLog..res -- idadagdag para mapuno ang report sang mga string lang
May yara sang importante nga mga bagay pareho sang mw.ustring.gmatch nga talaga nagabalik sang functions, indi mga strings.
Lua error sa console input sa linya 9: pagtatangkang i-concatenate ang local 'res' (isang function value).
- Ang variable nagabale wala sa pag-assign mo
Ang isang variable nagabale wala sa tanan mong mga pagsisikap nga i-assign ang mga bagay sa ini:
local debugLog = "top level" -- inisyal nga halaga do local debugLog = "nested level" -- itakda ang bag-o nga halaga print("Inside do: "..debugLog) end print("Outside do: "..debugLog) -- kunin ang lumang halaga
Makahulugan nga may hindi sinasadyang masulat mo ang dalawa nga local statements – ang isa nagtatakda sang halaga sang variable sa sulod sang indi paangkop nga lugar, kag pag ang programa magsalin sang lugar nga ini, bumabalik ka sa lumang halaga.
Inside do: nested level Outside do: top level
Ang isa ka numbered table entry nagabale wala sa tanan mong mga pagsisikap nga i-assign sa ini:
local table = {}; local arg = "50"; local valPrm = tonumber(arg) table[arg] = "index as string" table[valPrm] = "index as number" print(table[arg] == table[valPrm])
Ini tungod kay table["50"] indi table[50].
Kasagaran may ginproseso ka nga parameter (nga mahimo nga nakadawat mo ini halin sa #invoke bilang string) gamit ang mga function sang string sa isa ka lugar, pero ginbuhat mo ang mga numeric nga operasyon sa iban nga lugar, nga nagbilin sa imo sang dua ka magkalain nga klase sang variable nga gamiton mo para sa index.
false
nilkag mga kasagaran nga pagkapid-an
May iban-iban nga mga bagay nga indi mo mahimo sa isa ka local variable nga na-set sa nil, pareho sang: local x = nil, sama sang:
- I-assign
x.somefield - Kunin ang halaga sa index
x[idx] - I-concatenate
x .. "Cannot concatenate with nil" - I-evaluate
table[x]
I-inisyalisa ang mga sini nga variable gamit: local x={}; local table = {}
Kasagaran ginbabanggit ang "global" sa mga ini nga mga error kay wala ka sang local nga statement para sa nil nga variable.
- Indi ma-invoke ang module
- walay ini nga module. Ginatawag mo ang
#invoke:moduleNameUnknownnga indi nag-iral, ukon maling naibutang mo ang prefixModule:sa pagsulat mo,#invoke:Module:NgaranSangModule. - ang ginhisgutan nga function wala nag-iral. Ginatawag mo ang
#invoke:NgaranSangModule|functionUnknown, pero ang field pagkatapos sang pangalan sang module may sayop. Kasagaran ini nga field nagahagad sang standard nga pangalan pareho sang "main", kag nakalimot ka sini kag nagtuok ka dayon sa una nga data parameter.
Kung indi ka sigurado sa pangalan sang function, tan-awa ang dokumentasyon sang module, ukon pangita kung anong mga function sa code ang tumatanggap sang parameter nga "frame".
- Isyu sang pag-apaw sang graphics
May iban-iban nga graphics nga ginatray mong ipakita nagalikaw pa-ibabaw sang kabukiran - sa tinuod lang, sayop ini sang HTML.
Wala mo gin-isarado ang isa ka </div>, so tanan sang top: kag left: nga mga estilo nagapadayon sa pag-ipon-ipon.
Wikitext
[baguhon an source]Ang mga madalas nga na-ti-traus sa Wikipedya headers na may tago nga code pareho sin "UNIQ5ae8f2aa414ff233-h-3--QINU" nga mahimo man kinahanglan hubaron para mabulabog sila nga ma-parse ma’ayo.
print(string.reverse("UNIQ"))
QINU
Ang mga wikilink han type [[Tabang:Pagliwat nin Artikulo|]] indi magagamit kung ibalik sugad nga output—kinahanglan isurat sugad nga klaro kag direkta pareho sin [[Tabang:Pagliwat nin Artikulo|Pagliwat nin Artikulo]].
Iba pa nga pre-save transforms, pareho han pag-ilis han ~~~~ para maging mga signature, mabo-bolsok man nga indi maproseso. Ang template transclusions, parser function calls, kag variable substitutions (nga bisan ano nga may {{...}}) indi mapoproseso, kag diri man mapoproseso ang mga tag pareho sin <ref> o <nowiki>.
Cite book
[baguhon an source]Sa imo nga pahina nin Paragamit:
{{cite book |last=Woodward |first=Ian |date=2012-05-31 |title=Audrey Hepburn: Fair Lady of the Screen |language=en |url=https://books.google.com/books?id=PdKmyvMFWSoC&pg=PA94 |publisher=Ebury Publishing |isbn=978-1-4481-3293-5 |ref=harv}}
Clik "Pasirip":
Woodward, Ian (2012-05-31). Audrey Hepburn: Fair Lady of the Screen (in English). Ebury Publishing. ISBN 978-1-4481-3293-5.
Sa Debug Console sang Module:WikidataIB sa Bikol Sentral Wikipedya (bcl):
local function buildFrame(templateTitle, parentArgs, moduleName, childArgs) local root = mw.getCurrentFrame() local parent = root:newChild{title=templateTitle, args=parentArgs or {}} return parent:newChild{title=moduleName, args=childArgs or {}} end local prm = {last="Woodward", first="Ian", date="2012-05-31", title="Audrey Hepburn: Fair Lady of the Screen", language="en", publisher="Ebury Publishing", isbn="978-1-4481-3293-5", url="https://books.google.com/books?id=PdKmyvMFWSoC&pg=PA94", ref="harv" } local moduleName = "Module:citation/CS1"; local childArg = {CitationClass = "book"} local frame = buildFrame("Plantilya:Cite book", prm, moduleName, childArg) print(require(moduleName).citation(frame))
Plantilya:Cite book nagsasalin sang masunod nga HTML sa Bikol Sentral Wikipedya (bcl):
<cite id="CITEREFWoodward2012" class="citation book">Woodward, Ian (2012-05-31). [https://books.google.com/books?id=PdKmyvMFWSoC&pg=PA94 ''Audrey Hepburn: Fair Lady of the Screen''] (in English). Ebury Publishing. [[International Standard Book Number|ISBN]] [[Special:BookSources/978-1-4481-3293-5|978-1-4481-3293-5]].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Audrey+Hepburn%3A+Fair+Lady+of+the+Screen&rft.pub=Ebury+Publishing&rft.date=2012-05-31&rft.isbn=978-1-4481-3293-5&rft.aulast=Woodward&rft.aufirst=Ian&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DPdKmyvMFWSoC%26pg%3DPA94&rfr_id=info%3Asid%2Fbcl.wikipedia.org%3AModule%3AWikidataIB" class="Z3988"><span style="display:none;"> </span></span>[[Category:CS1 English-language sources (en)]]
- Ang HTML nagmumugad sang:
<cite id="CITEREFWoodward2012"para sa Madali nga Foot Note Plantilya:Sfn.
Ang HTML Anchor may sinyaksis nga:"#"+"CITEREF"+ Manunulat + Tuig. - Pilia ang wikilink Audrey Hepburn#CITEREFWoodward2012 agod mag-scroll hasta ang libro, nga hindi naka-highlight sa asul.
- Ang huling parameter
|ref="harv"saModule:Citation/CS1 sa simula lamang para sa pagsipi sang CS2, hindi para sa CS1 sa ibabaw.
- Sa na-update nga Ilokano
Module:Citation/CS1
Sa Debug Console sang ilo:Modulo:Wensaan sa Ilokano Wikipedya (ilo).
Ang pagsipi nga Harvard ay sang default. Ang huling parameter |ref="harv" indi kinahanglan.
local function buildFrame(templateTitle, parentArgs, moduleName, childArgs) local root = mw.getCurrentFrame() local parent = root:newChild{title=templateTitle, args=parentArgs or {}} return parent:newChild{title=moduleName, args=childArgs or {}} end local prm = {last="Woodward", first="Ian", date="2012-05-31", title="Audrey Hepburn: Fair Lady of the Screen", language="en", publisher="Ebury Publishing", isbn="978-1-4481-3293-5", url="https://books.google.com/books?id=PdKmyvMFWSoC&pg=PA94" } local moduleName = "Module:citation/CS1"; local childArg = {CitationClass = "book"} local frame = buildFrame("Plantilia:Cite book", prm, moduleName, childArg) print(require(moduleName).citation(frame))
Plantilia:Cite book nagsasalin sang masunod nga HTML sa Ilokano Wikipedya (ilo):
<DEL>'"`UNIQ--templatestyles-00000000-QINU`"'<DEL><cite id="CITEREFWoodward2012" class="citation book cs1 cs1-prop-foreign-lang-source">Woodward, Ian (2012-05-31). [https://books.google.com/books?id=PdKmyvMFWSoC&pg=PA94 ''Audrey Hepburn: Fair Lady of the Screen''] (iti Ingles). Ebury Publishing. [[ISBN (panangilasin)|ISBN]] [[Special:BookSources/978-1-4481-3293-5|<bdi>978-1-4481-3293-5</bdi>]].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Audrey+Hepburn%3A+Fair+Lady+of+the+Screen&rft.pub=Ebury+Publishing&rft.date=2012-05-31&rft.isbn=978-1-4481-3293-5&rft.aulast=Woodward&rft.aufirst=Ian&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DPdKmyvMFWSoC%26pg%3DPA94&rfr_id=info%3Asid%2Filo.wikipedia.org%3AModulo%3AWensaan" class="Z3988"></span>[[Kategoria:Dagiti taudan ti pagsasao ti CS1 iti Ingles (en)]]
- Tago nga code
"UNIQ--templatestyles.*-QINU"sa tali sang non‑printing 0x7F DEL markers gin-alisan kag i-strip gamit ang"<DEL>". - Ang wikilink ilo:John F. Kennedy#CITEREFDallek2003 naghi-highlight sa libro sang asul nga background-color-progressive-subtle.
Pagmarka sang na-convert nga mga plantilya
[baguhon an source]| Uses Lua: |
Pakibutang ang {{lua}} nga template sa subpage han dokumentasyon sang tanan nga mga plantilya nga nagagamit sang Lua. Mahihimo ini nga mas klaro nga maipahayag ang paggamit sang Lua kag ang mga pag-convert sang plantilya.
Tan-awa man ini
[baguhon an source]- Espesyal:PrefixIndex/Module: lista sang mga module sang Lua
- Listahan sang mga protektadong Lua module
- Mga kapinunan sang Ingles nga espesyal sa Wikipedya
- en:Help:Lua debugging – sini nga gabay-pamaagi nagatudlo kung paano mag-debugging sang mga Lua module
- Module:Sandbox naghatag sang pseudo-namespace para sa pag-eksperimentar sa Lua modules
- en:Wikipedia talk:Lua – mga pamangkot para sa mga template o mga buluhaton nga nakabase sa Lua
- Kategorya:Lua-based templates – mga grupo sang mga template nga nakabase sa Lua
- Kategorya:Lua metamodules
- Dokumentasyon sang MediaWiki para sa Lua
- Manual:Coding conventions/Lua – mga pamantayan para mapabakod ang kabasa sang code paagi sa kaangay (consistency)
- mw:Extension:Scribunto/Lua reference manual
Toltolan
[baguhon an source]- ↑ Pwede man kita nga magbalik sang multiple nga output values, pero ang mga function nga nagabuhat sini indi kasagaran nga gusto nga ma-access gikan sa mga pahina sang wiki.