Модуль:Текст

Материал из in.wiki
Перейти к навигации Перейти к поиску

Примеры:

Wikicode Result

{{#invoke:Текст|split and glue|Государственные символы Российской Федерации и субъектов Российской Федерации. Столицы}}

Государственные символы Российской Федерации и субъектов Российской Федерации,Столицы

{{#invoke:Текст|get links and glue|[[Государственные символы Российской Федерации]] и [[Государственные символы субъектов Российской Федерации|субъектов Российской Федерации]]. [[Столицы субъектов Российской Федерации|Столицы]]}}

Государственные символы Российской Федерации,Государственные символы субъектов Российской Федерации,Столицы субъектов Российской Федерации

{{#invoke:Текст|get links and glue|Конституционный строй}}

Конституционный строй

{{#invoke:Текст|get links and glue|Государственная граница Российской Федерации. Границы субъектов федерации|regex=(?<=[.)]\s{{!}}^)\p{L}[^().]+(?=\.\s+{{!}}\s+\({{!}}$)}}

Государственная граница Российской Федерации,Границы субъектов федерации

{{#invoke:Текст|link if necessary|Конституционный строй}}

Конституционный строй

{{#invoke:Текст|link if necessary|[[Государственные символы Российской Федерации]] и [[Государственные символы субъектов Российской Федерации|субъектов Российской Федерации]]. [[Столицы субъектов Российской Федерации|Столицы]]}}

Государственные символы Российской Федерации и субъектов Российской Федерации. Столицы

{{#invoke:Текст|link if necessary|Государственная граница Российской Федерации (см. также 2.4.1, 16.3.2, 20.4.3)|regex=(?<=[.)]\s{{!}}^)\p{L}[^().]+(?=\.\s+{{!}}\s+\({{!}}$)}}

Государственная граница Российской Федерации (см. также 2.4.1, 16.3.2, 20.4.3)

{{#invoke:Текст|link if necessary|Государственная граница Российской Федерации (см. также 2.4.1, 16.3.2, 20.4.3). Границы субъектов федерации|regex=(?<=[.)]\s{{!}}^)\p{L}[^().]+(?=\.\s+{{!}}\s+\({{!}}$)}}

Государственная граница Российской Федерации (см. также 2.4.1, 16.3.2, 20.4.3). Границы субъектов федерации

{{#invoke:Текст|link if necessary|Государственная граница Российской Федерации. Границы субъектов федерации|regex=(?<=[.)]\s{{!}}^)\p{L}[^().]+(?=\.\s+{{!}}\s+\({{!}}$)}}

Государственная граница Российской Федерации. Границы субъектов федерации

{{#invoke:Текст|last breadcrumb|1.2.3}}

3

{{#invoke:Текст|last breadcrumb|1}}

1

{{#invoke:Текст|parent breadcrumb|1.2.3}}

1.2

{{#invoke:Текст|parent breadcrumb|1}}

{{#invoke:Текст|breadcrumb level|1.2.3}}

3

{{#invoke:Текст|breadcrumb level|1}}

1

local find, split, match, gmatch, concat = mw.ustring.find, mw.text.split, mw.ustring.match, mw.ustring.gmatch, table.concat
local pcre, gsub, pcre_gmatch = rex_pcre.new, rex_pcre.gsub, rex_pcre.gmatch

return {
	['split and glue'] = function (frame)
		local sentences = {}
		for _, sentence in ipairs (split (frame.args[1], '%s*%.%s*')) do
			sentences [#sentences + 1] = sentence
		end
		return concat (sentences, frame.args[2] or ',')
	end,
	['get links and glue'] = function (frame)
		local links = {}
		for link in gmatch (frame.args[1], '%[%[([^|%]]+)|?[^%]]*%]%]') do
			links [#links + 1] = link
		end
		if #links == 0 then
			local regex = pcre (frame.args.regex or '^.*$')
			for link in pcre_gmatch (frame.args[1], regex) do
				links[#links + 1] = link
			end
		end
		return concat (links, frame.args[2] or ',')
	end,
	['link if necessary'] = function (frame)
		local str = frame.args [1]
		if find ( str, '[[', 1, true) then
			return str
		end
		local regex = pcre (frame.args.regex or '^.*$')
		-- gsub returns several values, so need a variable:
		local replaced = gsub (str, regex, '[[%0]]')
		return replaced
	end,
	['last breadcrumb'] = function (frame)
		local crumbs = split (frame.args [1], frame.args.separator or '%.')
		return crumbs [#crumbs]
	end,
	['parent breadcrumb'] = function (frame)
		local crumbs = split (frame.args [1], frame.args.separator or '%.')
		crumbs [#crumbs] = nil
		return concat (crumbs, frame.args.separator or '.')
	end,
	['breadcrumb level'] = function (frame)
		local crumbs = split (frame.args [1], frame.args.separator or '%.')
		return #crumbs
	end
}