Перейти к содержанию
Главное меню
Главное меню
переместить в боковую панель
скрыть
Навигация
Заглавная страница
Указатели
Свежие правки
Случайная страница
Справка по MediaWiki
Народные Сказки
Поиск
Найти
Создать учётную запись
Войти
Персональные инструменты
Создать учётную запись
Войти
Страницы для неавторизованных редакторов
узнать больше
Вклад
Обсуждение
Редактирование:
Модуль:Roman
Модуль
Обсуждение
English
Читать
Править код
История
Инструменты
Инструменты
переместить в боковую панель
скрыть
Действия
Читать
Править код
История
Общие
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
-- This module implements {{Roman}}. local p = {} -- This function implements the {{overline}} template. local function overline( s ) return mw.ustring.format( '<span style="text-decoration:overline;">%s</span>', s ) end -- Gets the Roman numerals for a given numeral table. Returns both the string of -- numerals and the value of the number after it is finished being processed. local function getLetters( num, t ) local ret = {} for _, v in ipairs( t ) do local val, letter = unpack( v ) while num >= val do num = num - val table.insert( ret, letter ) end end return table.concat( ret ), num end -- The main control flow of the module. function p.convert( arg1, arg2 ) -- Get input and exit displaying nothing if the input is bad. local num = tonumber( arg1 ) if not num or num < 1 or num == math.huge then return end num = math.floor( num ) -- Return a message for numbers too big to be expressed in Roman numerals. if num >= 5000000 then return arg2 or 'N/A' end local ret = '' -- Find the Roman numerals for the large part of numbers 5000 and bigger. -- The if statement is not strictly necessary, but makes the algorithm -- more efficient for smaller numbers. if num >= 5000 then local bigRomans = { { 1000000, 'M' }, { 900000, 'CM' }, { 500000, 'D' }, { 400000, 'CD' }, { 100000, 'C' }, { 90000, 'XC' }, { 50000, 'L' }, { 40000, 'XL' }, { 10000, 'X' }, { 5000, 'V' } } local bigLetters bigLetters, num = getLetters( num, bigRomans ) ret = overline( bigLetters ) end -- Find the Roman numerals for numbers 4999 or less. local smallRomans = { {1000, "M"}, {900, "CM"}, {500, "D"}, {400, "CD"}, {100, "C"}, {90, "XC"}, {50, "L"}, {40, "XL"}, {10, "X"}, {9, "IX"}, {5, "V"}, {4, "IV"}, {1, "I"} } local smallLetters = getLetters( num, smallRomans ) ret = ret .. smallLetters return ret end function p.main( frame ) -- If called via #invoke, use the args passed into the invoking -- template, or the args passed to #invoke if any exist. Otherwise -- assume args are being passed directly in from the debug console -- or from another Lua module. local origArgs if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args for k, v in pairs( frame.args ) do origArgs = frame.args break end else origArgs = frame end -- Trim whitespace and remove blank arguments. local args = {} for k, v in pairs( origArgs ) do if type( v ) == 'string' then v = mw.text.trim( v ) end if v ~= '' then args[k] = v end end return p.convert( args[ 1 ] , args[ 2 ] ) end return p
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «Народные Сказки» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
РуСказки:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
Отменить
Справка по редактированию
(в новом окне)
Шаблоны, используемые на этой странице:
Шаблон:Ambox
(
править
)
Шаблон:Docpage
(
править
)
Шаблон:Natural join
(
править
)
Шаблон:К объединению
(
править
)
Шаблон:Просроченные подведения итогов
(
править
)
Модуль:Arguments
(
править
)
Модуль:Calendar
(
править
)
Модуль:Category handler
(
править
)
Модуль:Category handler/blacklist
(
править
)
Модуль:Category handler/config
(
править
)
Модуль:Category handler/data
(
править
)
Модуль:Category handler/shared
(
править
)
Модуль:Message box
(
править
)
Модуль:Message box/configuration
(
править
)
Модуль:Namespace detect/config
(
править
)
Модуль:Namespace detect/data
(
править
)
Модуль:Roman/doc
(
править
)
Модуль:String2
(
править
)
Модуль:Unsubst
(
править
)
Модуль:Yesno
(
править
)
Отобразить/Скрыть ограниченную ширину содержимого