Модуль:ТСД
Внешний вид
Документация
Модуль устарел, используется Модуль:Отексте и его подмодули. Отсюда могут использоваться только некоторые функции. |
Подмодули
- Подмодуль:ТСД/Данные по странице создаёт таблицу с данными по текущей странице. (Данные типа: заглавие страницы, термин (заглавие статьи), термин в ДО, предыдущая и следующая страница, пагинация, том, и др.) При вызове из статей ТСД парсит словники. Модуль был выделен с целью оптимизации методом
mw.loadData
, — т. е. он выполняется лишь единожды на странице, но ему не могут передаваться параметры, может распознавать только заголовок вызвавшей его страницы.
Использование
Для получения данных по текущей странице (создаваемых модулем «ТСД/Данные по странице») вызвать {{#invoke:ТСД|d|параметр|номер_издания, опционально}}
. Список параметров см. в модуле.
Например, в статье ТСД/Ботовка:
{{#invoke:ТСД|d|tom|3}}
даст:1
{{#invoke:ТСД|d|pagename}}
→ТСД/Ботовка
Функции вызываются из вики-шаблонов так: {{#invoke:ТСД|имя_функции|параметры_через_символ_'|'}}
.
Например (устарело):
{{#invoke:ТСД|indexlink|1|{{{1-ИЗД.СТРАНИЦА СКАНА|}}}|{{{1-ИЗД.СТРАНИЦЫ КНИГИ|}}}}}
Список функций
(устарело)
indexlink(номер издания, том, страница скана, страницы книги)
— Возвращает ссылку на индекс издания. При указанной странице скана вернёт ссылку на страницу в индексе, при неуказанной — на индекс тома.
god_toma(номер издания, том)
— Возвращает год издания тома.
oglavlenie_slovnika(название статьи)
— Возвращает буквенное оглавление словника, где каждая буква является вики-ссылкой. Букву с которой начинается статья выделяет тэгом<big>
. Если не указан 2-й параметр берётся {{SUBPAGE}}.
tom(номер издания, название статьи)
— Возвращает номер тома по первой букве названия статьи. Если не указан 2-й параметр берётся {{SUBPAGE}}.
pagecalc(издание, том, стр.книги)
— Рассчитывает страницу скана по странице книге, добавляя смещение.
и другие.
local p = {}
local data = mw.loadData('Модуль:ТСД/Данные по странице')
--local moduleFunc = require('Модуль:ТСД/Функции')
local god_toma = {{1863,1865,1865,1866}, {1880,1881,1882,1882}, {1903,1905,1907,1909}}
local bukvi_toma = {{'А','Б','В','Г','Д','Е','Ж','З'}, {'И','І','К','Л','М','Н','О'}, {'П'}, {'Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Ѣ','Э','Ю','Ѧ','Я','Ѳ','Ѵ'}} --в ТСД-3 буква 'Р' в 3-м томе
----------- helpers --
-- проверка переменной, возврат её или nil если пустая
function is(var)
if (var == '' or var == nil) then return nil else return var end
end
-- создание ссылки
function make_link(prefix, pagename, text)
return '[['..prefix..pagename..'|'..text..']]'
end
-----------
-- возвращает значение о странице из модуля данных
function p.d(frame)
local var, izdanie = frame.args[1], frame.args[2]
if not izdanie then
return data[var]
else
return data[tonumber(izdanie)][var]
end
end
--[=[
-- Расчитывает страницу скана по странице книге, добавляя смещение. Возврат: стр.скана.
function p.pagescan_calc(frame)
return moduleFunc.pagescan_calc(frame)
end
--]=]
-- для [[шаблон:тсд страница словника]] --
-- Расчитывает страницу книги по странице скана, добавляя смещение. Для тсд-2
function pagecalc_scan(pscan, tom)
ps = tonumber(pscan)
tom = tonumber(tom)
--if izdanie == 2 then
local offset = {90, 9, 8, 8}
return ps - offset[tom]
--end
end
function p.pagecalc_scan(frame) return pagecalc_scan(frame.args[1], frame.args[2]) end
-----------
-- Первую букву - заглавной, остальные строчными
function str_registr(s)
--s = mw.ustring.gsub(s, '{{.-}}', '') --удаление шаблонов. не фурычит, их подстановка идёт раньше вызова этой функции
s = mw.ustring.gsub(s, "́", ''); s = mw.ustring.gsub(s, "ˊ", '') -- ударения, которые ставят {{акут}} и {{акут3}}
s = mw.ustring.gsub(s, "[%[%]'́ˊ]", '') -- удаление шаблонов, ударений, ', []
return mw.ustring.upper(mw.ustring.sub(s, 1,1)) .. mw.ustring.lower(mw.ustring.sub(s, 2))
end
function p.str_registr(frame) return str_registr(frame.args[1]) end
-- Для [[шаблон:tsdl]]. Создаёт ссылку на статью ТСД, в зависимости статья ДО или СО, игнориркет ударение, регистр букв, символы оформления.
function p.perelinkovka(frame)
local topage, is_article, sufix = frame.args[1], is(frame.args[3]), ''
local anchor = is(frame.args[2]) or topage
local basepagename, subpagename = mw.title.getCurrentTitle().rootText, mw.title.getCurrentTitle().subpageText
if (basepagename == 'ТСД3' or basepagename == 'ТСД2' or basepagename == 'ТСД1' or basepagename == 'ТСД') then
if (subpagename == 'ДО') then sufix = '/ДО' end
elseif (basepagename== 'Толковый словарь. Том 1 (Даль 1903).djvu'
or basepagename == 'Толковый словарь. Том 2 (Даль 1905).djvu'
or basepagename == 'Толковый словарь. Том 3 (Даль 1907).djvu'
or basepagename == 'Толковый словарь. Том 4 (Даль 1909).djvu') then basepagename = 'ТСД3'
if (not is_article) then sufix = '/ДО' end
elseif (basepagename== 'Толковый словарь Даля (2-е издание). Том 1 (1880).pdf'
or basepagename == 'Толковый словарь Даля (2-е издание). Том 2 (1881).pdf'
or basepagename == 'Толковый словарь Даля (2-е издание). Том 3 (1882).pdf'
or basepagename == 'Толковый словарь Даля (2-е издание). Том 4 (1882).pdf') then basepagename = 'ТСД2'
if (not is_article) then sufix = '/ДО' end
elseif (basepagename== 'Толковый словарь Даля (1-е издание). Часть 1 (1863).pdf'
or basepagename == 'Толковый словарь Даля (1-е издание). Часть 2 (1865).pdf'
or basepagename == 'Толковый словарь Даля (1-е издание). Часть 3 (1865).pdf'
or basepagename == 'Толковый словарь Даля (1-е издание). Часть 4 (1866).pdf') then basepagename = 'ТСД1'
if (not is_article) then sufix = '/ДО' end
else basepagename = 'ТСД'
end
return '[['..basepagename..'/'..str_registr(topage)..sufix..'|'..anchor..']]'
end
-----------
--[=[
-- Возврат: первая буква слова статьи ({{SUBPAGE}}) в верхнем регистре. Иначе если подан входной параметр слово, то возврат его первой буквы.
function p.first_letter_subpage(frame) return first_letter_subpage(frame.args[1]) end
function first_letter_subpage(pagename)
if not is(pagename) then return end
local nameparts = mw.text.split(pagename, "/")
return first_letter_uppercase(nameparts[2])
end
function p.first_letter_uppercase(frame) return first_letter_uppercase(frame.args[1]) end
function first_letter_uppercase(word)
local fb = mw.ustring.sub(word, 1, 1)
if (fb == 'і' or fb == 'І' or fb == 'i' or fb == 'I') then return 'І' end --баг Lua с распознаванием буквы
local _, _, b = mw.ustring.find(word, '([а-яёѣѵіѳА-ЯЁѢѴІѲѦ])')
return mw.ustring.upper(b)
end
--]=]
-----------
--[=[
-- Возвращает номер тома. Параметры: номер издания, название в ДО или номер тома.
function p.tom(frame)
return moduleFunc.tomcalc(frame)
end
-- Возвращает год издания тома Словаря Даля. Входные параметры: номер издания (1—3), том или название в ДО (если отлично от названия статьи) иначе не надо.
function p.god_toma(frame)
return moduleFunc.god_toma(frame)
end
-- Возвращает ссылку на индекс 1—3-го издания. Параметры: номер издания (1—3), том, nazvanie_DO, страница скана, страницы книги. При неуказанной странице скана вернёт ссылку на индекс тома, при указаной — на страницу в индексе.
function p.indexlink(frame)
return moduleFunc.indexlink(frame)
end
--]=]
------- Словники
-- Для ссылок на индексы страниц в словниках.
function p.indexlink_slovnik_term(frame)
local moduleHeader = require('Module:Header')
local izdanie, pagename, pagebook = frame.args[1], frame.args[2], frame.args[3]
local tom = moduleHeader.volume_calc({ args = { 'ТСД'..tostring(izdanie), pagename } })
-- local tom = data[tonumber(izdanie)]['tom']
local pagebook = moduleHeader.pagenum({ args = { 'hard', ['phard'] = frame.args[3] }})
project_abbr = {'ТСД1', 'ТСД2', 'ТСД3'}
local interleaved
if izdanie == '1' then project = 'ТСД1'
elseif izdanie == '2' then project = 'ТСД2'
elseif izdanie == '3' then project = 'ТСД3'; interleaved = 1 end
local pagescan = moduleHeader.pagescan_calc({ args = { project, tom, pagebook}})
-- return moduleFunc.indexlink({ args = { izdanie, tom, pagescan, pagebook, ['linkonly'] = frame.args['linkonly'] }})
return indexlink( izdanie, tom, pagescan, pagebook, frame.args['linkonly'] )
end
-- источник для шапки словников. параметры: издание, назв. словника
function p.indexlink_slovnik(frame)
local izdanie, nazvslovnika = tonumber(mw.ustring.sub(frame.args[1], 1,1)), frame.args[2]
local volume = moduleHeader.volume_calc({ args = {'ТСД'..tostring(izdanie), nazvslovnika} })
-- return moduleFunc.indexlink({ args = { izdanie, volume } })
return indexlink(izdanie, volume)
end
function first_letter_uppercase(word)
local fb = mw.ustring.sub(word, 1, 1)
if (fb == 'і' or fb == 'І' or fb == 'i' or fb == 'I') then return 'І' end --баг Lua с распознаванием буквы
local _, _, b = mw.ustring.find(word, '([а-яёѣѵіѳА-ЯЁѢѴІѲѦ])')
return mw.ustring.upper(b)
end
-- Для шапок статей. Возвращает оглавление словника, где каждая буква является вики-ссылкой. Букву статьи выделяет тэгом <big>.
function p.oglavlenie_slovnika()
local izdanie = data["izdanie"]
-- local bukva_statyi = ''
if is(data['title']) then bukva_statyi = first_letter_uppercase(data['title']) end
-- local bukva_statyi = moduleFunc.first_letter_uppercase({args={data['title']}})
local str = {}
for _, bukvi in pairs(bukvi_toma) do
for _, b in pairs(bukvi) do
if b == 'Ъ' then b = 'Ъ-Ы-Ь' end
if b ~= 'Ы' and b ~= 'Ь' then
s = '[[ТСД-словник/'..izdanie..'/'..b..'|'..b..']]'
if (bukva_statyi == b) then s = '<big>' .. s .. '</big>' end
table.insert(str, s)
end
end
end
return table.concat( str, ' ' )
end
-- Название статьи: "Алый" (ДО и СО совпадают) или "Алык [Алыкъ]" (ДО и СО не совпадают)
function p.nazvanie(frame)
-- local data = mw.loadData('Модуль:ТСД/Данные по странице')
-- local nazv_do, nazv_so, oldspell = is(frame.args[1]), is(frame.args[2]), is(data['oldspell'])
for i = 3, 1, -1 do
if is(data[i]['termin_so']) then
nazv_so = data[i]['termin_so']
nazv_do = data[i]['termin_do']
break
end
end
if is(data['oldspell']) then
if nazv_do == nazv_so then return nazv_do
elseif not is(nazv_so) and is(nazv_do) then return nazv_do
elseif is(nazv_so) and not is(nazv_do) then return nazv_so
else return nazv_do .. ' / ' .. nazv_so
end
else
if nazv_do == nazv_so then return nazv_so
elseif is(nazv_so) and not is(nazv_do) then return nazv_so
elseif not is(nazv_so) and is(nazv_do) then return nazv_do
else return nazv_so .. ' / ' .. nazv_do
end
end
end
--[==[
-- Полосы навигации ПРЕДЫДУЩАЯ/СЛЕДУЮЩАЯ статья
-- Отличаются ли предыдущие/следующие статьи в словниках. Если отличаются больше чем в 1 словнике использовать субнавигацию, иначе обычную навигацию
-- Параметры: предыдущий1,следующий1, предыдущий2,следующий2, предыдущий3,следующий3
function nav_from_wordlists(wordlist, pred1, sled1, pred2, sled2, pred3, sled3)
local d = mw.loadData('Модуль:ТСД/Данные по странице')
require ('Модуль:Header')
--wordlist = wordlist()
--wordlist
--[=[
local w = { {pred1, pred2, pred3}, {sled1, sled2, sled3} } -- w[предыдущие, следующие][номер_издания]
local listname, prev, next, str, safe, empty = '', '', '', '', {args={safe=true}}, {args={}}
for i = 1, 3 do
listname = 'ТСД-словник/'..wordlist..'/'..i..'-е изд.'
if makelink(safe, "title", listname) then
w[1][i] = makelink(empty, "previous", listname)
w[2][i] = makelink(empty, "next", listname)
end
end
--]=]
local nav1, nav2, nav3, p
--local w = {{pred1, pred2, pred3}, {sled1, sled2, sled3}} -- sl[предыдущие, следующие][номер_издания]
for i = 1, 2 do
if i == 1 then p = 'previous' else p = 'next' end
if is(d[1][i]) and is(d[2][i]) and d[1][i] ~= d[2][i] then
nav1, nav2 = true, true end -- название страницы различается в словниках 1 и 2
if is(d[1][i]) and is(d[3][i]) and d[1][i] ~= d[3][i] then
nav1, nav3 = true, true end -- ......................................... 1 и 3
if is(d[2][i]) and is(d[3][i]) and d[2][i] ~= d[3][i] then
nav2, nav3 = true, true end -- ......................................... 2 и 3
end
if nav1 then
str = str.. mw.getCurrentFrame():expandTemplate {title='sub-nav', args={d[1]['previous'], d[1]['next'], '[['..d[1]['wordlist_str']..'|1 издание]]'}}
--str = '{{sub-nav|[[ТСД/'..pred1..'|'..pred1anchor..']] | [[ТСД/'..sled1..'|'..sled1anchor..']] | [['..slovnik1..'|1 издан{{и}}е]]}}'
end
if nav2 then
str = str.. mw.getCurrentFrame():expandTemplate {title='sub-nav', args={d[2]['previous'], d[2]['next'], '[['..d[2]['wordlist_str']..'|2 издание]]'}}
-- str = str.. '{{sub-nav|[[ТСД/'..pred2..'|'..pred2anchor..']] | [[ТСД/'..sled2..'|'..sled2anchor..']] | [['..slovnik2..'|2 издан{{и}}е]]}}'
end
if nav3 then
str = str.. mw.getCurrentFrame():expandTemplate {title='sub-nav', args={d[3]['previous'], d[3]['next'], '[['..d[3]['wordlist_str']..'|3 издание]]'}}
--str = str.. '{{sub-nav|[[ТСД/'..pred3..'|'..pred3anchor..']] | [[ТСД/'..sled3..'|'..sled3anchor..']] | [['..slovnik3..'|3 издан{{и}}е]]}}'
end
-- else ДЕЛАЕМ ОДНУ НАВИГАЦИЮ посредством "|ПРЕДЫДУЩИЙ/СЛЕДУЮЩИЙ"
--return nav
--return prev, next, prev1, prev2, prev3, next1, next2, next3
--str = d[1]['previous'] .. d[1]['next'] .. '[['..d[1]['wordlist_str']
return str
end
function s.nav_from_wordlists(frame) return nav_from_wordlists(frame.args[1], frame.args[2], frame.args[3], frame.args[4], frame.args[5], frame.args[6], frame.args[7]) end
--]==]
---------- для [[шаблон:тсд страница словника]] --
-- Выбор словника ТСД-2 по номеру страницы скана
function p.SelectSlovnikByPageNumber(frame)
local pname = mw.title.getCurrentTitle().rootText --имя страницы
local ps = mw.title.getCurrentTitle().subpageText -- номер скана
local _,_, tom = mw.ustring.find(pname, "Том (%d)")
tom = tonumber(tom)
local p = pagecalc_scan(ps, tom) -- номер страницы книги
local bukva, str = '', ''
--Словники: имена и интервалы номеров страниц
local pintervals = {
--Все словники-интервалы, для точеченого парсинга. На случай если парсинг всех словников будет медленным. Но вроде парсинг всего 3-го тома (буква "П") мгновенный.
{ --том 1
['А']={1, 32}, ['Б']={32, 87},['Би']={87, 161}, ['В']={161, 221},['Во']={221, 283},['Вы']={283, 347}, ['Г']={348, 422},['Д']= {422, 481},['Дон']= {481, 527}, ['Е']={538, 538},['Ж']={539, 564}, ['З']={564, 613},['Зал']={613, 659},['Заст']={659, 723}
},
{ --том 2
['И']={1, 35}, ['Изу']={35, 67}, ['І']= {67, 68}, ['К']={68, 106}, ['Ки']={107, 162}, ['Кор']={162, 234}, ['Л']={234, 292}, ['М']={293, 382}, ['Н']={383, 429}, ['Нак']={429, 471}, ['Нар']={471, 517}, ['Не']={517, 581}, ['О']={581, 651}, ['Обц']={651, 712}, ['Ор']={712, 768}, ['Ото']={768, 807},
},
{ --том 3
['П']={1, 60}, ['Перел']={60, 110}, ['Пи']={110, 161}, ['Под']={161, 214}, ['Подт']={214, 244}, ['Пок']={244, 298}, ['Поо']={298, 319}, ['Пор']={319, 362}, ['Пот']={362, 419}, ['Приг']={419, 483}, ['Про']={483, 523}, ['Прор']={523, 575},
},
{ --том 4
['Р']={1, 64}, ['Расп']={64, 128}, ['С']={128, 219}, ['Сл']={219, 292}, ['Сп']={292, 393}, ['Т']={394, 468}, ['У']={468, 545}, ['Ф']={546, 556}, ['Х']={556, 586}, ['Ц']={586, 596}, ['Ч']={597, 635}, ['Ш']={636, 671}, ['Щ']={671, 679}, {679, 680, 'Ъ-Ы-Ь'}, ['Ѣ']={680, 682}, ['Э']={683, 687}, ['Ю']={687, 691}, ['Ѧ']={691, 691}, ['Я']={691, 704}, ['Ѳ']={704, 704}, ['Ѵ']={704, 704}
}
}
--[===[
{ ['А']={1,32},['Б']={32,161},['В']={161,347},['Г']={348,422},['Д']={422,527},['Е']={538,538},['Ж']={539,564},['З']={564,723} },--том 1
{ ['И']={1,67},['І']={67,68},['К']={68,234},['Л']={234,292},['М']={293,382},['Н']={383,581},['О']={581,807}, }, --том 2
{ ['П']={1,575}, }, --том 3
{ ['Р']={1,128},['С']={128,393},['Т']={394,468},['У']={468,545},['Ф']={546,556},['Х']={556,586},['Ц']={586, 596},['Ч']={597,635},['Ш']={636,671},['Щ']={671,679},['Ъ-Ы-Ь']={679,680},['Ѣ']={680,682},['Э']={683,687},['Ю']={687,691},['Ѧ']={691,691},['Я']={691,704},['Ѳ']={704,704},['Ѵ']={704,704} } --том 4
}
for b, pi in pairs(pintervals[tom]) do
if p >= pi[1] and p <= pi[2] then
bukva = b
--bukva2 = next(pintervals[tom], b) -- и след. буква на странице
break end
end
--части словников для каждой буквы
local slovniki = {
['А']={'А'}, ['Б']={'Б','Би'}, ['В']={'В','Во','Вы'}, ['Г']={'Г'},
['Д']={'Д','Дон'}, ['Е']={'Е'}, ['Ж']={'Ж'}, ['З']={'З','Зал','Заст'},
['И']={'И','Изу'}, ['І']={'І'}, ['К']={'К','Ки','Кор'}, ['Л']={'Л'},
['М']={'М'}, ['Н']={'Н','Нак','Нар','Не'}, ['О']={'О','Обц','Ор','Ото'},
['П']={'П','Перел','Пи','Под','Подт','Пок','Поо','Пор','Пот','Приг','Про','Прор'},
['Р']={'Р','Расп'}, ['С']={'С','Сл','Сп'}, ['Т']={'Т'}, ['У']={'У'},
['Ф']={'Ф'}, ['Х']={'Х'}, ['Ц']={'Ц'}, ['Ч']={'Ч'}, ['Ш']={'Ш'}, ['Щ']={'Щ'},
['Ъ-Ы-Ь']={'Ъ-Ы-Ь'}, ['Ѣ']={'Ѣ'}, ['Э']={'Э'}, ['Ю']={'Ю'}, ['Ѧ']={'Ѧ'}, ['Я']={'Я'}, ['Ѳ']={'Ѳ'}, ['Ѵ']={'Ѵ'}
}
for _, s in ipairs(slovniki[bukva]) do
str = str .. frame:callParserFunction('#lst', 'ТСД-словник/'..s..'/2-е изд.', p)
end
--if bukva2 ~= nil then
--str = str .. frame:callParserFunction('#lst', 'ТСД-словник/'..slovniki[bukva2][1]..'/2-е изд.', p)
-- bukva2 = next(slovniki, bukva)
-- str = str .. frame:callParserFunction('#lst', 'ТСД-словник/'..slovniki[bukva2][1]..'/2-е изд.', p)
--end
--return frame:callParserFunction('#lst', 'ТСД-словник/'..bukva..'/2-е изд.', p)
-- return str --bukva
--return bukva2
--]===]
for bukva, pi in pairs(pintervals[tom]) do
if p >= pi[1] and p <= pi[2] then
str = str .. frame:callParserFunction('#lst', 'ТСД-словник/2/'..bukva, p) end
end
return str
end
function p.indexlinks_all()
local indexlinks_all = ''
for i = 1, 3 do -- izdanie
if data[i]['tom'] then
local indexlink = indexlink(i, data[i]['tom'], data[i]['numpage_scan'], data[i]['numpage_book'])
if indexlink then
-- оформление: ' • ' между ссылками
if is(indexlinks_all) then indexlinks_all = indexlinks_all..' • '..indexlink
else indexlinks_all = indexlink end
end
end
end
return indexlinks_all
end
-- Возвращает ссылку на индекс 1—3-го издания. Параметры: номер издания (1—3), том, nazvanie_DO, страница скана, страницы книги. При неуказанной странице скана вернёт ссылку на индекс тома, при указаной — на страницу в индексе.
function p.indexlink(frame) return indexlink(frame.args[1], frame.args[2], frame.args[3], frame.args[4], frame.args['linkonly']) end
function indexlink(izdanie, tom, pagescan, pagebook, linkonly)
local izdanie, tom = tonumber(izdanie), tostring(tom)
local god = data['god_toma'][izdanie][tonumber(tom)]
if not is(god) then return '' end
if not is(pagescan) then pagescan = nil end
if (izdanie == 1) then
if (pagescan ~= nil) then
if (linkonly == nil) then
return '[[Страница:Толковый словарь Даля (1-е издание). Часть ' .. tom .. ' (' .. god .. ').pdf/' .. pagescan .. '|ТСД-1 (' .. god .. ') т. ' .. tom .. ', с. ' .. pagebook .. ']]'
else
return 'Страница:Толковый словарь Даля (1-е издание). Часть ' .. tom .. ' (' .. god .. ').pdf/' .. pagescan
end
else
if (linkonly == nil) then
return '[[Индекс:Толковый словарь Даля (1-е издание). Часть ' .. tom .. ' (' .. god .. ').pdf|ТСД-1 (' .. god .. ') т. ' .. tom .. ']]'
else
return 'Индекс:Толковый словарь Даля (1-е издание). Часть ' .. tom .. ' (' .. god .. ').pdf'
end
end
elseif (izdanie == 2) then
if (pagescan ~= nil) then
if (linkonly == nil) then
return '[[Страница:Толковый словарь Даля (2-е издание). Том ' .. tom .. ' (' .. god .. ').pdf/' .. pagescan .. '|ТСД-2 (' .. god .. ') т. ' .. tom .. ', с. ' .. pagebook .. ']]'
else
return 'Страница:Толковый словарь Даля (2-е издание). Том ' .. tom .. ' (' .. god .. ').pdf/' .. pagescan
end
else
if (linkonly == nil) then
return '[[Индекс:Толковый словарь Даля (2-е издание). Том ' .. tom .. ' (' .. god .. ').pdf|ТСД-2 (' .. god .. ') т. ' .. tom .. ']]'
else
return 'Индекс:Толковый словарь Даля (2-е издание). Том ' .. tom .. ' (' .. god .. ').pdf'
end
end
elseif (izdanie == 3) then
if (pagescan ~= nil) then
if (linkonly == nil) then
return '[[Страница:Толковый словарь. Том ' .. tom .. ' (Даль ' .. god .. ').djvu/' .. pagescan .. '|ТСД-3 (' .. god .. ') т. ' .. tom .. ', с. ' .. pagebook .. ']]'
else
return 'Страница:Толковый словарь. Том ' .. tom .. ' (Даль ' .. god .. ').djvu/' .. pagescan
end
else
if (linkonly == nil) then
return '[[Индекс:Толковый словарь. Том ' .. tom .. ' (Даль ' .. god .. ').djvu|ТСД-3 (' .. god .. ') т. ' .. tom .. ']]'
else
return 'Индекс:Толковый словарь. Том ' .. tom .. ' (Даль ' .. god .. ').djvu'
end
end
end
end
return p