Модуль:Calendar: различия между версиями

Материал из FetbukWiki
https://ru.wikipedia.org/wiki/>Carn
(тестирование)
 
https://ru.wikipedia.org/wiki/>Carn
Нет описания правки
Строка 1: Строка 1:
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame, { frameOnly = true })
local p = {}
local n = args[1]
 
local d = args[2]
function p.test( frame )
local m = args[3]
    local args = getArgs(frame, { frameOnly = true })
return n, d, m
    local n = args[1]
    local d = args[2]
    local m = args[3]
    return n, d, m
end
 
return p

Версия от 16:04, 20 ноября 2019

Функции

Находится в бета-версии (243 байт). Об ошибках просьба сообщать на страницу обсуждения шаблона или самого модуля, или Carn. Если вы хотите поэкспериментировать, лучше делать это в альфа-версии (30 288 байт).

NthDay

{{ДатыСтрокой}}, {{Даты}}

  • Получает 4 числовых аргумента, считает дату и выдаёт её в формате пятого, необязательного аргумента. Примеры использования (значения аргументов в скобках):
    • первое (1) воскресенье (0) октября (10) (2020) года ={{#invoke:Calendar|NthDay|1|0|10|2020}}= Ошибка скрипта: Функции «NthDay» не существует.
    • вторая (2) среда (3) мая (5) (2019) года ={{#invoke:Calendar|NthDay|2|3|5|2019}}= Ошибка скрипта: Функции «NthDay» не существует.
    • последний (-1) понедельник (1) января (1) (2010) года ={{#invoke:Calendar|NthDay|-1|1|1|2010}}= Ошибка скрипта: Функции «NthDay» не существует.
    • предпоследняя (-2) суббота (6) декабря (12) (2001) года ={{#invoke:Calendar|NthDay|-2|6|12|2001}}= Ошибка скрипта: Функции «NthDay» не существует.
    • третье (3) воскресенье (0) марта (3) (2024) года в формате ISO 8601={{#invoke:Calendar|NthDay|3|0|3|2024|%Y-%m-%d}}= Ошибка скрипта: Функции «NthDay» не существует.

unitime

{{НП/Формат времени}}

  • Оформляет ссылку на UTC, если есть любой второй параметр — ставит летнее время
    • {{#invoke:Calendar|unitime|-0}} = Ошибка скрипта: Функции «unitime» не существует.
    • {{#invoke:Calendar|unitime|+0}} = Ошибка скрипта: Функции «unitime» не существует.
    • {{#invoke:Calendar|unitime|+2:00}} = Ошибка скрипта: Функции «unitime» не существует.
    • {{#invoke:Calendar|unitime|−3:30|}} = Ошибка скрипта: Функции «unitime» не существует.
    • {{#invoke:Calendar|unitime|+12:45|1}} = Ошибка скрипта: Функции «unitime» не существует.
    • {{#invoke:Calendar|unitime|-3:30|да}} = Ошибка скрипта: Функции «unitime» не существует.
    • {{#invoke:Calendar|unitime|CET}} = Ошибка скрипта: Функции «unitime» не существует.
    • {{#invoke:Calendar|unitime|EST|no}} = Ошибка скрипта: Функции «unitime» не существует.

OldDate

устарело

  • Два обязательных аргумента, первый из которых — дата в формате ДД.ММ.ГГГГ или Д. М.ГГГГ, второй — григорианский/юлианский календарь, «г» или «ю»
  • Необязательные аргументы bc (до нашей эры), а также параметры викификации wd, wm и wy, связанные, соответственно с вифификацией дня, месяца и года
  • Можно использовать параметр sq_brts для использования квадратных скобок и параметр yearmark для нестандартного обозначения года
    • {{#invoke:Calendar|OldDate|1.1.1|ю|wd=1}} = Ошибка скрипта: Функции «OldDate» не существует. ошибка!
    • {{#invoke:Calendar|OldDate|31.12.1|г|bc=1}} = Ошибка Lua: bad argument #2 to 'formatDate' (not a valid timestamp).
    • {{#invoke:Calendar|OldDate|{{#time: d.m.Y }}|г}} = Ошибка скрипта: Функции «OldDate» не существует.
    • {{#invoke:Calendar|OldDate|11.2.1602|j|wd=1|wm=0|wy=1}} = Ошибка скрипта: Функции «OldDate» не существует.
    • {{#invoke:Calendar|OldDate|11.2.1602|j|wd=1|wm=1|wy=1}} = Ошибка скрипта: Функции «OldDate» не существует.
    • {{#invoke:Calendar|OldDate|11.2.1602|g|bc=1|yearmark=г.}} = Ошибка скрипта: Функции «OldDate» не существует.
    • {{#invoke:Calendar|OldDate|11.2.1602|g|sq_brts=1|yearmark=0}} = Ошибка скрипта: Функции «OldDate» не существует.

NewDate

{{DateStyle}}

  • Аналогично функции выше, но может обрабатывать отрицательные даты и принимает жёстко только 2 формата d.m.y и y-m-d
    • {{#invoke:Calendar|NewDate|1.1.1|ю|wd=1}} = Ошибка скрипта: Функции «NewDate» не существует.
    • {{#invoke:Calendar|NewDate|31.12.1|г|bc=1}} = Ошибка скрипта: Функции «NewDate» не существует.
    • {{#invoke:Calendar|NewDate|{{#time: d.m.Y }}}} = Ошибка скрипта: Функции «NewDate» не существует. (по умолчанию григорианский)
    • {{#invoke:Calendar|NewDate|11.2.1602|j|wd=1|wm=0|wy=1}} = Ошибка скрипта: Функции «NewDate» не существует.
    • {{#invoke:Calendar|NewDate|11.2.1602|j|wd=1|wm=1|wy=1}} = Ошибка скрипта: Функции «NewDate» не существует.
    • {{#invoke:Calendar|NewDate|11.2.1602|g|bc=1|yearmark=г.}} = Ошибка скрипта: Функции «NewDate» не существует.
    • {{#invoke:Calendar|NewDate|11.2.1602|g|sq_brts=1|yearmark=0}} = Ошибка скрипта: Функции «NewDate» не существует.

ToIso

  • Получает полную дату дату в форматах с четырёхзначным годом и выдаёт дату в формате ГГГГ-ММ-ДД
    • 1.2.1602 ={{#invoke:Calendar|ToIso|1.2.1602}}= Ошибка скрипта: Функции «ToIso» не существует.
    • -2020-12-12 ={{#invoke:Calendar|ToIso|-2020-12-12}}= Ошибка скрипта: Функции «ToIso» не существует.
    • 5 января 1002 ={{#invoke:Calendar|ToIso|5 января 1002}}= Ошибка скрипта: Функции «ToIso» не существует.

BoxDate

  • Получает дату с четырёхзначным годом, месяцем и опционально днём месяца, выдаёт читаемую
    • 06.1280 ={{#invoke:Calendar|BoxDate|06.1280}}= Ошибка скрипта: Функции «BoxDate» не существует.
    • 1820-07 ={{#invoke:Calendar|BoxDate|1820-07}}= Ошибка скрипта: Функции «BoxDate» не существует.
    • 2020-12, xg Y = {{#invoke:Calendar|BoxDate|2020-12|xg Y}}= Ошибка скрипта: Функции «BoxDate» не существует.
    • 08.08.1828 ={{#invoke:Calendar|BoxDate|08.08.1828}}= Ошибка скрипта: Функции «BoxDate» не существует.
    • July 12, 2020 ={{#invoke:Calendar|BoxDate|Jule 12, 2020}}= Ошибка скрипта: Функции «BoxDate» не существует.
    • 12 July 2020 ={{#invoke:Calendar|BoxDate|12 Jule 2020}}= Ошибка скрипта: Функции «BoxDate» не существует.
    • July 2020 ={{#invoke:Calendar|BoxDate|Jule 2020}}= Ошибка скрипта: Функции «BoxDate» не существует.
    • 13 août 1281, l W недели Y года ={{#invoke:Calendar|BoxDate|13 août 1281|l W недели Y года}}= Ошибка скрипта: Функции «BoxDate» не существует.
    • 13 января ={{#invoke:Calendar|BoxDate|13 января}}= Ошибка скрипта: Функции «BoxDate» не существует.
bxDate

Реализует указанные выше функции для вызова из других модулей (см. пример использования в Message box), todo:

  • поддержка отрицательных лет (запоминание знака, обработка в положительном виде, приделывание "до н.э." в конце; 0000-01-01 невалидно)
  • преобразование даты в ISO формат, получение строки форматирования и преобразование по ней (необходимы доп.проверки для неточных дат)
  • отдавать параметры errorText и errorCat

ToDate

  • Получает дату в формате Википедия:Функции парсера##time и возвращает в формате <число> <месяц в родительном падеже> <год>
  • Если в строке нету символов препинания, то возвращает её неизменённой
    • 1.2.1602 ={{#invoke:Calendar|ToDate|1.2.1602}}= Ошибка скрипта: Функции «ToDate» не существует.
    • 1/2/1602 ={{#invoke:Calendar|ToDate|1/2/1602}}= Ошибка скрипта: Функции «ToDate» не существует.
    • 1602-02-01 ={{#invoke:Calendar|ToDate|1602-02-01}}= Ошибка скрипта: Функции «ToDate» не существует.
    • 1 февраля 1602 ={{#invoke:Calendar|ToDate|1 февраля 1602}}= Ошибка скрипта: Функции «ToDate» не существует.
    • Завтра (+ 1 day) ={{#invoke:Calendar|ToDate|+ 1 day}}= Ошибка скрипта: Функции «ToDate» не существует.

local getArgs = require('Module:Arguments').getArgs
local p = {}

function p.test( frame )
    local args = getArgs(frame, { frameOnly = true })
    local n = args[1]
    local d = args[2]
    local m = args[3]
    return n, d, m
end

return p