Модуль:WDBase/doc

Материал из Буквицы
Перейти к навигации Перейти к поиску

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

Модуль-библиотека с базовыми функциями для работы с Викиданными. Содержит функции для получения утверждений, фильтрации, получения значений утверждений, приведения утверждений к текстовому виду.

Модуль используется другим, более высокоуровневым модулем-библиотекой Модуль:WDCommon. на модуле WDBase основаны модули Модуль:WDBackend и Модуль:WDFormat.

Функции

В функциях используются понятия значения (value) и текстового представления (text). Значение может быть текстом, таблицей с датой или идентификатором элемента Викиданных. Текстовое представление предполагает преобразование значения в текстовый вид, которы уже можно использовать для отображения.

Получаемые из Викиданных данные представлены в специальном сериализованном формате. В этом формате есть понятия утверждения (statement) и снека (snak). Утверждения — это значения для заданного свойства с дополнительными уточняющими данными и источниками. Снеки — часть утверждений, у которых есть только значение. Каждое утверждение может иметь в себе основной снек и квалификаторы. Данные в квалификаторах представлены только лишь снеками.

Работа с элементом Викиданных:

  • statements — получить массив утверждений для указанного свойства.
  • statementsByProperties — получить массив утверждений для указанных свойств, скомбинировав их (учитываются порядковые номера, указанные через квалификаторы).
  • value — получить значение свойства элемента Викиданных (берётся первое утверждение).
  • text — получить текстовое представление свойства элемента Викиданных (берётся первое утверждение).
  • wikilink — получить викиссылку на статью по элементу Викиданных.
  • resolveParent — получить основной элемент Викиданных (издание, на котором основано текущее издание).
  • instanceOf — проверить является ли элемент Викиданных частным случаем одной из указанных сущностей.
  • valueByQualifier — получить значение утверждения, которому соответствует квалификатор с указанным свойством и значением.

Работа с утверждениями:

  • valueByStatement — получить значение из утверждения.
  • textByStatement — привести утверждение к текстовому виду.
  • dataByStatement — получить таблицу с данными в удобном для использования формате из утверждения.
  • statementQualifier — получить снек квалификатора по идентификатору свойства.
  • tryFilterStatementsByLang — попытаться отфильтровать утверждения по языку. Если заданного языка не найдено, возвращает все утверждения. Если передан аргумент forceLang, то не возвращает утверждений, если по указанному языку они не найдены.
  • filterStatementsByUnit — отфильтровать утверждения по QID единицы измерения.

Работа со снеками:

  • valueBySnak — получить значение из снека.
  • dataBySnak — получить таблицу с данными в удобном для использования формате из снека.
  • tryFilterSnaksByLang — попытаться отфильтровать снеки по языку. Если заданного языка не найдено, возвращает все снеки.

Работа с типами:

  • dateFromDatavalue — получить таблицу с распарсенной датой из данных снека.
  • dateToStr — преобразовать таблицу с датой в строку.

Внесение изменений

При исправлении ошибки, пожалуйста, сначала добавьте тест, который будет проваливаться из-за обнаруженной ошибки, и только затем вносите исправление. При внесении исправления проверьте, чтобы все тесты проходили. Вносить исправление можно только, если оно не ломает другие тесты.

Добавление нового функционала рекомендуется делать у себя в песочнице, скопировав в неё модуль. В правке копирования необходимо указать тот факт, что делается копирование, и сделать ссылку на оригинальный модуль в виде викитекста. При добавлении нового функционала сначала желательно добавить тест на этот функционал, затем добавить сам функционал, убедившись, что все тесты при этом проходят.

Тесты

[mark.svg|20px|link=|alt=]N 13 тестов провалилось.

Название Ожидается Фактически
[mark.svg|20px|link=|alt=]N test_dataByStatement Lua error -- Модуль:WDBase/testcases:43: attempt to index local 'statements' (a nil value)
[mark.svg|20px|link=|alt=]N test_dateFromDatavalue Lua error -- Модуль:WDBase/testcases:28: attempt to index local 'statements' (a nil value)
[mark.svg|20px|link=|alt=]N test_filterStatementsByUnit Lua error -- Модуль:WDBase/testcases:137: bad argument #1 to 'getn' (table expected, got nil)
[mark.svg|20px|link=|alt=]N test_instanceOf Модуль:WDBase/testcases:169: Failed to assert that nil equals expected Q3331189
[mark.svg|20px|link=|alt=]N test_resolveParent Модуль:WDBase/testcases:160: Failed to assert that nil equals expected Q2482106
[mark.svg|20px|link=|alt=]N test_searchStatementByValue Lua error -- Модуль:WDBase/testcases:150: bad argument #1 to 'getn' (table expected, got nil)
[mark.svg|20px|link=|alt=]N test_statements Lua error -- Модуль:WDBase/testcases:17: bad argument #1 to 'getn' (table expected, got nil)
[mark.svg|20px|link=|alt=]N test_statementsByProperties 6 0
[mark.svg|20px|link=|alt=]N test_text Модуль:WDBase/testcases:96: Failed to assert that Systematic review or scoping review? Guidance for authors when choosing between a systematic or scoping review approach equals expected nil
[mark.svg|20px|link=|alt=]N test_tryFilterSnaksByLang Lua error -- Модуль:WDBase/testcases:122: bad argument #1 to 'getn' (table expected, got nil)
[mark.svg|20px|link=|alt=]N test_tryFilterStatementsByLang Lua error -- Модуль:WDBase/testcases:112: bad argument #1 to 'getn' (table expected, got nil)
[mark.svg|20px|link=|alt=]N test_value Модуль:WDBase/testcases:105: Failed to assert that Systematic review or scoping review? Guidance for authors when choosing between a systematic or scoping review approach equals expected nil
[mark.svg|20px|link=|alt=]N test_wikilink Модуль:WDBase/testcases:68: Failed to assert that [[Почка млекопитающего]] equals expected nil


План разработки