Module:Χρήστης:Xoristzatziki:εργαλεία
Documentation for this module may be created at Module:Χρήστης:Xoristzatziki:εργαλεία/τεκμηρίωση
--Module:Χρήστης:Xoristzatziki:εργαλεία
local export = {}
--αντιγραφή από το w:Module:Redirect
-- Gets a mw.title object, using pcall to avoid generating script errors if we
-- are over the expensive function count limit (among other possible causes).
local function _getTitle(...)
local success, titleObj = pcall(mw.title.new, ...)
if success then
return titleObj
else
return nil
end
end
function export.getTargetFromText(text)
return string.match(
text,
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]]-)%]%]"
) or mw.ustring.match(
text,
"#[Αα][Νν][Αα][Κκ][Αα][Ττ][Εε][Υυ][Θθ][Υυ][Νν][Σσ][Ηη]%s*:?%s*%[%[%s*:?%s*(.-)[#%]]"
)
end
--Χρειάζεται ή υπάρχει το title.redirectiontextkati;
--Μπορούμε να ελέγχουμε αν η ανακατεύθυνση οδηγεί σε άλλη καλώντας ξανά τη συνάρτηση μέχρι να επιστρέψει nil
--Δεν δέχεται για όρισμα αντικείμενο mw.title
--Ο καλών ας μετατρέπει το αντικείμενο σε τίτλο.
function export.getTargetofPage(page)
local titleObj
if type(page) == 'string' or type(page) == 'number' then
titleObj = _getTitle(page)
else
error(string.format(
"σφάλμα παραμέτρου #1 στο 'getTargetofPage'"
.. " (περιμένει αλφαριθμητικό, αλλά πήρε %s)",
type(page)
), 2)
end
if not titleObj or not titleObj.isRedirect then
return nil
end
--η σελίδα περιέχει ανακατεύθυνση
local pagecontent = titleObj:getContent()
local target = export.getTargetFromText(pagecontent)
if target then
local targetTitle = _getTitle(target)
if targetTitle then
return targetTitle.prefixedText
--return targetTitle:getContent()
else
return nil
end
else
-- The page is a redirect, but matching failed. This indicates a bug in
-- the redirect matching pattern, so throw an error.
error(string.format(
'δεν μπόρεσα να αντιστοιχήσω την ανακατεύθυνση "%s"',
titleObj.prefixedText
))
end
end
--βρες το όνομα του Προτύπου που κάλεσε το Module
--αλλά μόνο αν κληθηκε από σελλίδα που κάλεσε το πρότυπο
function export.getTemplateName(frame)
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
local templateobj = mw.title.new(frame:getParent():getTitle())
if templateobj.namespace == 10 then -- NS_TEMPLATE
return templateobj.text:match( "^%s*(.-)%s*$" )
else
return nil
end
else
return nil
end
end
function export.consoletest(frame)
local args = frame.args
local parentargs = frame:getParent().args
local templateobj = mw.title.new(frame:getTitle())
local templateNS = templateobj.namespace
output = 'πρώτη παράμετρος από το πρότυπο:'
output = output .. '\n' .. args[1]
output = output .. '\n' .. 'πρώτη παράμετρος από τη σελίδα:'
output = output .. '\n' .. parentargs[1]
output = output .. '\n' .. 'αριθμός ονοματοχώρου:' --στην κοσόλα φυσικά θα δείξει το τρέχον ns, του module δηλαδή
output = output .. '\n' .. templateNS
return output
end
--απευθείας χρήση συνάρτησης
function export.test(text)
return require("Module:Kleida-el")['κλείδα'](text)
end
--[=[Πως δοκιμάζουμε το Module στην κονσόλα:
1. Γράφουμε στην κονσόλα:
=p.toonomathssynarthshs(parametros)
για το συγκεκριμένο αν θέλω να δώ τι επιστρέφει η συνάρτηση
export.getTargetofPage για τη σελίδα Βικιπαίδεια:Αγορά
γράφω:
=p.getTargetofPage('Βικιπαίδεια:Αγορά')
και "πατάω" "έντερ"...
Αν θέλουμε να το χρησιμοποιήσουμε σε πρότυπο και χρειαζόμαστε και το frame
και τις παραμέτρους που θα δόσει ο χρήστης στη σελίδα
και τις παραμέτρους που θα υπάρχουν στο πρότυπο γράφω μία-μία τις γραμμές στην κονσόλα
πατώντας στο τέλος κάθε γραμμής "έντερ"
parentFrame = mw.getCurrentFrame():newChild{ args = { 'παράμετρος1στησελίδα','παράμετρος2στησελίδα' } }
frame = parentFrame:newChild{ args = { 'παράμετρος1στοπρότυπο','παράμετρος2στοπρότυπο' } }
=p.consoletest(frame)
Επιστρέφει κείμενο και όχι την τελική μορφή που θα πάρουμε (π.χ. πίνακα με χρωματάκια)
Προσοχή και στις αλλαγές γραμμής.
Μπορεί αυτό που θά πάρουμε εδώ να έχει αλλαγές γραμμής αλλά να μην φαίνονται στο τελικό (στη σελίδα δηλαδή)
]=]
return export