Gwint Wiki
Nie podano opisu zmian
Nie podano opisu zmian
(Nie pokazano 23 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 4: Linia 4:
   
 
local data = mw.loadData('Module:Karty')
 
local data = mw.loadData('Module:Karty')
  +
local keywords = mw.loadData('Module:Definicje')
   
 
local p = {}
 
local p = {}
Linia 19: Linia 20:
 
 
 
if not card then
 
if not card then
return 'Nie znaleziono karty "'..title..'".'
+
return 'Karta '..title..' nie jest dostępna w obecnej wersji gry.'
 
end
 
end
 
 
Linia 25: Linia 26:
 
local art = p._encode(title..'_Art.jpg')
 
local art = p._encode(title..'_Art.jpg')
 
local premium = p._encode(title..'_Premium.gif')
 
local premium = p._encode(title..'_Premium.gif')
  +
  +
local faction_img = '[[File:Infobox '..card.frakcja[1]..'.png|x48px|link='..card.frakcja[1]..']]'
  +
if card.frakcja[2] then
  +
faction_img = faction_img..'[[File:Infobox '..card.frakcja[2]..'.png|x48px|link='..card.frakcja[2]..']]'
  +
end
   
 
local infobox = mw.html.create('infobox'):attr('type', 'card')
 
local infobox = mw.html.create('infobox'):attr('type', 'card')
  +
 
  +
local image_panel = mw.html.create('panel')
  +
  +
if card.kolor == 'Umiejętność' then
  +
image_panel
 
:tag('section')
 
:tag('label'):wikitext('Obraz'):done()
 
:tag('image')
 
:tag('default'):wikitext(image)
 
:done()
 
:done()
 
:done()
 
:done()
 
:tag('section')
 
:tag('label'):wikitext('Dodaj'):done()
 
:tag('group'):attr('name', 'upload')
 
:node(p._data(p._t(mw.title.new('File:'..image).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..image..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz karty]</span>')))
 
:done()
 
:done()
  +
else
  +
image_panel
 
:tag('section')
 
:tag('label'):wikitext('Karta'):done()
 
:tag('image')
 
:tag('default'):wikitext(image):done()
 
:done()
 
:done()
  +
:tag('section')
 
:tag('label'):wikitext('Obraz'):done()
 
:tag('image'):attr('name', 'art')
 
:tag('default'):wikitext(art):done()
 
:done()
  +
:done()
  +
:tag('section')
 
:tag('label'):wikitext('Premium'):done()
  +
:tag('image'):attr('name', 'premium')
  +
:tag('default'):wikitext(premium):done()
  +
:done()
  +
:done()
  +
:tag('section')
  +
:tag('label'):wikitext('Dodaj'):done()
  +
:tag('group'):attr('name', 'upload')
 
:node(p._data(p._t(mw.title.new('File:'..image).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..image..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz karty]</span>')))
 
:node(p._data(p._t(mw.title.new('File:'..art).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..art..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij ilustrację karty]</span>')))
  +
:node(p._data(p._t(mw.title.new('File:'..premium).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..premium..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz wersji premium]</span>')))
  +
:done()
  +
:done()
  +
end
  +
 
infobox
 
infobox
 
:tag('title')
 
:tag('title')
Linia 34: Linia 88:
 
:tag('group'):attr('name', 'content')
 
:tag('group'):attr('name', 'content')
 
:tag('group'):attr('name', 'image')
 
:tag('group'):attr('name', 'image')
:tag('panel')
+
:node(image_panel)
:tag('section')
 
:tag('label'):wikitext('Karta'):done()
 
:tag('image')
 
:tag('default'):wikitext(image):done()
 
:done()
 
:done()
 
:tag('section')
 
:tag('label'):wikitext('Obraz'):done()
 
:tag('image'):attr('name', 'art')
 
:tag('default'):wikitext(art):done()
 
:done()
 
:done()
 
:tag('section')
 
:tag('label'):wikitext('Premium'):done()
 
:tag('image'):attr('name', 'premium')
 
:tag('default'):wikitext(premium):done()
 
:done()
 
:done()
 
:tag('section')
 
:tag('label'):wikitext('Dodaj'):done()
 
:tag('group'):attr('name', 'upload')
 
:node(p._data(p._t(mw.title.new('File:'..image).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..image..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz karty]</span>')))
 
:node(p._data(p._t(mw.title.new('File:'..art).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..art..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij ilustrację karty]</span>')))
 
:node(p._data(p._t(mw.title.new('File:'..premium).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..premium..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz wersji premium]</span>')))
 
:done()
 
:done()
 
:done()
 
 
:done()
 
:done()
 
:tag('group')
 
:tag('group')
Linia 70: Linia 97:
 
:tag('group')
 
:tag('group')
 
:tag('group'):attr('row-items', '3')
 
:tag('group'):attr('row-items', '3')
:node(p._data('[[File:'..card.frakcja..'.png|x48px|link='..card.frakcja..']]', 'Frakcja'))
+
:node(p._data(faction_img, 'Frakcja'))
 
:node(p._data(p._imgNumbers(card.sila), 'Siła'))
 
:node(p._data(p._imgNumbers(card.sila), 'Siła'))
 
:node(p._data(p._imgNumbers(card.werbunek), 'Werbunek'))
 
:node(p._data(p._imgNumbers(card.werbunek), 'Werbunek'))
Linia 79: Linia 106:
 
:node(p._data('[[:Kategoria:'..card.zestaw..'|'..card.zestaw..']]', 'Zestaw Kart'))
 
:node(p._data('[[:Kategoria:'..card.zestaw..'|'..card.zestaw..']]', 'Zestaw Kart'))
 
:node(p._data(p._concat(card.kategorie, '[[:Kategoria:$1|$1]]'), 'Kategorie'))
 
:node(p._data(p._concat(card.kategorie, '[[:Kategoria:$1|$1]]'), 'Kategorie'))
:node(p._data(p._concat(card.powiazane, '[[$1]]', ', <br/>'), 'Powiązane'))
+
:node(p._data(p._concat(card.powiazane, '{{k|$1}}', ', <br/>'), 'Powiązane'))
 
:node(p._data(card.artysta and p._concat(u.split(card.artysta, ','), '[[$1]]') or 'Nieznany', 'Artysta'))
 
:node(p._data(card.artysta and p._concat(u.split(card.artysta, ','), '[[$1]]') or 'Nieznany', 'Artysta'))
 
:done()
 
:done()
Linia 94: Linia 121:
 
:tag('section')
 
:tag('section')
 
:tag('label'):wikitext('Cytat'):done()
 
:tag('label'):wikitext('Cytat'):done()
:node(p._data(card.cytat, nil, 'quote'))
+
:node(p._data('\'\''..card.cytat..'\'\'', nil))
 
:done()
 
:done()
 
:done()
 
:done()
Linia 118: Linia 145:
 
if content then d:tag('default'):wikitext(content) end
 
if content then d:tag('default'):wikitext(content) end
 
return d
 
return d
  +
end
  +
  +
function p.tooltip(frame)
  +
return p._tooltip(getArgs(frame))
  +
end
  +
  +
function p._tooltip(args)
  +
if args[1] and data[args[1]] then
  +
local card = data[args[1]]
  +
local wrapper = mw.html.create('div')
  +
wrapper
  +
:addClass('card-tooltip-box')
  +
:tag('div')
  +
:addClass('card-tooltip-box-image')
  +
:wikitext('[[File:'..p._encode(args[1]..'.png')..'|200px|link=|alt=Obraz]]')
  +
:done()
  +
:tag('div')
  +
:addClass('card-tooltip-box-name')
  +
:addClass('border-'..card.kolor)
  +
:wikitext('[[Plik:Infobox '..card.frakcja[1]..'.png|20px|link=]] '..u.trim(string.match(args[1], '^[^(]+')))
  +
:done()
  +
:tag('div')
  +
:addClass('card-tooltip-box-ability')
  +
:addClass('border-'..card.kolor)
  +
:wikitext(card.umiejetnosc)
  +
:done()
  +
:done()
  +
return wrapper
  +
else
  +
return nil
  +
end
  +
end
  +
  +
function p.keyword(frame)
  +
return p._keyword(getArgs(frame))
  +
end
  +
  +
function p._keyword(args)
  +
if keywords[args[1]] then
  +
return tostring(keywords[args[1]]:gsub('^([^:]+:)', '\'\'\'%1\'\'\''))
  +
else
  +
return ''
  +
end
  +
end
  +
  +
function p.encode(frame)
  +
return tostring(p._encode(getArgs(frame)[1]))
 
end
 
end
   
Linia 147: Linia 221:
 
function p._categorize(card)
 
function p._categorize(card)
 
local out = '[[Kategoria:Karty]]'
 
local out = '[[Kategoria:Karty]]'
out = out..'[[Kategoria:'..card.frakcja..']]'
 
 
out = out..'[[Kategoria:'..card.kolor..']]'
 
out = out..'[[Kategoria:'..card.kolor..']]'
 
out = out..'[[Kategoria:'..card.rzadkosc..']]'
 
out = out..'[[Kategoria:'..card.rzadkosc..']]'
 
out = out..'[[Kategoria:'..card.rodzaj..']]'
 
out = out..'[[Kategoria:'..card.rodzaj..']]'
 
out = out..'[[Kategoria:'..card.zestaw..']]'
 
out = out..'[[Kategoria:'..card.zestaw..']]'
  +
for _, v in ipairs(card.frakcja) do
 
out = out..'[[Kategoria:'..v..']]'
  +
end
 
for _, v in ipairs(card.kategorie) do
 
for _, v in ipairs(card.kategorie) do
  +
out = out..'[[Kategoria:'..v..']]'
  +
end
  +
for _, v in ipairs(u.split(card.artysta or '', ',')) do
 
out = out..'[[Kategoria:'..v..']]'
 
out = out..'[[Kategoria:'..v..']]'
 
end
 
end

Wersja z 16:24, 3 paź 2019

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Karta/opis

local getArgs = require('Dev:Arguments').getArgs

local u = require('Module:Utils')

local data = mw.loadData('Module:Karty')
local keywords = mw.loadData('Module:Definicje')

local p = {}

function p.infobox(frame)
    return p._infobox(getArgs(frame))
end

function p._infobox(args)
    local title = args[1] or mw.title.getCurrentTitle().text
    local i_title = u.trim(string.match(title, '^[^(]+'))
    local p_title = title:gsub('%([^%)]+%)', '<small>%0</small>')
    
    local card = data[title]
    
    if not card then
        return 'Karta '..title..' nie jest dostępna w obecnej wersji gry.'
    end
    
    local image = p._encode(title..'.png')
    local art = p._encode(title..'_Art.jpg')
    local premium = p._encode(title..'_Premium.gif')
    
    local faction_img = '[[File:Infobox '..card.frakcja[1]..'.png|x48px|link='..card.frakcja[1]..']]'
    if card.frakcja[2] then
        faction_img = faction_img..'[[File:Infobox '..card.frakcja[2]..'.png|x48px|link='..card.frakcja[2]..']]'
    end

    local infobox = mw.html.create('infobox'):attr('type', 'card')
    
    local image_panel = mw.html.create('panel')
    
    if card.kolor == 'Umiejętność' then
        image_panel
            :tag('section')
                :tag('label'):wikitext('Obraz'):done()
                    :tag('image')
                        :tag('default'):wikitext(image)
                        :done()
                    :done()
                :done()
            :done()
            :tag('section')
                :tag('label'):wikitext('Dodaj'):done()
                :tag('group'):attr('name', 'upload')
                    :node(p._data(p._t(mw.title.new('File:'..image).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..image..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz karty]</span>')))
                :done()
            :done()
    else
        image_panel
            :tag('section')
                :tag('label'):wikitext('Karta'):done()
                :tag('image')
                    :tag('default'):wikitext(image):done()
                :done()
            :done()
            :tag('section')
                :tag('label'):wikitext('Obraz'):done()
                :tag('image'):attr('name', 'art')
                    :tag('default'):wikitext(art):done()
                :done()
            :done()
            :tag('section')
                :tag('label'):wikitext('Premium'):done()
                :tag('image'):attr('name', 'premium')
                    :tag('default'):wikitext(premium):done()
                :done()
            :done()
            :tag('section')
                :tag('label'):wikitext('Dodaj'):done()
                :tag('group'):attr('name', 'upload')
                    :node(p._data(p._t(mw.title.new('File:'..image).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..image..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz karty]</span>')))
                    :node(p._data(p._t(mw.title.new('File:'..art).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..art..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij ilustrację karty]</span>')))
                    :node(p._data(p._t(mw.title.new('File:'..premium).fileExists, nil, '<span class="plainlinks">[{{fullurl:Special:Upload|wpDestFile='..premium..'&wpLicense=cdred&wpIgnoreWarning=1&wpGwentUploadAuto=1}} Prześlij obraz wersji premium]</span>')))
                :done()
            :done()
    end
    
    infobox
        :tag('title')
            :tag('default'):wikitext(i_title):done()
        :done()
        :tag('group'):attr('name', 'content')
            :tag('group'):attr('name', 'image')
                :node(image_panel)
            :done()
            :tag('group')
            :attr('name', 'data')
                :tag('panel')
                    :tag('section')
                        :tag('label'):wikitext('Informacje'):done()
                        :tag('group')
                            :tag('group'):attr('row-items', '3')
                                :node(p._data(faction_img, 'Frakcja'))
                                :node(p._data(p._imgNumbers(card.sila), 'Siła'))
                                :node(p._data(p._imgNumbers(card.werbunek), 'Werbunek'))
                            :done()
                            :node(p._data('[[:Kategoria:'..card.kolor..'|'..card.kolor..']]', 'Kolor'))
                            :node(p._data('[[:Kategoria:'..card.rzadkosc..'|'..card.rzadkosc..']]', 'Rzadkość'))
                            :node(p._data('[[:Kategoria:'..card.rodzaj..'|'..card.rodzaj..']]', 'Rodzaj'))
                            :node(p._data('[[:Kategoria:'..card.zestaw..'|'..card.zestaw..']]', 'Zestaw Kart'))
                            :node(p._data(p._concat(card.kategorie, '[[:Kategoria:$1|$1]]'), 'Kategorie'))
                            :node(p._data(p._concat(card.powiazane, '{{k|$1}}', ', <br/>'), 'Powiązane'))
                            :node(p._data(card.artysta and p._concat(u.split(card.artysta, ','), '[[$1]]') or 'Nieznany', 'Artysta'))
                        :done()
                    :done()
                :done()
            :done()
        :done()
        :tag('group'):attr('name', 'footer')
            :tag('panel')
                :tag('section')
                    :tag('label'):wikitext('Umiejętność'):done()
                    :node(p._data(card.umiejetnosc))
                :done()
                :tag('section')
                    :tag('label'):wikitext('Cytat'):done()
                    :node(p._data('\'\''..card.cytat..'\'\'', nil))
                :done()
            :done()
        :done()
    
    local markup = tostring(infobox)
    
    if mw.title.getCurrentTitle().isContentPage then
        markup = markup..p._categorize(card)
        markup = markup..'[[en:'..card.interlang..']]'
        if i_title ~= p_title and title == mw.title.getCurrentTitle().text then
            markup = markup..'{{DISPLAYTITLE:'..p_title..'}}'
        end
    end

    return mw.getCurrentFrame():preprocess(markup)
end

function p._data(content, label, name)
    local d = mw.html.create('data')
    if name then d:attr('name', name) end
    if label then d:tag('label'):wikitext(label) end
    if content then d:tag('default'):wikitext(content) end
    return d
end

function p.tooltip(frame)
    return p._tooltip(getArgs(frame))
end

function p._tooltip(args)
    if args[1] and data[args[1]] then
        local card = data[args[1]]
        local wrapper = mw.html.create('div')
        wrapper
            :addClass('card-tooltip-box')
            :tag('div')
                :addClass('card-tooltip-box-image')
                :wikitext('[[File:'..p._encode(args[1]..'.png')..'|200px|link=|alt=Obraz]]')
            :done()
            :tag('div')
                :addClass('card-tooltip-box-name')
                :addClass('border-'..card.kolor)
                :wikitext('[[Plik:Infobox '..card.frakcja[1]..'.png|20px|link=]] '..u.trim(string.match(args[1], '^[^(]+')))
            :done()
            :tag('div')
                :addClass('card-tooltip-box-ability')
                :addClass('border-'..card.kolor)
                :wikitext(card.umiejetnosc)
            :done()
        :done()
        return wrapper
    else
        return nil
    end
end

function p.keyword(frame)
    return p._keyword(getArgs(frame))
end

function p._keyword(args)
    if keywords[args[1]] then
        return tostring(keywords[args[1]]:gsub('^([^:]+:)', '\'\'\'%1\'\'\''))
    else
        return ''
    end
end

function p.encode(frame)
    return tostring(p._encode(getArgs(frame)[1]))
end

function p._encode(file)
    return file:gsub(':', ''):gsub(' ', '_')
end

function p._concat(t, f, s)
    local out = ''
    for i, v in ipairs(t) do
        if f then
            out = out .. f:gsub('$1', v)
        else
            out = out .. v
        end
        if t[i + 1] then out = out .. (s or ', ') end
    end
    return out
end

function p._imgNumbers(number)
    local out = ''
    for i = 1, string.len(number) do
        out = out..'[[File:Infobox '..string.sub(number, i, i)..'.png|x32px|link=]]'
    end
    return out
end

function p._categorize(card)
    local out = '[[Kategoria:Karty]]'
    out = out..'[[Kategoria:'..card.kolor..']]'
    out = out..'[[Kategoria:'..card.rzadkosc..']]'
    out = out..'[[Kategoria:'..card.rodzaj..']]'
    out = out..'[[Kategoria:'..card.zestaw..']]'
    for _, v in ipairs(card.frakcja) do
        out = out..'[[Kategoria:'..v..']]'
    end
    for _, v in ipairs(card.kategorie) do
        out = out..'[[Kategoria:'..v..']]'
    end
    for _, v in ipairs(u.split(card.artysta or '', ',')) do
        out = out..'[[Kategoria:'..v..']]'
    end
    return out
end

function p._t(s, t, f)
    if s then return t else return f end
end

return p