Wîkîpediya:Lua

Lua, yek MediaWiki dirêjkirina reşemî 2013'an de bi zimanê bernameyên li ser Wîkîpediya tê bikaranîn: Rûpelên kodên Lua'yê, wek bi navê {{#invoke:NavêModule|fonksiyon|parametre}} tê bikaranîn.
HTML generator-ê "Slav Cîhan!"
[çavkaniyê biguhêre]Hûn pêwîst nînin tiştek saz bikin an tomarkirin.
- Rûpela Bikarhênerê xwe biguherînin.
- Ev bang li destpêka rêzeke nû li ser rûpela Bikarhênerê xwe paste bikin:
{{#invoke:Example|hello}}
- Li ser
Pêşdîtinê nîşan bidebikirtînin. Bangê fonksiyonahelloli Modul:Example bi vêyan tê guhertin:
Hello World!
- Li ser
Betal bikebikirtînin. Dema ku pirs tê, li serLeavebikirtînin. - Rûpela we ya Bikarhênerê ne guherandî dimîne.
Debug console: Dest pê kiriya fêrbûna Lua
[çavkaniyê biguhêre]Console-a Debug a Lua Scribunto ya Debug Console amûrek ewle, interaktîf e bo fêrbûna Lua li ser Wîkîpediya.
- Li ser rûpela Modul:InfoboxImage li ser
Çavkaniyê bibînebikirtînin. - Bi rêze heta bin rûpelê were şûndekirin bo beşa
Debug console. - Şîrove û bangê wê paste bikin di qutîka têketinê ya fereng de (li jorê bişkoja
Jê bibe).
--[[Bernameya we ya pêşîn a Lua wek Slav Cîhanê]]-- print("Tu bi xêr hatî " .. _VERSION .. "!") -- Versiyona Lua bi `..` tê girêdan
- Ji bo bicîhkirina du fermana Lua yek caran ↵ Enter bike.
- Encam dê li jêr rêza fermana
printya Lua xuya be:
Tu bi xêr hatî Lua 5.1!
- Ji bo vegerandinê di nav fermanên berê de ↑
Up arrowbikirtînin. - Heger xwestin, li ser
Jê bibebikirtînin da ku tenêDebug Consolepak bibe; edîtora Lua li jorê dê ne guherî be.
- HTML generator di Konsola pêşxistinê de
Bangê fonksiyona hello li Modul:Example bikin:
local modExample = require('Modul:Example') -- modula li Konsola pêşxistinê barkirin print(modExample.hello(mw.getCurrentFrame())) -- "Slav Cîhan!" nîşan bide
Hello World!
- Fonksiyona nasnameyê
local yesno = require('Modul:Yesno') -- #if yesno wê parametreyê têketinê xwe vegerîne print(mw.getCurrentFrame():callParserFunction("#if", yesno("Erê"), "Erê", 'na'))
Erê
- Modula parastî
Modul:InfoboxImage bigire ku wê hêla ne guherandî dimîne.
Jimare biguherîne
[çavkaniyê biguhêre]Programs tenê di demekê de çalak dikin dema rûpel "parst" tê (guhertin an pêşwazî), ne her carek ku hûn encam dîtin. Ji ber vê yekê modulê Lua nikare nirxek Fahrenheitê ji qutîyeka têketinê ya zindî bistîne û li ser bikirtîna pêlê wê biguhezîne; têketin divê li rûpelê Wiki-ê be (an rûpelê ku hûn ji bo pêşwazî şandine).
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
print(require("Modul:Roman").main({2026}))
MMXXVI
--[[Convert a number to letter in English]]-- local convNum = require('Modul:ConvertNumeric') local frame = mw.getCurrentFrame(); frame.args = {"57000", round="on", plural="on"} print(convNum.numeral_to_english(frame) .. " is rounded from 57,000.") local debugLog = {} -- empty report table for key, val in pairs(frame.args) do -- for each arg debugLog[#debugLog + 1] = ("args[%s] = %s"):format(key, val) end -- ^length. Adding report is faster than debugLog = debugLog .. string print(table.concat(debugLog, ". ")) -- Join with separator mw.logObject(frame.args) -- Scribunto tool to display table
sixty thousand is rounded from 57,000. args[1] = 57000. args[plural] = on. args[round] = on table#1 { "57000", ["plural"] = "on", ["round"] = "on", }
Çima tê bikaranîn
[çavkaniyê biguhêre]Lua, bikaranîna di şablona mw:erkên dêrandinê ya tevlîhev: afirandina alternatîf ji bo ku fonksiyona parser destûrê dide nivîsandina koda şablonê sade.
Sernavê rûpela wîkiya heyî bi mw.title.getCurrentTitle() bistîne:
print(mw.title.getCurrentTitle())
Modul:InfoboxImage
Ji hêla mw.ustring fûnksiyonan bikar bînin li herêmê, ne ji hêla string:
--[[Kurmanji, Northern Kurdish]]-- local lang = mw.getCurrentFrame():callParserFunction("#language", "ku") -- Kurdî local lenUnicode, lenByte, lenSharp = mw.ustring.len(lang), string.len(lang), #lang print(("lang: %s Mw.ustring.len = %d String.len = %d Sharp = %d"):format(lang, lenUnicode, lenByte, lenSharp))
Konsola pêşxistinê Unicode-ê piştgirî dike:
lang: kurdî Mw.ustring.len = 5 String.len = 6 Sharp = 6
Paşgirên dema borî (-î) yên Kurmancî bi paşgirên dema niha (-e) biguherînin:
local subjectStr = "Tu gotî: 'Dîrokî', ew kirî." -- "You said: 'History', she did it." local pattern = "î(%f[:%s.])" -- capture the UTF-8 past suffix (î) at the frontier local replace = "e%1" -- replace suffix with present singular "e" local result, nbrReplace = mw.ustring.gsub(subjectStr, pattern, replace) print(result) -- expected: "Tu gote: 'Dîrokî', ew kire." You say: 'History', she does it.
Tu gote: 'Dîrokî', ew kire.
Jêder-kitêb
[çavkaniyê biguhêre]Li rûpela Bikarhênerê xwe, ev Şablon:Jêder-kitêb binavîse:
{{Jêder-kitêb |paşnav=Olson |pêşnav=Robert W. |sal=1989 |sernav=The emergence of Kurdish nationalism and the Sheikh Said Rebellion, 1880-1925 |ziman=en |weşanger=University of Texas Press |isbn=978-0-292-77619-7 |cih=Austin |url=https://books.google.com/books?id=P6lpAAAAMAAJ }}
Li ser Pêşdîtinê nîşan bide bikirtînin:
Olson, Robert W. (1989). The emergence of Kurdish nationalism and the Sheikh Said Rebellion, 1880-1925 (bi îngilîzî). Austin: University of Texas Press. ISBN 978-0-292-77619-7.
Li konsola pêşxistinê ya Modul:InfoboxImage de:
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="Olson", first="Robert W.", title="The emergence of Kurdish nationalism and the Sheikh Said Rebellion, 1880-1925", publisher="University of Texas Press", ["publication-place"]="Austin", year="1989", isbn="978-0-292-77619-7", language="en", url="https://books.google.com/books?id=P6lpAAAAMAAJ" } local moduleName = "Modul:citation/CS1"; local childArg = {CitationClass = "book"} local frame = buildFrame("Şablon:Jêder-kitêb", prm, moduleName, childArg) print(require(moduleName).citation(frame))
HTML-ya afirandî dest pê dike bi:
<DEL>'"`UNIQ--templatestyles-00000000-QINU`"'<DEL><cite id="CITEREFOlson1989" class="citation book cs1 cs1-prop-foreign-lang-source">Olson, Robert W. (1989). [https://books.google.com/books?id=P6lpAAAAMAAJ ''The emergence of Kurdish nationalism and the Sheikh Said Rebellion, 1880-1925''] (bi îngilîzî). Austin: University of Texas Press. [[ISBN (identifier)|ISBN]] [[Special:BookSources/978-0-292-77619-7|<bdi>978-0-292-77619-7bdi>]].cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+emergence+of+Kurdish+nationalism+and+the+Sheikh+Said+Rebellion%2C+1880-1925&rft.place=Austin&rft.pub=University+of+Texas+Press&rft.date=1989&rft.isbn=978-0-292-77619-7&rft.aulast=Olson&rft.aufirst=Robert+W.&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DP6lpAAAAMAAJ&rfr_id=info%3Asid%2Fku.wikipedia.org%3AModul%3AInfoboxImage" class="Z3988">span>[[Kategorî:CS1 îngilîzî-language sources (en)]]
- Code-yê veşartî
"UNIQ--templatestyles.*-QINU"di navbera nîşanên ne‑çapkirin 0x7F (DEL) de têne jêbirin bi"." <cite id="CITEREFOlson1989"ji bo Şablon:Sfn:{{sfn|Olson|1989|pp=88–89}}pirtûkê wekî girêdana-wikiyê Şêx_Seîd#CITEREFOlson1989 hilbijêre.
Kļūdas
[çavkaniyê biguhêre]Lua kļūdas parādās kā sarkani paziņojumi "Script error".
{{Jêder-kitêb}}: |ref=harv ne derbasdar e (alîkarî)
Ev parametre ne pêwîst e.
Atkārtotas kļūdas
[çavkaniyê biguhêre]Dažas kļūdas, kuras varētu vēlēties paturēt prātā:
- Trūkst operatora savienojumam (konkatenācijai)
local debugLog = "" -- empty report string debugLog = debugLog "missing double dot" -- append to the report
Tas nozīmē, ka kaut kur savienojot virknes un mainīgos tu aizmirsīji ierakstīt ..:
Xeletiya Luayê di console input de, li ser rêza 8: attempt to call local 'debugLog' (a string value).
- Sagaidīta virkne, saņemta funkcija
local debugLog = "" -- empty report string local res = mw.ustring.gmatch("Slav Cîhan!", "([aeiou])") -- iterator of vowels debugLog = debugLog..res -- populate the report with only strings
mw.ustring.gmatch faktiski atgriež function, nevis string.
Xeletiya Luayê di console input de, li ser rêza 9: attempt to concatenate local 'res' (a function value).
- Mainīgais ignorē piešķiršanu
Mainīgais ignorē visus jūsu mēģinājumus piešķirt tam vērtības:
local debugLog = "top level" -- initial value do local debugLog = "nested level" -- set the new value print("Inside do: "..debugLog) end print("Outside do: "..debugLog) -- get the old value
Iespējams, jūs nejauši esat ierakstījis divas local deklarācijas — viena uzstāda mainīgā vērtību ierobežotā apgabalā, un, kad programma pamet šo apgabalu, tiek atgriezta vecā vērtība.
Inside do: nested level Outside do: top level
Numurēta tabulas ieraksta piešķiršana tiek ignorēta:
local table = {}; local arg = "50"; local valPrm = tonumber(arg) table[arg] = "index as string" table[valPrm] = "index as number" print(table[arg] == table[valPrm])
Tā ir tāpēc, ka table["50"] nav tas pats, kas table[50].
Parasti jūs kādā vietā apstrādājat parametru (ko, iespējams, saņēmāt no #invoke kā virkni) ar virkņu funkcijām,
bet citur veicat skaitliskas darbības, atstājot jums divu dažādu tipu mainīgos, ko izmantot kā indeksu.
false
nilun biežas ķibeles
Ir daudz lietu, ko nevar darīt ar lokālo mainīgo, kura vērtība ir nil, piemēram: local x = nil, piemēram:
- Piešķirt
x.somefield - Iegūt vērtību indeksā
x[idx] - Salīmēt
x .. "Cannot concatenate with nil" - Novērtēt
table[x]
Inicializējiet tādus mainīgos šādi: local x = {}; local table = {}
Bieži kļūdās tiek minēts "globāls", jo jums nav local deklarācijas priekš nil mainīgā.
- Nevar izsaukt moduli
- nav tāda moduļa. Jūs izsaucāt
#invoke:moduleNameUnknown, kas nepastāvēja, vai arī nepareizi atstājāt prefiksuModul:, rakstot#invoke:Modul:moduleName. - norādītā funkcija nepastāvēja. Jūs izsaucāt
#invoke:moduleName|functionUnknown, bet lauks pēc moduļa nosaukuma ir nepareizs.
Bieži šis lauks sagaida standarta nosaukumu, piemēram, "main", un jūs to esat aizmirsuši un tieši norādījuši pirmo datu parametru.
Ja neesat pārliecināts par funkcijas nosaukumu, pārbaudiet moduļa dokumentāciju vai meklējiet, kura(-as) funkcija(-as) kodā pieņem "frame" parametru.
- Grafikas pārliešanas problēma
Dažas grafikas, kuras mēģināt attēlot, tiek izvietotas ārpus redzamā laukuma: faktiski HTML kļūda.
Jūs neaizvērāt vienu div>, tāpēc visi top: un left: stili turpina summēties.