Модуль:Wikidata/doc: различия между версиями
м (Lint: obsolete-tag) |
Lirik (обсуждение | вклад) м (1 версия импортирована) |
||
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
{{СИШ}} | {{СИШ}} | ||
{{module rating|p}} | {{module rating|p}} | ||
− | {{ | + | {{TOC right}} |
− | Используется в {{tl|Wikidata}} (см. описания параметров там же). Настраивается при помощи [[Модуль:Wikidata/config]]. | + | Используется в {{tl|Wikidata}} (см. описания параметров там же). Настраивается при помощи [[Модуль:Wikidata/config]]. |
+ | Прежде чем вносить какие-либо изменения в данный модуль, просьба оттестировать их в [[Модуль:Wikidata/песочница|/песочнице]]. Обратите внимание, что не всё корректно работает в песочнице. | ||
+ | |||
+ | == Общие сведения == | ||
Функции данного модуля не предназначены для прямого вызова из шаблонов карточек или других модулей, не являющихся функциями расширения данного. Для вызова из шаблонов карточек используйте шаблон {{tl|wikidata}} или один из специализированных шаблонов для свойств. Для вызова функций Викиданных предназначенных для отображения чаще всего достаточно вызова <code>frame:expandTemplate{}</code> с вызовом шаблона, ответственного за отрисовку свойства. С другой стороны, вызов определённых функций модуля (в основном это касается <code>getEntityObject()</code>) может в будущем стать предпочтительным. Данный Lua-функционал в любом случае стоит рассматривать как unstable с точки зрения сохранения совместимости на уровне кода (вместе с соответствующими функциями API для Wikibase Client). | Функции данного модуля не предназначены для прямого вызова из шаблонов карточек или других модулей, не являющихся функциями расширения данного. Для вызова из шаблонов карточек используйте шаблон {{tl|wikidata}} или один из специализированных шаблонов для свойств. Для вызова функций Викиданных предназначенных для отображения чаще всего достаточно вызова <code>frame:expandTemplate{}</code> с вызовом шаблона, ответственного за отрисовку свойства. С другой стороны, вызов определённых функций модуля (в основном это касается <code>getEntityObject()</code>) может в будущем стать предпочтительным. Данный Lua-функционал в любом случае стоит рассматривать как unstable с точки зрения сохранения совместимости на уровне кода (вместе с соответствующими функциями API для Wikibase Client). | ||
Строка 19: | Строка 22: | ||
Остальные типы данных требуют указания функции форматирования значения. | Остальные типы данных требуют указания функции форматирования значения. | ||
+ | == Кастомизация == | ||
Поддерживаются три типа параметров-функций, которые дополнительно указывают, как надо форматировать значения: | Поддерживаются три типа параметров-функций, которые дополнительно указывают, как надо форматировать значения: | ||
* <code>property-module</code>, <code>property-function</code> — название модуля и функции модуля, которые отвечают за форматирование вывода массива значений ''свойства'' (statements, claims) с учётом квалификаторов, ссылок и прочего. Например, оформляет множество выводов в таблицу или график. Характерные примеры: | * <code>property-module</code>, <code>property-function</code> — название модуля и функции модуля, которые отвечают за форматирование вывода массива значений ''свойства'' (statements, claims) с учётом квалификаторов, ссылок и прочего. Например, оформляет множество выводов в таблицу или график. Характерные примеры: | ||
Строка 35: | Строка 39: | ||
** вывод ссылок на внешние сайты в [[Модуль:Wikidata/link]] | ** вывод ссылок на внешние сайты в [[Модуль:Wikidata/link]] | ||
*: Спецификация функции: <code>function p.…( value, options )</code> | *: Спецификация функции: <code>function p.…( value, options )</code> | ||
+ | |||
+ | === Заготовки функций === | ||
+ | {{Скрытый | ||
+ | | Заголовок = property-function | ||
+ | | Содержание = <syntaxhighlight lang="lua"> | ||
+ | function p.formatSomeProperty( context, options ) | ||
+ | local claims = context.selectClaims( options, options.property ); | ||
+ | if claims == nil then | ||
+ | return '' | ||
+ | end | ||
+ | |||
+ | local formattedStatements = {} | ||
+ | for _, claim in ipairs( claims ) do | ||
+ | local formattedStatement = context.formatStatement( options, claim ) | ||
+ | -- local formattedStatement = p.formatSomeStatement( context, options, claim ) | ||
+ | if ( formattedStatement and formattedStatement ~= '' ) then | ||
+ | formattedStatement = context.wrapStatement( formattedStatement, options.property, claim.id ) | ||
+ | table.insert( formattedStatements, formattedStatement ) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | return mw.text.listToText( formattedStatements, options.separator, options.conjunction ) | ||
+ | end | ||
+ | </syntaxhighlight> | ||
+ | Также см. код метода <code>formatPropertyDefault</code> ниже, в нём присутствует больше проверок и работа параметрами вызова. | ||
+ | }} | ||
+ | {{Скрытый | ||
+ | | Заголовок = claim-function | ||
+ | | Содержание = <syntaxhighlight lang="lua"> | ||
+ | function formatSomeClaim( context, options, statement ) | ||
+ | local circumstances = context.getSourcingCircumstances( statement ); | ||
+ | options.qualifiers = statement.qualifiers; | ||
+ | local result = context.formatSnak( options, statement.mainsnak, circumstances ); | ||
+ | |||
+ | if ( result and result ~= '' and options.references ) then | ||
+ | result = result .. context.formatRefs( options, statement ); | ||
+ | end | ||
+ | |||
+ | return result; | ||
+ | end | ||
+ | </syntaxhighlight> | ||
+ | Также см. код метода <code>formatStatementDefault</code> ниже, в нём есть пример работы с квалификаторами. | ||
+ | }} | ||
+ | {{Скрытый | ||
+ | | Заголовок = value-function | ||
+ | | Содержание = <syntaxhighlight lang="lua"> | ||
+ | function formatSomeValue( context, options, value ) | ||
+ | return value; | ||
+ | end | ||
+ | </syntaxhighlight> | ||
+ | Также см. код метода <code>formatUrlSingle</code> в модуле [[Модуль:URL]]. | ||
+ | }} | ||
+ | |||
+ | === Context API === | ||
+ | {{Заготовка раздела|описать публичные методы, доступные через <code>context</code>.}} | ||
+ | ==== Переменные ==== | ||
+ | * <code>entity</code> | ||
+ | * <code>frame</code> | ||
+ | |||
+ | ==== Методы ==== | ||
+ | * <code>cloneOptions( options )</code> | ||
+ | * <code>getSourcingCircumstances( statement )</code> | ||
+ | * <code>formatProperty( options )</code> | ||
+ | * <code>formatPropertyDefault( context, options )</code> | ||
+ | * <code>formatSnak( options, snak, circumstances )</code> | ||
+ | * <code>formatStatement( options, statement )</code> | ||
+ | * <code>formatStatementDefault( context, options, statement )</code> | ||
+ | * <code>formatRefs( options, statement )</code> | ||
+ | * <code>formatValueDefault( context, options, value )</code> | ||
+ | * <code>parseTimeBoundariesFromSnak( snak )</code> | ||
+ | * <code>parseTimeFromSnak( snak )</code> | ||
+ | * <code>selectClaims( options, propertyId )</code> | ||
+ | * <code>wrapSnak( value, hash, attributes )</code> | ||
+ | * <code>wrapStatement( value, propertyId, claimId, attributes )</code> | ||
+ | * <code>wrapQualifier( value, qualifierId, attributes )</code> | ||
+ | |||
+ | === Функции для форматирования === | ||
+ | ==== property-function ==== | ||
+ | * [[Модуль:Wikidata/date|Wikidata/date]]::formatDateIntervalProperty | ||
+ | * [[Модуль:Wikidata/Medals|Wikidata/Medals]]::formatProperty | ||
+ | * [[Модуль:Wikidata/Software|Wikidata/Software]]::formatVersionProperty | ||
+ | * [[Модуль:Wikidata/P512|Wikidata/P512]]::formatAcademicDegree | ||
+ | * [[Модуль:Wikidata/number|Wikidata/number]]::formatPropertyWithMostRecentClaimAndIndicator | ||
+ | * [[Модуль:Wikidata/number|Wikidata/number]]::formatColorIndex | ||
+ | |||
+ | ==== claim-function ==== | ||
+ | * [[Модуль:Wikidata/Places|Wikidata/Places]]::formatCountryClaimWithFlag | ||
+ | * [[Модуль:Wikidata/Places|Wikidata/Places]]::formatPlaceWithQualifiers | ||
+ | * [[Модуль:Wikidata/item|Wikidata/item]]::formatEntityWithGenderClaim | ||
+ | * [[Модуль:Wikidata/Biology|Wikidata/Biology]]::formatTaxonNameClaim | ||
+ | * [[Модуль:Wikidata/item|Wikidata/item]]::applyDefaultTemplate | ||
+ | * [[Модуль:Wikidata/date|Wikidata/date]]::formatDateOfBirthClaim | ||
+ | * [[Модуль:Wikidata/date|Wikidata/date]]::formatDateOfDeathClaim | ||
+ | |||
+ | ==== value-function ==== | ||
+ | * [[Модуль:Wikidata|Wikidata]]::extractCategory | ||
+ | * [[Модуль:Wikidata/link|Wikidata/link]]::fromModule | ||
+ | * [[Модуль:Wikidata/Medals|Wikidata/Medals]]::formatValue | ||
+ | * [[Модуль:Wikidata/media|Wikidata/media]]::formatCommonsCategory | ||
+ | * [[Модуль:Wikidata/Software|Wikidata/Software]]::formatExtension | ||
+ | * [[Модуль:Wikidata/number|Wikidata/number]]::formatRA | ||
+ | * [[Модуль:Wikidata/number|Wikidata/number]]::formatDMS | ||
+ | * [[Модуль:Wikidata/url|Wikidata/url]]::formatUrlValue | ||
+ | * [[Модуль:Wikidata/url|Wikidata/url]]::formatLangRefs | ||
== См. также == | == См. также == | ||
* [[Модуль:Wikibase]] | * [[Модуль:Wikibase]] | ||
+ | * Независимые иноязычные аналоги: | ||
+ | ** [[:fr:Module:Wikidata]] | ||
+ | ** [[:ca:Mòdul:Wikidades]] | ||
+ | ** [[:it:Modulo:Wikidata]] | ||
+ | ** [[:de:Modul:Wikidata]] | ||
+ | ** [[:en:Module:WikidataIB]] | ||
+ | ** [[:en:Module:Wd]] | ||
<noinclude> | <noinclude> |
Текущая версия на 23:38, 29 мая 2021
40px | Внимание! Это один из самых используемых модулей. |
40x40px | Этот модуль относится к критическим. У него очень много включений или он используется с подстановкой. Из-за опасности вандализма или ошибочного редактирования он был защищён. |
Используется в {{Wikidata}} (см. описания параметров там же). Настраивается при помощи Модуль:Wikidata/config.
Прежде чем вносить какие-либо изменения в данный модуль, просьба оттестировать их в /песочнице. Обратите внимание, что не всё корректно работает в песочнице.
Общие сведения
Функции данного модуля не предназначены для прямого вызова из шаблонов карточек или других модулей, не являющихся функциями расширения данного. Для вызова из шаблонов карточек используйте шаблон {{wikidata}} или один из специализированных шаблонов для свойств. Для вызова функций Викиданных предназначенных для отображения чаще всего достаточно вызова frame:expandTemplate{}
с вызовом шаблона, ответственного за отрисовку свойства. С другой стороны, вызов определённых функций модуля (в основном это касается getEntityObject()
) может в будущем стать предпочтительным. Данный Lua-функционал в любом случае стоит рассматривать как unstable с точки зрения сохранения совместимости на уровне кода (вместе с соответствующими функциями API для Wikibase Client).
Далее описывается внутренняя документация. Названия функций и параметров могут изменяться. При их изменении автор изменений обязан обновить шаблон {{wikidata}} и специализированные шаблоны свойств. Изменения в других местах, если кто-то всё-таки вызывает функции модуля напрямую, остаются на совести автора «костыля». Итак, при вызове шаблона {{wikidata}} или специализированного шаблона свойства управление отдаётся на функцию formatStatements, которая принимает frame. Из frame достаются следующие опции, которые так или иначе передаются в остальные функции:
plain
— булевый переключатель (по умолчанию false). Если true, результат совпадает с обычным вызовом{{#property:pNNN}}
(по факту им и будет являться)references
— булевый переключатель (по умолчанию true). Если true, после вывода значения параметра дополнительно выводит ссылки на источники, указанные в Викиданных. Для вывода используется Модуль:Sources. Обычно отключается для тех свойств, которые являются «самоописываемыми», например, внешними идентификаторами или ссылками (когда такая ссылка является доказательством своей актуальности), например, идентификаторы IMDb.value
— значение, которое надо выводить вместо значений из Викиданных (используется, если что-то задано уже в карточке в виде т. н. локального свойства)
По умолчанию модуль поддерживает вывод следующих значений без дополнительных настроек:
- географические координаты (coordinates)
- количественные значения (quantity)
- моноязычный текст (monolingualtext)
- строки (string)
- даты (time)
Остальные типы данных требуют указания функции форматирования значения.
Кастомизация
Поддерживаются три типа параметров-функций, которые дополнительно указывают, как надо форматировать значения:
property-module
,property-function
— название модуля и функции модуля, которые отвечают за форматирование вывода массива значений свойства (statements, claims) с учётом квалификаторов, ссылок и прочего. Например, оформляет множество выводов в таблицу или график. Характерные примеры:- вывод таблицы и графика населения в {{wikidata/Population}} и Модуль:Wikidata/Population.
- Спецификация функции:
function p.…( context, options )
, поведение по умолчанию: Модуль:Wikidata#formatPropertyDefault.
claim-module
,claim-function
— название модуля и функции модуля, которые отвечают за форматирование вывода значения свойства (statement, claim) с учётом квалификаторов, ссылок и прочего. Может, например, дополнительно к основному значению (main snak) вывести значения квалификаторов. Характерные примеры:- вывод вышестоящих административных единиц и страны в Модуль:Wikidata/Places;
- вывод авторов латинского названия и даты публикации в Модуль:Wikidata/Biology;
- вывод операционной системы и даты релиза в Модуль:Wikidata/Software;
- вывод количества и даты, на которую оно верно, в Модуль:Wikidata/number;
- Спецификация функции:
function p.…( context, statement )
value-module
,value-function
— название модуля и функции модуля, которые отвечают за форматирование значения (snak, snak data value), в зависимости от контекста, как значений свойства, так и значений квалификатора (если вызывается изclaim-module/claim-function
). Необходимо для изменения отображения свойства, например, генерации викиссылки вместо простой строки или даже вставки изображения вместо отображения имени файла изображения (так как ссылки на изображения хранятся как строки). Характерные примеры:- вывод ссылки на Викисклад в Модуль:Wikidata/media
- вывод ссылок на внешние сайты в Модуль:Wikidata/link
- Спецификация функции:
function p.…( value, options )
Заготовки функций
<syntaxhighlight lang="lua"> function p.formatSomeProperty( context, options ) local claims = context.selectClaims( options, options.property ); if claims == nil then return end
local formattedStatements = {} for _, claim in ipairs( claims ) do local formattedStatement = context.formatStatement( options, claim ) -- local formattedStatement = p.formatSomeStatement( context, options, claim ) if ( formattedStatement and formattedStatement ~= ) then formattedStatement = context.wrapStatement( formattedStatement, options.property, claim.id ) table.insert( formattedStatements, formattedStatement ) end end
return mw.text.listToText( formattedStatements, options.separator, options.conjunction )
end
</syntaxhighlight>
Также см. код метода formatPropertyDefault
ниже, в нём присутствует больше проверок и работа параметрами вызова.
<syntaxhighlight lang="lua"> function formatSomeClaim( context, options, statement ) local circumstances = context.getSourcingCircumstances( statement ); options.qualifiers = statement.qualifiers; local result = context.formatSnak( options, statement.mainsnak, circumstances );
if ( result and result ~= and options.references ) then result = result .. context.formatRefs( options, statement ); end
return result;
end
</syntaxhighlight>
Также см. код метода formatStatementDefault
ниже, в нём есть пример работы с квалификаторами.
<syntaxhighlight lang="lua">
function formatSomeValue( context, options, value )
return value;
end
</syntaxhighlight>
Также см. код метода formatUrlSingle
в модуле Модуль:URL.
Context API
Этот раздел не завершён. |
Переменные
entity
frame
Методы
cloneOptions( options )
getSourcingCircumstances( statement )
formatProperty( options )
formatPropertyDefault( context, options )
formatSnak( options, snak, circumstances )
formatStatement( options, statement )
formatStatementDefault( context, options, statement )
formatRefs( options, statement )
formatValueDefault( context, options, value )
parseTimeBoundariesFromSnak( snak )
parseTimeFromSnak( snak )
selectClaims( options, propertyId )
wrapSnak( value, hash, attributes )
wrapStatement( value, propertyId, claimId, attributes )
wrapQualifier( value, qualifierId, attributes )
Функции для форматирования
property-function
- Wikidata/date::formatDateIntervalProperty
- Wikidata/Medals::formatProperty
- Wikidata/Software::formatVersionProperty
- Wikidata/P512::formatAcademicDegree
- Wikidata/number::formatPropertyWithMostRecentClaimAndIndicator
- Wikidata/number::formatColorIndex
claim-function
- Wikidata/Places::formatCountryClaimWithFlag
- Wikidata/Places::formatPlaceWithQualifiers
- Wikidata/item::formatEntityWithGenderClaim
- Wikidata/Biology::formatTaxonNameClaim
- Wikidata/item::applyDefaultTemplate
- Wikidata/date::formatDateOfBirthClaim
- Wikidata/date::formatDateOfDeathClaim
value-function
- Wikidata::extractCategory
- Wikidata/link::fromModule
- Wikidata/Medals::formatValue
- Wikidata/media::formatCommonsCategory
- Wikidata/Software::formatExtension
- Wikidata/number::formatRA
- Wikidata/number::formatDMS
- Wikidata/url::formatUrlValue
- Wikidata/url::formatLangRefs
См. также
- Модуль:Wikibase
- Независимые иноязычные аналоги: