Helpo:Lua/Ligiloj

El Vikipedio, la libera enciklopedio
Logo de la Lua-lingvo Lua

VP:LUA

Kategorioj
Ŝablonoj
  • {{LuaModuleDoc}} por la dokumentado de modulo, por aranĝi la keston kun ligiloj
  • {{Modula statuso}} por la dokumentadoj de modulo, por indiki la evoluan statuson de modulo
  • {{Kun Lua-modulo}} por la dokumentado de ŝablono, kiu uzas Lua-modulon aŭ eĉ entute baziĝas sur modulo
  • {{Uzanto Projekto/Lua}} por uzantopaĝoj
Vidu ankaŭ
Komentoj
  1. (per {{Kun Lua-modulo}})
  2. (per {{LuaModuleDoc}})
vdr

Ĉi tiu helpopaĝo eksponas por Lua-programistoj la subtenon ĉe interretaj kaj vikiaj ligiloj per Scribunto-normaj bibliotekoj.

Tio estas

  • mw.title por vikiaj ligiloj kaj analizo de paĝoj
  • mw.uri por sintakse ĝusta URL
Scribunto (angle)

La title-objekto reprezentas paĝan nomon, sed antaŭ ĉio la ecojn de la koncerna Vikia paĝo.

Estas je dispono multe da informoj pri la aktuala (plej supra) paĝo kaj ankaŭ ĉiu alia en la projekto: titolo, nomspaco, ekzisto, ĝis la enhavo.

mw.title.getCurrentTitle()
title-Objekt por la aktuala (plej supra) paĝo.
mw.title.makeTitle( namespace, title, fragment, interwiki )
title-Objekt por la specifikigita paĝo.
namespace povas esti ĉio, kio sub mw.site.namespaces eblas.[1]
title estas nature deviga aldono.
Postmetita fragmento kaj Intervikia prefiksa grupo (lingvo, projekto) estas nedevigaj.
Ĉi tiu funkcio estas „multekosta“.[2]
mw.title.new( text, namespace )
mw.title.new( id )
Kreas novan title-objekton.
Se la unua argumento estas de la tipo number kaj per tio estas generata laŭ la idcurid, tiam la redona valoro nil, se tia paĝo ne ekzistas.
Ĉi tiu funkcio estas „multekosta“,[2] se ne temas pri la aktuala paĝo en la senco de .getCurrentTitle() kaj ĉi tiu paĝo ankaŭ ne jam estis ŝarĝita .
Se la unua argumento estas de la tipo string kaj per tio 'text transdonita, tiam ĉe valida valoro ankaŭ tiam estas redonata objekto, eĉ se ĉi tiu paĝo ne ekzistas.
  • Se en text enestas neniu nomspaco, tiam namespace estas uzata. namespace povas est ĉio, kio sub mw.site.namespaces eblas.[1]
  • Se text ne estas sintakse valida paĝonomo, tiam la redona valoro estas nil.
mw.title.equals ( a, b )
true – se ambaŭ title-objektoj reprezentas la saman paĝon.
Fragmentoj estas ignorataj dum la komparado.
mw.title.compare( a, b )
Redonaj valoroj estas -1, 0, aŭ 1, por montri, ĉu title-objekto a estas pli malgranda, sama aŭ pli granda ol title-objekto b.

title-Objekt[redakti | redakti fonton]

La plej multaj ecoj estas nur legeblaj, se ne estas skribite alie (fragment).

