Бюрократы, Администраторы интерфейса, Администраторы (Semantic MediaWiki), Кураторы (Semantic MediaWiki), Editors (Semantic MediaWiki), Скрывающие, Администраторы, trusted
75 964
правки
мНет описания правки |
мНет описания правки |
||
| (не показаны 4 промежуточные версии этого же участника) | |||
| Строка 13: | Строка 13: | ||
-- {{#invoke: Common | page_id | volume=1 | page=17 | -- {{#invoke: Common | page_id | volume=1 | page=17 | ||
-- | volume_digits=2 | page_digits=4 | -- | volume_digits=2 | page_digits=4 | ||
-- }} | -- }} | ||
-- By default volume has 1 digit, page has 3 digits | -- page could be Roman (XVII, xvii) or Arabic (17) | ||
-- By default volume has 1 digit, page has 3 digits. | |||
function common.page_id( frame ) | function common.page_id( frame ) | ||
local vNum = frame.args['volume'] | local vNum = frame.args['volume'] | ||
local pNum = frame.args['page'] | |||
local nFormat = '%.3d' | local nFormat = '%.3d' | ||
-- Check if we should alter volume number | |||
-- Check if we should alter | |||
if not isempty(frame.args['volume_digits']) then | if not isempty(frame.args['volume_digits']) then | ||
nFormat = '%.'.. frame.args['volume_digits'] ..'d' | nFormat = '%.'.. frame.args['volume_digits'] ..'d' | ||
vNum = string.format(nFormat, frame.args['volume']) | vNum = string.format(nFormat, frame.args['volume']) | ||
end | end | ||
if not | |||
-- If we deal with regular page number then for v.1, p.17 return 1:017 | |||
if not roman.isRoman(frame.args['page']) then | |||
pNum = string.format(nFormat, frame.args['page']) | pNum = string.format(nFormat, frame.args['page']) | ||
if not isempty(frame.args['page_digits']) then | |||
nFormat = '%.'.. frame.args['page_digits'] ..'d' | |||
pNum = string.format(nFormat, frame.args['page']) | |||
end | |||
end | end | ||
-- | -- If we deal with Roman number then for v.1, p.xvii return 1:000017(xvii) | ||
if frame.args[' | if roman.isRoman(frame.args['page']) then | ||
-- 1. Fill with zeros all places for arabic digits for correct sorting. | -- 1. Fill with zeros all places for arabic digits for correct sorting. | ||
pNum = '000' | pNum = '000' | ||
| Строка 42: | Строка 47: | ||
-- 2. Convert number from Roman to Arabic | -- 2. Convert number from Roman to Arabic | ||
local pArabic = roman.toArabic( | local pArabic = roman.toArabic(frame.args['page']) | ||
-- 3. Add zeros to this number | -- 3. Add zeros to this number | ||
| Строка 53: | Строка 58: | ||
-- 4. Add original Roman number after Arabic | -- 4. Add original Roman number after Arabic | ||
pNum = pNum .. pArabic ..'('.. frame.args[' | pNum = pNum .. pArabic ..'('.. frame.args['page'] ..')' | ||
end | end | ||