ФЭНДОМ


-- сообщения об ошибке
 
function err(s)
	return "<font color=red>" .. s .. "</font>"
end
 
function errParamNotSpecified(name)
	return err("не указан параметр <code>|" .. name .. " = </code>")
end
 
-- Обеспечивает наличие в конце строки хотя бы одной точки.
function EnsureDot(s)
	return mw.ustring.gsub(s, "([^%.])$", "%1.")
end
 
-- Удаляет из строки последнюю точку, если она есть.
function RemoveDot(s)
	return mw.ustring.gsub(s, "%.$", "")
end
 
-- Курсив
function Italic(s)
	return "''" .. s .. "''"
end
 
--[[
почти не оформленная ссылка на MathWorld по известным:
  path        Часть URL, начиная с '/'
  title       Отображаемый заголовок
]]
function RawMWLink(frame, path, title)
	local ref_en = frame:expandTemplate({title = "ref-en"})
	return "[http://mathworld.wolfram.com" .. path .. " " .. title .. "]" .. ref_en
end
 
--[[
готовая к отображению ссылка на entry по известным:
  urlname     "RubiksCube" для ссылки "http://mathworld.wolfram.com/RubiksCube.html"
  title       Заголовок для отображения ("Rubik's Cube" в предыдущем примере)
  author      Автор entry (часто, но не всегда, "Weisstein, Eric W.")
]]
function MWEntryByAuthorTitleUrlname(frame, author, title, urlname)
	local path = "/" .. urlname .. ".html"
	local link = RawMWLink(frame, path, title)
	local tail = " на сайте Wolfram [[MathWorld]]."
	return Italic(EnsureDot(author)) .. " " .. link .. tail
end
 
--[[ exported functions ]]
 
local p = {}
 
-- реализация шаблона {{MathWorld}}
function p.MathWorld(_frame)
	-- прямой доступ к параметрам вызывающего шаблона
	local frame = _frame:getParent()
	-- urlname
	local urlname = frame.args[1] or frame.args["urlname"] or frame.args["id"]
	if urlname == nil then
		return errParamNotSpecified("urlname")
	end
	-- title
	local title = frame.args[2] or frame.args["title"]
	if title == nil then
		return errParamNotSpecified("title")
	end
	-- author
	local author = frame.args["author"] or "Weisstein, Eric W"
	-- оформить ссылку
	return MWEntryByAuthorTitleUrlname(frame, author, title, urlname)
end
 
-- реализация шаблона {{MathWorld3}}
function p.MathWorld3(_frame)
	local function UrlnameFromTitle(title)
		local replacements = {
			{"[ ']", ""},
			{"[áâ]", "a"},
			{"é", "e"},
			{"ö", "oe"}
		}
		local s = title
		for i, r in ipairs(replacements) do
			s = mw.ustring.gsub(s, r[1], r[2])
		end
		return s
	end
	local frame = _frame:getParent()
	-- title, urlname
	local title
	local urlname
	if frame.args[1] and frame.args[2] then
		-- порядок как в {{MathWorld}}
		urlname, title = frame.args[1], frame.args[2]
	else
		title = frame.args[1]
		if title == nil then
			return err("не указан заголовок (пример: <code>" ..
				mw.text.nowiki("{{MathWorld3|Rubik's Cube}}") ..
				"</code>)")
		end
		urlname = UrlnameFromTitle(title)
	end
	-- author
	local author = frame.args["author"] or "Weisstein, Eric W"
	-- оформить ссылку
	return MWEntryByAuthorTitleUrlname(frame, author, title, urlname)
end
 
return p

Обнаружено использование расширения AdBlock.


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

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики