Модуль:Песочница/D6194c-1cc/CiteGost/Subst
Перейти к навигации
Перейти к поиску
Документация
require('strict')
local NS_MODULE = 828 --: https://www.mediawiki.org/wiki/Extension_default_namespaces
local moduleNamespace = mw.site.namespaces[NS_MODULE].name
local formatter = require(moduleNamespace .. ':Песочница/D6194c-1cc/WDFormatV2')
local f = formatter.f
local template
local currentFrame = mw.getCurrentFrame()
local parentFrame = currentFrame:getParent()
local selfTitle = currentFrame:getTitle()
if parentFrame then
template = parentFrame:getTitle()
else
template = selfTitle
end
local ok, templateInfo = pcall(mw.loadData, selfTitle .. '/args:' .. template)
local templateArgs
if ok then
templateArgs = templateInfo.argsToTemplate
end
if not templateArgs then
templateArgs = {}
setmetatable(templateArgs, {
__index = function(t, key)
return key
end
})
end
local function removeCommaFromPerson(source, processedData, result)
local text = result.text
local familyName, initials = mw.ustring.match(text, '^([^,%[%]]+), *(.+)$')
if not initials or not familyName then
text = text:gsub(',', ',')
else
text = initials:gsub(',', ',') .. ' ' .. familyName
end
result.text = text
result.wikitext = text
end
local function escapeComma(source, processedData, result)
result.text = result.text:gsub(',', ',')
result.wikitext = result.wikitext:gsub(',', ',')
end
local function hasVolumesCount(source)
if not source.partsCount then
return false
end
return (source.partsCount.unitEntity == 'Q1238720')
end
local function publishedInHasVolumesCount(source)
if not source.publishedInPartsCount then
return false
end
return (source.publishedInPartsCount.unitEntity == 'Q1238720')
end
local function formatLinkPublishedInStub(source, processedData, result)
if result.linked or not processedData.url then
return
end
if processedData.fieldTable.retrieved and mw.wikibase.getSitelink(processedData.fieldTable.entity) then
return
end
result.linked = true
end
local function formatLinkStub(source, processedData, result)
if result.linked or not processedData.url then
return
end
result.linked = true
end
local ArgsProfile = {
tag = {
name = '',
},
{
childDelimiter = '|',
{
capitalize = false,
depends = 'authors',
value = templateArgs.authors,
},
{
capitalize = false,
delimiter = '=',
field = 'authors',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
capitalize = false,
depends = 'title',
value = templateArgs.title,
},
{
capitalize = false,
delimiter = '=',
field = 'title',
urlField = 'url',
format = { f.dash, formatLinkStub, f.wikisource, f.wikilink, f.wikidata, escapeComma },
},
{
capitalize = false,
depends = 'subtitle',
value = templateArgs.subtitle,
},
{
capitalize = false,
delimiter = '=',
field = 'subtitle',
},
{
capitalize = false,
depends = 'url',
value = templateArgs.url,
},
{
capitalize = false,
delimiter = '=',
field = 'url',
},
{
capitalize = false,
depends = { isPath=true, 'url', 'urlStatus' },
value = templateArgs.urlStatus,
},
{
capitalize = false,
delimiter = '=',
field = { 'url', 'urlStatus' },
},
{
capitalize = false,
depends = { isPath=true, 'url', 'archiveUrl' },
value = templateArgs.archiveUrl,
},
{
capitalize = false,
delimiter = '=',
field = { 'url', 'archiveUrl' },
},
{
capitalize = false,
depends = { isPath=true, 'url', 'archiveDate' },
value = templateArgs.archiveDate,
},
{
capitalize = false,
delimiter = '=',
field = { 'url', 'archiveDate' },
format = { f.dateISO },
},
{
capitalize = false,
depends = 'origin',
value = templateArgs.origin,
},
{
capitalize = false,
delimiter = '=',
field = 'origin',
},
{
capitalize = false,
depends = { isPath=true, 'originLang', 'langCode' },
value = templateArgs.originLang,
},
{
capitalize = false,
delimiter = '=',
field = { 'originLang', 'langCode' },
},
{
capitalize = false,
depends = 'originUrl',
value = templateArgs.originUrl,
},
{
capitalize = false,
delimiter = '=',
field = 'originUrl',
},
{
capitalize = false,
depends = 'contentType',
value = templateArgs.contentType,
},
{
capitalize = false,
delimiter = '=',
field = 'contentType',
},
{
capitalize = false,
depends = 'workType',
value = templateArgs.workType,
},
{
capitalize = false,
delimiter = '=',
field = 'workType',
},
{
capitalize = false,
depends = 'info',
value = templateArgs.info,
},
{
capitalize = false,
delimiter = '=',
field = 'info',
},
{
capitalize = false,
depends = 'edition',
value = templateArgs.edition,
},
{
capitalize = false,
delimiter = '=',
field = 'edition',
},
{
capitalize = false,
depends = 'editors',
value = templateArgs.editors,
},
{
capitalize = false,
delimiter = '=',
field = 'editors',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
capitalize = false,
depends = 'translators',
value = templateArgs.translators,
},
{
capitalize = false,
delimiter = '=',
field = 'translators',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
capitalize = false,
depends = 'illustrators',
value = templateArgs.illustrators,
},
{
capitalize = false,
delimiter = '=',
field = 'illustrators',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
capitalize = false,
depends = 'editorInChief',
value = templateArgs.editorInChief,
},
{
capitalize = false,
delimiter = '=',
field = 'editorInChief',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
capitalize = false,
depends = 'publishedIn',
value = templateArgs.publishedIn,
},
{
capitalize = false,
delimiter = '=',
field = 'publishedIn',
urlField = 'publishedInUrl',
format = { f.dash, formatLinkPublishedInStub, f.wikisource, f.wikilink, f.wikidata, escapeComma },
},
{
capitalize = false,
depends = 'publishedInSubtitle',
value = templateArgs.publishedInSubtitle,
},
{
capitalize = false,
delimiter = '=',
field = 'publishedInSubtitle',
},
{
capitalize = false,
depends = { isPath=true, 'publishedInLang', 'langCode' },
value = templateArgs.publishedInLang,
},
{
capitalize = false,
delimiter = '=',
field = { 'publishedInLang', 'langCode' },
},
{
capitalize = false,
depends = 'publishedInUrl',
value = templateArgs.publishedInUrl,
},
{
capitalize = false,
delimiter = '=',
field = 'publishedInUrl',
},
{
capitalize = false,
depends = { isPath=true, 'publishedInUrl', 'urlStatus' },
value = templateArgs.publishedInUrlStatus,
},
{
capitalize = false,
delimiter = '=',
field = { 'publishedInUrl', 'urlStatus' },
},
{
capitalize = false,
depends = { isPath=true, 'publishedInUrl', 'archiveUrl' },
value = templateArgs.publishedInArchiveUrl,
},
{
capitalize = false,
delimiter = '=',
field = { 'publishedInUrl', 'archiveUrl' },
},
{
capitalize = false,
depends = { isPath=true, 'publishedInUrl', 'archiveDate' },
value = templateArgs.publishedInArchiveDate,
},
{
capitalize = false,
delimiter = '=',
field = { 'publishedInUrl', 'archiveDate' },
format = { f.dateISO },
},
{
capitalize = false,
depends = 'publishedInOrigin',
value = templateArgs.publishedInOrigin,
},
{
capitalize = false,
delimiter = '=',
field = 'publishedInOrigin',
},
{
capitalize = false,
depends = { isPath=true, 'publishedInOriginLang', 'langCode' },
value = templateArgs.publishedInOriginLang,
},
{
capitalize = false,
delimiter = '=',
field = { 'publishedInOriginLang', 'langCode' },
},
{
capitalize = false,
depends = 'publishedInWorkType',
value = templateArgs.publishedInWorkType,
},
{
capitalize = false,
delimiter = '=',
field = 'publishedInWorkType',
},
{
conflicts = 'isScholarlyArticle',
capitalize = false,
depends = 'publishedInAuthors',
value = templateArgs.publishedInAuthors,
},
{
conflicts = 'isScholarlyArticle',
capitalize = false,
delimiter = '=',
field = 'publishedInAuthors',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
conflicts = { 'isScholarlyArticle', 'publishedInIsHosting' },
capitalize = false,
depends = 'publishedInEditors',
value = templateArgs.publishedInEditors,
},
{
conflicts = { 'isScholarlyArticle', 'publishedInIsHosting' },
capitalize = false,
delimiter = '=',
field = 'publishedInEditors',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
conflicts = { 'isScholarlyArticle', 'publishedInIsHosting' },
capitalize = false,
depends = 'publishedInEditorInChief',
value = templateArgs.publishedInEditorInChief,
},
{
conflicts = { 'isScholarlyArticle', 'publishedInIsHosting' },
capitalize = false,
delimiter = '=',
field = 'publishedInEditorInChief',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
capitalize = false,
depends = 'publishedInTranslators',
value = templateArgs.publishedInTranslators,
},
{
capitalize = false,
delimiter = '=',
field = 'publishedInTranslators',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
capitalize = false,
depends = 'publishedInIllustrators',
value = templateArgs.publishedInIllustrators,
},
{
capitalize = false,
delimiter = '=',
field = 'publishedInIllustrators',
format = { removeCommaFromPerson, f.person, f.wikilink, f.wikidata, escapeComma },
},
{
cond = publishedInHasVolumesCount,
capitalize = false,
depends = 'publishedInPartsCount',
value = templateArgs.publishedInVolumesCount,
},
{
cond = publishedInHasVolumesCount,
capitalize = false,
delimiter = '=',
field = 'publishedInPartsCount',
},
{
conflicts = 'isVolume',
cond = hasVolumesCount,
capitalize = false,
depends = 'partsCount',
value = templateArgs.volumesCount,
},
{
conflicts = 'isVolume',
cond = hasVolumesCount,
capitalize = false,
delimiter = '=',
field = 'partsCount',
},
{
conflicts = 'isScholarlyArticle',
capitalize = false,
depends = 'location',
value = templateArgs.location,
},
{
conflicts = 'isScholarlyArticle',
capitalize = false,
delimiter = '=',
field = 'location',
},
{
conflicts = 'isScholarlyArticle',
capitalize = false,
depends = 'publisher',
value = templateArgs.publisher,
},
{
conflicts = 'isScholarlyArticle',
capitalize = false,
delimiter = '=',
field = 'publisher',
},
{
capitalize = false,
depends = 'date',
value = templateArgs.date,
},
{
capitalize = false,
delimiter = '=',
field = 'date',
format = { f.dateISO },
},
{
capitalize = false,
depends = 'volume',
value = templateArgs.volume,
},
{
capitalize = false,
delimiter = '=',
field = 'volume',
},
{
capitalize = false,
depends = 'volumeTitle',
value = templateArgs.volumeTitle,
},
{
capitalize = false,
delimiter = '=',
field = 'volumeTitle',
},
{
capitalize = false,
depends = 'issue',
value = templateArgs.issue,
},
{
capitalize = false,
delimiter = '=',
field = 'issue',
},
{
capitalize = false,
depends = 'articleId',
value = templateArgs.articleId,
},
{
capitalize = false,
delimiter = '=',
field = 'articleId',
},
{
capitalize = false,
depends = 'pages',
value = templateArgs.pages,
},
{
capitalize = false,
delimiter = '=',
field = 'pages',
},
{
capitalize = false,
depends = 'pagesCount',
value = templateArgs.pagesCount,
},
{
capitalize = false,
delimiter = '=',
field = 'pagesCount',
},
{
capitalize = false,
depends = 'series',
value = templateArgs.series,
},
{
capitalize = false,
delimiter = '=',
field = 'series',
},
{
capitalize = false,
depends = 'comment',
value = templateArgs.comment,
},
{
capitalize = false,
delimiter = '=',
field = 'comment',
},
{
capitalize = false,
depends = 'lastUpdate',
value = templateArgs.lastUpdate,
},
{
capitalize = false,
delimiter = '=',
field = 'lastUpdate',
format = { f.dateISO },
},
{
capitalize = false,
depends = 'accessDate',
value = templateArgs.accessDate,
},
{
capitalize = false,
delimiter = '=',
field = 'accessDate',
format = { f.dateISO },
},
{
capitalize = false,
depends = 'doi',
value = templateArgs.doi,
},
{
capitalize = false,
delimiter = '=',
field = 'doi',
},
{
capitalize = false,
depends = 'pmid',
value = templateArgs.pmid,
},
{
capitalize = false,
delimiter = '=',
field = 'pmid',
},
{
capitalize = false,
depends = 's2sic',
value = templateArgs.s2sic,
},
{
capitalize = false,
delimiter = '=',
field = 's2sic',
},
{
capitalize = false,
depends = 'pmc',
value = templateArgs.pmc,
},
{
capitalize = false,
delimiter = '=',
field = 'pmc',
},
{
capitalize = false,
depends = 'oclc',
value = templateArgs.oclc,
},
{
capitalize = false,
delimiter = '=',
field = 'oclc',
},
{
capitalize = false,
depends = 'issn',
value = templateArgs.issn,
},
{
capitalize = false,
delimiter = '=',
field = 'issn',
},
{
capitalize = false,
depends = 'isbn',
value = templateArgs.isbn,
},
{
capitalize = false,
delimiter = '=',
field = 'isbn',
},
{
capitalize = false,
depends = 'lang',
value = templateArgs.lang,
},
{
capitalize = false,
delimiter = '=',
field = { 'lang', 'langCode' },
},
{
capitalize = false,
depends = 'ref',
value = templateArgs.ref,
},
{
capitalize = false,
delimiter = '=',
field = 'ref',
},
{
capitalize = false,
depends = 'workVersion',
value = templateArgs.entity,
},
{
capitalize = false,
delimiter = '=',
field = 'workVersion',
format = { f.entity },
},
{
capitalize = false,
value = templateArgs.offline .. '=1',
},
},
}
return ArgsProfile