Here naverokê

Wîkîpediya:Lua

Ji Wîkîpediya, ensîklopediya azad.

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.

  1. Rûpela Bikarhênerê xwe biguherînin.
  2. Ev bang li destpêka rêzeke nû li ser rûpela Bikarhênerê xwe paste bikin:
{{#invoke:Example|hello}}
  1. Li ser Pêşdîtinê nîşan bide bikirtînin. Bangê fonksiyona hello li Modul:Example bi vêyan tê guhertin:
Hello World!
  1. Li ser Betal bike bikirtînin. Dema ku pirs tê, li ser Leave bikirtînin.
  2. 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.

  1. Li ser rûpela Modul:InfoboxImage li ser Çavkaniyê bibîne bikirtînin.
  2. Bi rêze heta bin rûpelê were şûndekirin bo beşa Debug console.
  3. Şî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
  1. Ji bo bicîhkirina du fermana Lua yek caran ↵ Enter bike.
  2. Encam dê li jêr rêza fermana print ya Lua xuya be:
Tu bi xêr hatî Lua 5.1!
  1. Ji bo vegerandinê di nav fermanên berê de ↑ Up arrow bikirtînin.
  2. Heger xwestin, li ser Jê bibe bikirtînin da ku tenê Debug Console pak 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ê
  1. 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]]&nbsp;[[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)]]
  1. Code-yê veşartî "UNIQ--templatestyles.*-QINU" di navbera nîşanên ne‑çapkirin 0x7F (DEL) de têne jêbirin bi "".
  2. <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.

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
nil un 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:

  1. Piešķirt x.somefield
  2. Iegūt vērtību indeksā x[idx]
  3. Salīmēt x .. "Cannot concatenate with nil"
  4. 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 prefiksu Modul:, 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.

Girêdanên derve

[çavkaniyê biguhêre]