Это страница документации Модуль:Sources.

Принцип работы модуля править

Данный модуль генерирует текст, используемый в сносках, ссылающихся на элемент викиданных.

Тесты [ править ] править

Служебные подмодули править

Используемые параметры Викиданных править

Свойство Комментарий
автор (P50)
имя автора (строка) (P2093)
язык произведения или названия (P407)
язык оригинала фильма или телешоу (P364)
раздел, стих или параграф (P958) используется для указания названия статьи в энциклопедии
название (P1476) если требуется переопределить название из метки элемента
подзаголовок (P1680)
доступен по URL (P953)
архивный URL (P1065)
URL-ссылка на источник (P854)
опубликовано в (P1433)
номер издания (P393)
издатель (P123)
место публикации (P291)
редактор (P98)
страницы (P304)
количество страниц (P1104)
том (P478)
выпуск (P433)
дата основания / создания / возникновения (P571)
дата публикации (P577)
ISBN-13 (P212)
ISBN-10 (P957)
ISSN (P236)
порядковый номер (P1545)
код arXiv (P818)
JSTOR (P888)

Функции править

Внешние править

Внешние функции принимают объекты типа фрейм и предназначены для вызова из других модулей или через функцию парсера

Кол программы Комментарии к нему
текст = {{#invoke:}} текст =

.

Прямое обращение к функциям модулей в статьях крайне нежелательно! Используйте для этих целей подходящие шаблоны.

p.renderSource(frame) править

Выдаёт вики-текст ссылки на заданный источник для подстановки внутрь сноски или списка литературы. См. шаблоны {{source}} и {{ВД-Источник}}, использующие данную функцию. Поддерживает следующие аргументы:

Кол программы Комментарии к нему
текст = frame.args[1] текст =

— анонимный аргумент, задающий идентификатор объекта на викиданных, по которому нужно сгенерировать ссылку. Например, Q20750516.

Кол программы Комментарии к нему
текст = frame.args['ref'] текст =

— задаёт метку ref, которую в дальнейшем можно будет использовать в шаблонах типа {{sfn}}.

Кол программы Комментарии к нему
текст = frame.args['ref-year'] текст =

— задаёт метку ref-year, которая используется аналогично метке ref.

Кол программы Комментарии к нему
текст = frame.args['part'] текст =

— дополнительный аргумент, позволяющий уточнить часть источника, на которую идёт ссылка (например, главу в книге).

Кол программы Комментарии к нему
текст = frame.args['parturl'] текст =

— ссылка, которую следует поставить на часть, описанную предыдущим аргументом.

Кол программы Комментарии к нему
текст = frame.args['pages'] текст =

— конкретные страницы в источнике, на которые ведётся ссылка.

Кол программы Комментарии к нему
текст = frame.args['url'] текст =

— позволяет явно указать, какую ссылку нужно будет проставить на источник.

Кол программы Комментарии к нему
текст = frame.args['volume'] текст =

— позволяет явно указать том источника, на который идёт ссылка.

Кол программы Комментарии к нему
текст = frame.args['issue'] текст =

— позволяет явно указать выпуск источника, на который идёт ссылка.

Пробрасывание большей части аргументов происходит в utils.copyArgsToSnaks. Сам переданный фрейм сохраняется в p.currentFrame для дальнейшего использования, а на основе переданных аргументов функцией artificialSnaks создаются искусственные снеки, которые ссылаются на источник, указанный в

Кол программы Комментарии к нему
текст = frame.args[1] текст =

, через свойства P248 (stated in) и P805 (statement is subject of). Затем данные передаются в renderReferenceImpl для дальнейшей обработки.

p.renderReference(frame, currentEntity, reference) править

Выдаёт вики-текст готовой сноски на заданный источник. Поддерживает те же аргументы, что и p.renderSource, кроме ref и ref-year. См. шаблоны {{source-ref}} и {{ВД-Сноска}}, использующие данную функцию. Также используется в Модуль:Wikidata для отображения ссылок, указанных возле утверждений на викиданных. Если currentEntity и reference отсутствуют, создаются искусственные снеки с помощью функции artificialSnaks, после чего они передаются в renderReferenceImpl. Если вики-текст для сноски был успешно сгенерирован, он оборачивается в тэг

Кол программы Комментарии к нему
текст = <ref> текст =

с помощью frame:extensionTag, при этом имя для сноски генерируется путём хеширования её вики-текста через mw.hash.hashValue. Статьи, с такими сносками помещаются в Категория:Викиучебник:Статьи с источниками из Викиданных.

Внутренние править

tokenizeName(fullName) править

Преобразует полное имя в пару {фамилии через пробел, инициалы имён через пробел}. Реализована в виде разбора случаев, которые можно встретить на викиданных:

  1. Фамилия, Имя
  2. Фамилия, Имя Имя
  3. Фамилия Фамилия, Имя
  4. Имя Имя оглы Фамилия
  5. Имя Имя де Фамилия
  6. Имя … Имя Фамилия (хотя бы одно и не более четырёх единичных имён)

Здесь имя, в отличие от фамилии, может являться инициалом. Если ни один из форматов выше не выполнен, возвращает полное имя без изменений.

personNameToAuthorName(fullName) править

Преобразует полное имя в формат Фамилия И. О. с помощью tokenizeName.

personNameToResponsibleName(fullName) править

Преобразует полное имя в формат И. О. Фамилия с помощью tokenizeName.

getPeopleAsWikitext(context, value, options) править

Преобразует список имён value в викитекст в соответствии со списком опций options. В опциях должны быть проставлены следующие поля:

  1. separator — разделитель в списке;
  2. conjunction — разделитель перед последним элементом списка;
  3. format — функция, преобразующая имена к некоторому нормализованному виду (например, personNameToAuthorName);
  4. nolinks — логическое значение, должно быть истинным если проставление ссылок нежелательно;
  5. preferids — логическое значение, должно быть истинным если нужно вернуть id с викиданных, а не имена.

Если в списке больше maxAuthors (на текущий момент 10) людей, заменяет остальных на и др. или его аналоги (если в контексте указан язык, то используется i18nEtAl[context.lang], иначе используется i18nEtAlDefault).

appendProperty(result, context, src, conjunctor, property, url) править

Приписывает src[property] к result, разделяя их строкой, записанной в conjunctor. Если возможно, оформляет его ссылкой на src[url].

generateAuthorLinks(context, src) править

Возвращает список авторов src.author, оформленный через getPeopleAsWikitext и обрамлённый в

Кол программы Комментарии к нему
текст = <i class="wef_low_priority_links"></i> текст =

.

appendTitle(result, context, src) править

Дописывает к result строку

Кол программы Комментарии к нему
текст = src.part // src.title текст =

либо только

Кол программы Комментарии к нему
текст = src.title текст =

если src.part не указан. Если возможно, обрамляет src.part (или src.title если src.part не указан) в src.url.

appendLanguage(result, context, src) править

Если context.lang отличается от i18nDefaultLanguage (в нашем разделе русский), то указание об этом приписывается к result с помощью Модуль:Languages в формате {{ref-lang}}.

appendSubtitle(result, context, src) править

Дописывает к result строку

Кол программы Комментарии к нему
текст = : src.subtitle текст =

если src.subtitle определён.

appendOriginalTitle(result, context, src) править

Дописывает к result строку

Кол программы Комментарии к нему
текст =  = src.originaltitle текст =

если src.originaltitle определён.

appendPublication(result, context, src) править

Дописывает к result строку

Кол программы Комментарии к нему
текст =  // src.publication: src.publication.subtitle текст =

если определён src.publication.subtitle, либо

Кол программы Комментарии к нему
текст =  // src.publication текст =

если определён только src.publication.

appendEditor(result, context, src) править

Дописывает к result строку

Кол программы Комментарии к нему
текст =  / prefix src.editor текст =

если определён src.editor, где prefix определяется по context.lang (по умолчанию,

Кол программы Комментарии к нему
текст = под ред. текст =

).

appendEdition(result, context, src) править

Дописывает к result строку

Кол программы Комментарии к нему
текст =  — src.edition текст =

если src.edition определён.

appendPublicationData(result, context, src) править

Добавляет к result строку вида

Кол программы Комментарии к нему
текст =  — src.place: src.publisher, src.year. текст =

если хотя бы один из указанных параметров определён. Неуказанная часть опускается вместе с соответствующей пунктуацией. В частности, двоеточие ставится только если указано src.place и хотя бы что-то из src.publisher и src.year, запятая ставится только если указаны и src.publisher, и src.year. Тире и точка ставятся если указан хотя бы один из параметров.

appendVolumeAndIssue(result, context, src) править

Добавляет к result строку виду

Кол программы Комментарии к нему
текст =  — letter_vol src.volume, letter_iss src.issue. текст =

если хотя бы один из указанных параметров определён. Запятая ставится если указаны оба параметра. letter_vol и letter_iss определяются по context.lang (например,

Кол программы Комментарии к нему
текст = Т. текст =

и

Кол программы Комментарии к нему
текст = вып. текст =

для русских текстов,

Кол программы Комментарии к нему
текст = Vol. текст =

и

Кол программы Комментарии к нему
текст = Iss. текст =

для английских).

appendPages(result, context, src) править

Добавляет к result строку вида

Кол программы Комментарии к нему
текст =  — letter src.pages. текст =

если src.pages определён, при этом в качестве разделителя в src.pages, если это диапозон страниц, используется символ «—», а letter определяется исходя из context.lang (например,

Кол программы Комментарии к нему
текст = P. текст =

для английского и

Кол программы Комментарии к нему
текст = С. текст =

для русского).

appendNumberOfPages(result, context, src) править

Добавляет к result строку вида

Кол программы Комментарии к нему
текст =  — src.numberOfPages letter текст =

если src.numberOfPages определён. При этом letter определяется из context.lang (

Кол программы Комментарии к нему
текст = p. текст =

для английского и

Кол программы Комментарии к нему
текст = с. текст =

для русского).

appendBookSeries(result, context, src) править

Добавляет к result строку вида

Кол программы Комментарии к нему
текст =  — (src.bookSeries; letter_vol src.bookSeriesVolume, letter_iss src.bookSeriesIssue) текст =

если src.bookSeries определено. Точка с запятой ставится только если определено src.bookSeriesVolume или src.bookSeriesIssue, запятая ставится если определены оба параметра. letter_vol и letter_iss определяются из context.lang, аналогично тому, как это делается в appendVolumeAndIssue.

appendBookSeries(result, context, src) править

Добавляет к result информацию из src.tirage если тот определён. Формат определяется из context.lang, для английского это

Кол программы Комментарии к нему
текст =  — ed. size: src.tirage текст =

, а для русского

Кол программы Комментарии к нему
текст =  — src.tirage экз. текст =

.

appendIdentifiers(result, context, src) править

Добавляет к result идентификаторы ISBN, ISSN, DOI, PMID и arXiv если те определены. Идентификаторы приписываются через тире, более точный формат определён в таблицах options_commas, options_issn, options_doi, options_pmid и options_arxiv.

appendSourceId(result, context, src) править

Оборачивает result в

Кол программы Комментарии к нему
текст = <span class="wikidata_cite citetype" data-entity-id="src.sourceId"></span> текст =

, где citetyle это src.type если это поле определено и citetype_unknown в противном случае.

appendAccessDate(result, context, src) править

Добавляет к result строку виду

Кол программы Комментарии к нему
текст = Проверено dd month yyyy. текст =

, где dd, month и yyyy берутся из src.accessdate если данное поле определено.

populateUrl(context, src) править

Если src.url не определено, но src.sourceId известен, пытается присвоить в src.url ссылку на викитеку.

populateYear(src) править

Если src.year не определён, пытается заполнить его из src.dateOfPublication и src.dateOfCreation.

populateTitle(src) править

Если src.title не определён, пытается присвоить ему src.url, если и это не получается, то присваивает

Кол программы Комментарии к нему
текст = (unspecified title) текст =

.

renderSource(context, src) править

Внутренняя функция, генерирующая текст, который будет отображаться в сноске. Действует следующим образом:

  1. Записывает src.lang в context.lang (или i18nDefaultLanguage если src.lang записать не получилось).
  2. Вызывает populateUrl, populateTitle и populateYear.
  3. Заводит переменную result, изначально равную generateAuthorLinks(context, src).
  4. .Последовательно применяет к result функции appendTitle—appendAccessDate, при этом блок appendEditor—appendAccessDate дополнительно обрамляется в
Кол программы Комментарии к нему
текст = <span class="wef_low_priority_links"></span> текст =

artificialSnaks(args) править

Создаёт искусственные снеки, которые ссылаются на источник с идентификатором frame.args[1] через свойства P248 (stated in) и P805 (statement is subject of), а также пробрасывает в них аргументы (том, выпуск и т. д.).