Module:ΑδελφικάΕγχειρήματα

Documentation for this module may be created at Module:ΑδελφικάΕγχειρήματα/τεκμηρίωση

--Module:ΑδελφικάΕγχειρήματα
--Να μπουν σε [[Κατηγορία:Πρότυπα για Βικιεγχειρήματα]]
--η πρώτη παράμετρος (αν υπάρχει) θα είναι η ονομασία της σελίδας εκεί
--η δεύτερη θα είναι η ονομασία που θα παρουσιάζεται στη σελίδα
--πρότυπα που αρχίζουν από προς
--ΒΕ,ΒΘ,ΒΚ,ΒΠ,ΒΦ
--[=[<includeonly>{{#invoke:ΑδελφικάΕγχειρήματα|main}}</includeonly><noinclude>
{{#invoke:ΑδελφικάΕγχειρήματα|main|οδηγίες}}[[Κατηγορία:Πρότυπα για Αδελφικά Εγχειρήματα]]</noinclude>]=]

export = {}
sisterprojects = mw.loadData("Module:ΑδελφικάΕγχειρήματα/δεδομένα")
g = require('Module:γενικέςσυναρτήσεις')

errorhere = function(errstring)
    return '<div class="error">' .. errstring .. '</div>[[Κατηγορία:Σελίδες με σφάλματα στο Module ΑδελφικάΕγχειρήματα]]'
end

export.findproject = function(arg)
    local findwhat = arg
    local dowhat
    if mw.ustring.sub( findwhat, 1, 4 ) == 'προς' then
        findwhat = mw.text.trim(mw.ustring.sub( findwhat, 5 ))
        dowhat = 'προς'
    end
    if mw.ustring.sub( findwhat, 1, 3 ) == 'από' then
        findwhat = mw.text.trim(mw.ustring.sub( findwhat, 4 ))
        dowhat = 'από'
    end
    for key, value in pairs(sisterprojects) do
        if value.i18n.el.abbreviation == findwhat or value.i18n.el.name == findwhat then
            return key, dowhat, value.i18n.el
        end
    end
    return nil, nil
end

export.main = function(frame)
    local protypo = g.getTemplateName(frame) or ''
    local pageobj = mw.title.getCurrentTitle()
    if protypo == '' then return errorhere('Σφάλμα! Η συνάρτηση δεν κληθηκε μέσω προτύπου.') end
    local frargs = frame.args
    if frargs.pagename ~= nil then return errorhere('Σφάλμα! Χρησιμοποιήθηκε παράμετρος "pagename".') end
    local pagename = mw.text.trim(pageobj.text)
    if frargs.project ~= nil then return errorhere('Σφάλμα! Χρησιμοποιήθηκε παράμετρος "project".') end
    local project, dowhat, projectargs = export.findproject(protypo)
    if frargs.project ~= nil then return errorhere('Σφάλμα! Δεν βρέθηκε το όνομα του εγχειρήματος.') end
    table.insert(frargs, project)
    table.insert(frargs, protypo)
    table.insert(frargs, dowhat)
    if frargs['οδηγίες'] ~= nil then
        return instructions(frame, frargs, projectargs)
    end

    if dowhat == 'προς' then
        return tableto(frame,frargs, projectargs)
    elseif dowhat == 'από' then
        return tablefrom(frame,frargs, projectargs)
    else
        return linewithasterisk(frame,frargs, projectargs)
    end
end

--TODO...???
tableto = function(frame,args, projectargs)
	local output = [=[<div class="infobox transwiki" style="background-color: yellow">
'''Αυτή η σελίδα είναι υποψήφια για μεταφορά στη [[w:Κύρια Σελίδα|Βικιπαίδεια]].'''<br />
Το κείμενο αυτό φαίνεται να ταιριάζει σε [[εγκυκλοπαίδεια|εγκυκλοπαιδικό]] άρθρο και όχι σε λήμμα [[λεξικό|λεξικού]]. Το [[Βικιλεξικό]] δεν είναι εγκυκλοπαίδεια, αλλά η Βικιπαίδεια είναι. Επιβεβαιώστε ότι είναι κατάλληλο για εκεί και μεταφέρετέ το. Αν το κείμενο μπορεί να υποστεί αλλαγές ώστε να γίνει λήμμα λεξικού, κάντε το και αφαιρέστε αυτή την ένδειξη.
</div><includeonly>[[Κατηγορία:Λήμματα υποψήφια για μεταφορά στη Βικιπαίδεια|{{PAGENAME}}]]</includeonly>]=]
    return frame:preprocess( output )
end

--TODO...???
tablefrom = function(frame,args, projectargs)
	local output = [=[<div class="infobox transwiki" style="background-color: yellow">
'''Αυτή η σελίδα είναι υποψήφια για μεταφορά στη [[w:Κύρια Σελίδα|Βικιπαίδεια]].'''<br />
Το κείμενο αυτό φαίνεται να ταιριάζει σε [[εγκυκλοπαίδεια|εγκυκλοπαιδικό]] άρθρο και όχι σε λήμμα [[λεξικό|λεξικού]]. Το [[Βικιλεξικό]] δεν είναι εγκυκλοπαίδεια, αλλά η Βικιπαίδεια είναι. Επιβεβαιώστε ότι είναι κατάλληλο για εκεί και μεταφέρετέ το. Αν το κείμενο μπορεί να υποστεί αλλαγές ώστε να γίνει λήμμα λεξικού, κάντε το και αφαιρέστε αυτή την ένδειξη.
</div><includeonly>[[Κατηγορία:Λήμματα υποψήφια για μεταφορά στη Βικιπαίδεια|{{PAGENAME}}]]</includeonly>]=]
    return frame:preprocess( output )
end

linewithasterisk = function(frame,args, projectargs)
	local output
	local linkedarticle = args[1] or ''
	local linkedshow = args[2] or ''
	if linkedarticle == '' then
	    linkedarticle = args[pagename]
    end
	if linkedshow == '' then
	    --Αν έχει δώσει άλλο τίτλο τότε δείξτον για να είναι εμφανής η διαφορά;
	    if args[pagename] ~= linkedarticle then
	        linkedshow = linkedarticle
        end
    end
	output = '* [[' .. sisterprojects[args[project]][common][iwPrefix] .. ':'
	if args[pagename] == linkedarticle and linkedarticle == linkedshow then
	    output = output .. args[pagename] .. ']]'
	else
	    output = output .. linkedarticle .. '|' .. linkedshow .. ']]'
	end
	output = output .. sisterprojects[args[project]][i18n][el][where]
	
	return frame:preprocess( output )   
end

instructions = function (frame,args, projectargs)
    local output
    local st = 'σ' .. projectargs.where
    if dowhat == 'προς' then
        output = ''
    elseif dowhat == 'από' then
        output = ''
    else
        local output = [=[<br clear="all">
== Επεξηγηματική σημείωση ==
Το πρότυπο <nowiki>{{<nowiki>[[:Πρότυπο:]=] .. args.protypo .. [=[]]}} είναι ένα στοιχείο απαρίθμησης που κατευθύνει προς μια σελίδα ]=] .. st .. [=[.
Συμπεριλαμβάνει τον αστερίσκο. Το βάζουμε συνήθως κάτω από το πρότυπο <nowiki>{{<nowiki>[[:Πρότυπο:βλέπε]]}}.

{| align=left style="border:1px" cellpadding=5
!colspan="2"| Παράμετροι
|-
| <tt>1</tt> || ''Προαιρετικό.'' Ο τίτλος της σελίδας όπως υπάρχει ]=] .. st .. [=[. Συνήθως είναι ο ίδιος με τον τίτλο της σελίδας του Βικιλεξικού.
|-
| <tt>2</tt> || ''Προαιρετικό.'' Ο τίτλος που θα εμφανίζεται εδώ. Κανονικά, είναι ο τίτλος της σελίδας εκεί.
|}
]=]
    end	
	return frame:preprocess( output )

end

export.test = function(arg) --ex. απόΒΠ
    local protypo = arg
    --local pageobj = mw.title.getCurrentTitle()
    if protypo == '' then return errorhere('Σφάλμα! Η συνάρτηση δεν κληθηκε μέσω προτύπου.') end
    local frargs = {}
    --if frargs.pagename ~= nil then return errorhere('Σφάλμα! Χρησιμοποιήθηκε παράμετρος "pagename".') end
    --local pagename = mw.text.trim(pageobj.text)
    --if frargs.project ~= nil then return errorhere('Σφάλμα! Χρησιμοποιήθηκε παράμετρος "project".') end
	local project, dowhat = export.findproject(protypo)
	return project, dowhat

	
end
return export