אונטערשייד צווישן ווערסיעס פון "יחידה:ReadTd"
קפיצה לניווט
קפיצה לחיפוש
(ייבוא מוויקיפדיה העברית, ראה רשימת התורמים) |
אין תקציר עריכה |
||
שורה 36: | שורה 36: | ||
function readTemplateData( templateName ) | function readTemplateData( templateName ) | ||
if type( templateName ) == 'string' then | if type( templateName ) == 'string' then | ||
templateName = { templateName, templateName .. '/' .. docSubPage } | templateName = { templateName, templateName .. '/' .. docSubPage, templateName .. '/Doc', templateName .. '/דאק' } | ||
end | end | ||
if type( templateName ) == "table" then | if type( templateName ) == "table" then |
יעצטיגע רעוויזיע זינט 20:53, 29 אקטאבער 2023
מען קען שאפן דאקומענטאציע פאר דעם מאדול ביי יחידה:ReadTd/דאק
--[[
templatedata services for other modules.
template-invokable method, testTemplateData() for testing purposes only.
Methods:
_readTemplateData( templateName )
internal method. receives a page name, tries to see if it exists, and contains valid templatedata.
if there is valid templatedata, it extracts the json, and uses mw methods to return a lua table containing the data.
otherwise, returns nil
readTemplateData( templateName )
gets a pagename or an array of names, and cycles through them, trying to get templatedata from this file.
when it gets a valid structure, it returns it, otherwise keep cycling.
templateName can be a string or a table. if it's a string, it's assumed to be a template page name,
where valid templatedata exists in the page or in a subpage whose name is in the local variable docSubPage
testTemplateData( templateName ): for testing. invokable from template. dumps templatedata lua object, using mw.dumpObject.
compat( templateName ): backword-compatability for validation module expecting subpage in specific structure.
]]
local docSubPage = 'תיעוד'
function _readTemplateData( templateName )
local title = mw.title.makeTitle( 0, templateName )
local templateContent = title and title.exists and title:getContent() -- template's raw content
local capture = templateContent and mw.ustring.match( templateContent, '<templatedata%s*>(.*)</templatedata%s*>' ) -- templatedata as text
-- capture = capture and mw.ustring.gsub( capture, '"(%d+)"', tonumber ) -- convert "1": {} to 1: {}. frame.args uses numerical indexes for order-based params.
if capture then return pcall( mw.text.jsonDecode, capture ) end
return false
end
function readTemplateData( templateName )
if type( templateName ) == 'string' then
templateName = { templateName, templateName .. '/' .. docSubPage, templateName .. '/Doc', templateName .. '/דאק' }
end
if type( templateName ) == "table" then
for _, name in ipairs( templateName ) do
local td, result = _readTemplateData( name )
if td then return result end
end
end
return nil
end
function testTemplateData( frame )
local tmplateName = frame.args['שם התבנית'] or frame.args[1]
local td = readTemplateData( tmplateName )
return td and mw.dumpObject( td ) or ''
end
function compat( template )
local td = readTemplateData( template )
if not td or not td['params'] then return nil end
local params = td['params']
local unnamedCount = #params
local paramnames = {}
local required = {}
for paramname, paramobject in pairs( params ) do
table.insert( paramnames, paramname )
if paramobject.required then
table.insert( required, paramname )
end
end
return { unnamedCount, paramnames, required, {} }
end
return {
['ReadTemplateData'] = readTemplateData,
['compat'] = compat,
['בדיקה'] = testTemplateData,
['testTemplateData'] = testTemplateData,
}