Mòdul:SimpleDebug/ús
Conté funcions per ajudar a depurar els mòduls lua. Permet recollir i visualitzar els valors de diverses variables i/o punts del vostre programa lua, des d'un mòdul (que és l'habitual) o en diversos mòduls (que són requerits des del mòdul principal).
Està dissenyat perquè les seves funcions siguin cridades des de dins del mòdul que es vol depurar, crides que hauran de formar part del codi (del mòdul que heu dissenyat, o que vol millorar o adaptar) fins que decidiu eliminar-les (quan ja hàgiu determinat l'error). Així, no s'ha de cridar cap de les seves funcions amb un invoke.
Usos
[modifica]Un o diversos punts a veure | ||
---|---|---|
Abreviacions de les funcions: w: where (on). n: names (noms). v: variables. s: string (cadena). | ||
Variables | ||
Nom | Per defecte | |
tab.oneline |
true |
|
tab.allidx |
false |
Si és true, també mostra els índexs numèrics d'una taula. |
dec |
-1 |
Espais pels decimals:
|
enabled |
true |
Si és false, totes les crides a les funcions següents no fan res. |
nohtml |
false |
Substitueix < per ⪡ i > per ⪢ a les cadenes. |
plaintext |
false |
Elimina el format html. |
Un punt a veure | ||
Funcions | ||
w (where) |
| |
v (...) |
| |
wv (where, ...) |
| |
nv (...) |
| |
wnv (where, ...) |
| |
Diversos punts a veure | ||
Variables | ||
Nom | Per defecte | |
s |
La variable de cadena que conté els valors retornats de les funcions següents. | |
maxlines.num |
100 |
Nombre màxim de línies (en cridar a les funcions següents). |
maxlines.doerror |
true |
Si és veritat i s’arriba a |
counter |
false |
Afegeix un número autoincremental al principi de cada utilització d'una funció. |
Funcions | ||
breakline () |
Afegeix un retorn de línia a | |
wtos (where) |
Igual a | |
vtos (...) |
Igual a | |
wvtos (where, ...) |
Igual a | |
nvtos (...) |
Igual a | |
wnvtos (where, ...) |
Igual a |
Exemples
[modifica]Un punt a veure
[modifica]Seguint el flux
[modifica]local SD = require "Module:SimpleDebug"
return SD.w ("S'ha passat per aquí")
retorna:
S'ha passat per aquí
Nombre de decimals i valor d'una variable
[modifica]local SD = require "Module:SimpleDebug"
SD.dec = 2
return SD.v (1/3)
retorna:
0.33
Nohtml
[modifica]local SD = require "Module:SimpleDebug"
SD.nohtml = true
return SD.v ("<b>bold</b>")
retorna:
"⪡b⪢bold⪡/b⪢"
Plaintext
[modifica]local SD = require "Module:SimpleDebug"
SD.plaintext = true
return SD.v ("<b>bold</b>")
retorna:
"bold"
El valor de diverses variables
[modifica]local SD = require "Module:SimpleDebug"
local a = 12
local b = 'Hola'
return SD.v (a,b)
retorna:
12 • "Hola"
Detecció de variable no assignada
[modifica]local SD = require "Module:SimpleDebug"
local a = true
return SD.v (a,b)
retorna:
true • nil
El valor d'una taula
[modifica]local SD = require "Module:SimpleDebug"
local a = {1, tab='a', 'b'}
return SD.v (a)
retorna: { 1, "b", [tab]="a", }
local SD = require "Module:SimpleDebug"
local a = {{1,2,3},{4,5,6},{7,8,9}}
return SD.v (a)
retorna:
{ [1] = {1, 2, 3, }, [2] = {4, 5, 6, }, [3] = {7, 8, 9, }, }
local SD = require "Module:SimpleDebug"
local a = {{Primer=1,2,3},{4,Segon=5,6},{7,8,9}}
return SD.v (a)
retorna:
{ [1] = {2, 3, [Primer]=1, }, [2] = {4, 6, [Segon]=5, }, [3] = {7, 8, 9, }, }
local SD = require "Module:SimpleDebug"
SD.tab.allidx = true
local a = {{1,2,3},{4,nil,6},{7,8,9}}
return SD.v (a)
retorna:
{ [1]={[1]=1, [2]=2, [3]=3, }, [2]={[1]=4, [3]=6, }, [3]={[1]=7, [2]=8, [3]=9, }, }
Normalment, implementareu aquestes funcions amb funció d'error:
local SD = require "Module:SimpleDebug"
local a = {{1,2,3},{4,5,6},{7,8,9}}
error (SD.v (a))
mostra:
Error de Lua: Mòdul:VostreMòdul:Línia: {
[1] = {1, 2, 3, }, [2] = {4, 5, 6, }, [3] = {7, 8, 9, }, }
El valor d'una taula, tota en multilínia
[modifica]local SD = require "Module:SimpleDebug"
SD.tab.oneline = false
local a = {{Primer=1,2,3},'Enmig',{4,Segon=5,6}}
return SD.v (a)
retorna:
{ [1] = { [1] = 2, [2] = 3, ["Primer"] = 1, }, [2] = "Enmig", [3] = { [1] = 4, [2] = 6, ["Segon"] = 5, }, }
El valor de diverses variables amb seu nom en un punt
[modifica]local SD = require "Module:SimpleDebug"
local a = 12
local b = 'Hola'
return SD.nv ('a',a,'b',b)
retorna:
a: 12 • b: "Hola"
Diversos punts a veure
[modifica]Seguint el flux
[modifica]local SD = require "Module:SimpleDebug"
local tab = {1,12,7}
function p.CheckValues ()
local function LittleNum()
SD.wtos ('número petit')
end
local function BigNum(num)
SD.wtos ('gran='..num)
end
for i, num in ipairs(tab) do
if num > 9 then
BigNum(num)
else
LittleNum()
end
end
error (SD.s)
end
retorna:
Error de Lua: Mòdul:VostreMòdul:Línia:
número petit
gran=12
número petit.
Amb comptador
[modifica]local SD = require "Module:SimpleDebug"
function Increm()
local n = 0
for i = 1, 3 do
n = n + 2
SD.vtos (n)
end
end
SD.counter = true
Increm()
return SD.s
retorna:
1 • 2
2 • 4
3 • 6
Seguiment de diverses variables
[modifica]local SD = require "Module:SimpleDebug"
a = 12
b = 'Hola'
SD.wvtos (1,a,b)
a = a + a
b = b..' món!'
SD.wvtos ('Finalment',a,b)
return SD.s
retorna:
1 => 12 • "Hola"
Finalment => 24 • "Hola món!"
local SD = require "Module:SimpleDebug"
SD.breakline ()
a = 12
b = 'Hola'
c = false
SD.wnvtos (1, 'a',a,'b',b,'c',c)
a = a + a
b = b..' món!'
SD.wnvtos ('Finalment', 'a',a,'b',b)
error (SD.s)
mostra:
Error de Lua: Mòdul:VostreMòdul:Línia:
1 => a: 12 • b: "Hola" • c: false
Finalment => a: 24 • b: "Hola món!"
Variables i la seva presentació amb condicions
[modifica]local SD = require "Module:SimpleDebug"
SD.breakline()
SD.enabled = false
SD.maxlines.num = 3
local a = 'AA'
for i = 1, 10 do
a = a + 'AA'
if i == 3 then
SD.enabled = true
end
SD.wvtos (i, string.len(a), a)
end
mostra:
Error de Lua: Mòdul:VostreMòdul:Línia:
3 => 8 • "AAAAAAAA"
4 => 10 • "AAAAAAAAAA"
5 => 12 • "AAAAAAAAAAAA".