.id
curid0, se la paĝo ne ekzistas.
.interwiki
Intervikia prefiksa grupo (lingvo, projekto), aŭ "".
.namespace
Nomspaca numero.
.fragment
La fragment, aŭ "".
Povas esti difinata.
.nsText
La kanona nomo de la nomspaco
.subjectNsText
Nomspaca nomo de la enhava paĝo (kontraŭo al diskutopaĝo)
.text
Paĝotitolo, sen nomspaco kaj intervikia prefikso
.prefixedText
Paĝotitolo, kun nomspaco kaj intervikia prefikso
.fullText
Paĝotitolo, kun nomspaco kaj intervikia prefikso kaj fragmento.
.rootText
Sur subpaĝo la titolo de la plej supre baza paĝo; alikaze .text.
.baseText
Sur subpaĝo la titolo de la senpere sperordigita baza paĝo; alikaze .text.
.subpageText
Sur subpaĝo la titolo de la lasta nomelemento; alikaze .text.
.canTalk
true – ĉi tiu paĝo povas havi diskutopaĝon (NR≥0).
.exists
true – se ĉi tiu paĝo ekzistas.
Ĉe dosieroj kaj Media: estas tio aliaso por .fileExists kaj estas konforme taksata.
Alikaze tio ne denove eniras en la nombradon de „multekostaj“[2] funkcioj.
Ĉe la kreo per .getCurrentTitle() la paĝo ĉiam ekzistas (escepte se, ĝi ĵus nur estas kreata per la konservado); ĉe mw.title.makeTitle() tio estas nur esplorata.
.fileExists
true – se ĉi tiu media dosiero vere ekzistas.
Tio estas duoble multekosta,[2] ĉar ankaŭ sur Komunejo povus esti serĉata.
.isContentPage
true – se ĝi estas enhava nomspaco (NR≥0 kaj para).
.isExternal
true – se ĝi ekzistas intervikia prefikso.
.isLocal
true – se ĝi estas projekto de la sama speco.
Por la esperanta Vikipedio ĉiu Vikipedio estas „loka“, Vikivortaro kaj Meta estas tiaj.
Kun loka projekto povas esti ligata per Interlanguage.
.isRedirect
true – se ĉi tiu paĝo estas konservita kiel alidirektilo.
.isSpecialPage
true – se ĉi tiu paĝo povas esti speciala paĝo (se ĝi troviĝas en la nomspaco Specialaĵo: kaj ĝi estas valida aliaso)
.isSubpage
true – se tio estas subpaĝo de alia.
.isTalkPage
true – se tio estas diskutopaĝo.
:isSubpageOf( title2 )
true – se tio estas sbupaĝo de title2.
:inNamespace( ns )
true – se tio troviĝas en la donita nomspaco. ns povas esti ĉio, kio sub mw.site.namespaces eblas.[1]
:inNamespaces( ns1, ns2, ... )
kiel antaŭe, sed en iu ajn ns1, ns2, …
.hasSubjectNamespace( ns )
true – se ĉi tiu paĝo mem aŭ ĝia diskutopaĝo troviĝas en la enhavonomspaco ns.
ns povas esi ĉio, kio sub mw.site.namespaces eblas.[1]
.contentModel
„Content Model“ por ĉi tiu paĝo, kiel signoĉeno: css, javascript, Scribunto (Modul), wikitext.
.basePageTitle
Samefika al mw.title.makeTitle( title.namespace, title.baseText )
.rootPageTitle
Samefika al mw.title.makeTitle( title.namespace, title.rootText )
.talkPageTitle
Samefika al mw.title.makeTitle( mw.site.namespaces[title.namespace].talk.id, title.text )
nil se ne povas ekzisti al ĉi tiu title diskutopaĝo.
.subjectPageTitle
Samefika al mw.title.makeTitle( mw.site.namespaces[title.namespace].subject.id, title.text )
:subPageTitle( text )
Samefika al mw.title.makeTitle( title.namespace, title.text .. "/" .. text )
:partialUrl()
.text kun la URL-enkodigo kiel en URL.
:fullUrl( query, proto )
Kompleta URL al ĉi tiu paĝo.
La nedeviga query indikas pliajn URL-parametrojn kaj povas esti table k=v aŭ signoĉeno.
proto povas ricevi unu el la sekvaj valoroj:
  • "relative" (defaŭlto de la nedeviga valoro)
  • "http"
  • "https"
  • "canonical"
.localUrl( query )
URL relativa al projekta domejno
La nedevia query kiel .fullUrl()
:canonicalUrl( query )
Kanona URL (normigita formato)
La nedeviga query kiel .fullUrl()
:getContent()
Neŝanĝita Vikia fontoteksto de la paĝo.
nil se la paĝo ne ekzistas.

Per relacionalaj operatoroj povas esti komparataj title-objektoj.

Scribunto (angle)

Ĉi tiuj metodoj estas tre taŭgaj por la sintezo de URL kaj por la analizo de formale ĝustaj URL.

Ĉe nekonataj en la Vikiteksto trovitaj signoĉenoj, kiuj estu URL, estas rekomendate antaŭe fari atenteman analizon je formala akcepteblo per URLutil.

mw.uri.encode( s, enctype )
Enkodigo de la signoĉeno s (procento).
La nedeviga enctype (defaŭlto: "QUERY") povas havi sekvajn valorojn:
  • "QUERY" – spacosigno kiel + por query-komponantoj.
  • "PATH" – spacosigno kiel %20
  • "WIKI" – spacosigno kiel _ (tio ne estas komplete inversigebla, ĉar ankaŭ ekzistantaj _ fariĝas nedistingeblaj)
mw.uri.decode( s, enctype )
Procenta dekodigo de s
La ndedviga enctype (defaŭlto: "QUERY") povas havi sekvajn valorojn:
  • "QUERY" – anstaŭigu + per spacosignoj
  • "PATH" – neniu aparta traktado de potencialaj spacosignoj.
  • "WIKI" – anstataŭigu _ per spacosignoj
mw.uri.anchorEncode( s )
Enkodigo de s, teil ke tiu povas esti uzata kiel fragmento en Vikia URL (Punkto anstataŭ procento).
mw.uri.buildQueryString( table )
Konvertu la enhavon de table en sekvon de valorizo k=v kaj ligu per & al signoĉeno.
La k en table estu signoĉenoj.
La v en table povas esti: string, number, sequence table por multfoja apero, false por „malplena“.
mw.uri.parseQueryString( s )
Konvert signoĉenon s en table kaj solvu &k=v en elementjn de la table.
  • Malplenaj valorizoj &k= ricevas la valoron false.
  • Ripetaj valorizoj kun la sama k estas aranĝataj kiel sequence table.
  • Ĉiu aliaj v fariĝas signoĉenoj.
mw.uri.fullUrl( page, query )
uri-Objekto por la kompleta URL (sed sen protokolo) de Vikia paĝo page.
  • Nedevige kun query kiel preta signoĉeno aŭ table.
mw.uri.localUrl( page, query )
uri-Objekto por loka URL (rilata al la domejno) de Vikia paĝo page.
  • Nedevige kun query kiel preta signoĉeno aŭ table.
mw.uri.canonicalUrl( page, query )
uri-Objekto por kanona URL (kun la aktuala protokolo) de Vikia paĝo page.
  • Nedevige kun query kiel preta signoĉeno aŭ table.
mw.uri.new( s )
mw.uri.new( table )
uri-Objekt formas per parsado signoĉenon s aŭ plenigon de la kampoj en table.
mw.uri.validate( s )
mw.uri.validate( table )
Kontrolu la uzeblon de signoĉeno s aŭ de la kampoj en table por mw.uri.new().
boolean por uzeblo, alie signoĉeno kun erarmesaĝo.

uri-Objekt[redakti | redakti fonton]

Kampoj, el kiuj kelkaj aŭ ĉiuj povas esti nil:

.protocol
(string) protocol/scheme
.user
(string) user
.password
(string) password
.host
(string) host name
.port
(number) port
.path
(string) path
.query
(table) kiel el mw.uri.parseQueryString
.fragment
(string) fragment.

Krome ekzistas la sekvaj ecoj:

.userInfo
(string) user and password
.hostPort
(string) host and port
.authority
(string) user, password, host, and port
.queryString
(string) version of the query table
.relativePath
(string) path, query string, and fragment
  • tostring() redonas la tekston de la URI.

Metodoj estas la jenaj:

:parse( s )
Valoroj el la signoĉeno s enmei en la objekton.
Ekzistantaj valoroj, kiuj ne aperas en s, konserviĝas.
:clone()
Kopio de la objekto
:extend( parameters )
parameters estas table, kies valoreoj estas aldonataj al la ekzistantraj en la Query-komponanto aŭ superskribas ilin.

Uzekzemplo[redakti | redakti fonton]

La sekva funkcio provas redoni ligilon al la versia historio, ĉe kio la paĝo estas difinita per la paĝoidentigilo curid. Programaderaroj kaj nevalidaj numeraj valoroj estas ekkonataj. Ambaŭ sur ĉi tiu paĝo prezentitaj bibliotekoj/objektoj estas uzataj.

function versionen( curid )
    local r
    if type( curid ) == "number" and curid > 0 then
        local page = mw.title.new( curid )
        if page then
            local uri = mw.uri.fullUrl( page.prefixedText, "action=history" )
            r = string.format( "[%s versioj]", tostring( uri ) )
        else
            r = string.format( "Paĝo %d mankas", curid )
        end
    else
        r = "*BAD curid*"
    end
    return r
end
  1. 1,0 1,1 1,2 1,3 Nomspaca numero .id aŭ unu el la nomoj; nuntempe tamen ne la table mem.
  2. 2,0 2,1 2,2 2,3 Maksimume 500 informmendoj po kompleta paĝo.