Модуль:Encode

Версия от 01:26, 19 июня 2020; Mansur700 (обсуждение | вклад) (Новая страница: «local function decode(t,cp,q) return t:gsub('[^\x01-\x7f]',function(a)--do not use \x00 in patterns for k,v in pairs(cp) do if v==a then return k end; en...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Этот модуль преобразует строку в обычной кодировке Википедии в нужную кодовую таблицу. Основное назначение — автокодирование некоторых внешних URL. Кодовые таблицы содержатся в модулях Module:Encode/cpxxx.

ФункцииПравить

encodeПравить

{{#invoke:Encode|encode|cp1251|{{FULLPAGENAME}}|q=?}} = %CC%EE%E4%F3%EB%FC%3AEncode

Кодирует строку из второго параметра в заданную первым параметром кодировку, а результат преобразует в URL. Параметр type — это второй параметр mw.uri.encode(), по умолчанию QUERY. Также можно задать параметр q для неизвестных символов (по умолчанию, они будут оставаться в Юникоде). Не заменяет символ NUL(0x00).

rawencodeПравить

Аналогична encode, но не преобразовывает строку в URL.

decodeПравить

Декодирует строку в данной кодировке, зашифрованную в URL. Параметры аналогичны encode, но работает куда медленнее.

rawdecodeПравить

Декодирует строку в данной кодировке.

Статические методыПравить

EncodeПравить

Кодирует строку в кодовую таблицу, заданную вторым параметром (можно получить через mw.loadData("Module:Encode/"..название_кодировки)); неизвестные символы заменяются третьим параметром.

DecodeПравить

Декодирует строку в заданной кодировке в Юникод.

Поддерживаемые кодовые таблицыПравить

Таблицы нужно помещать в Категория:Модули:Кодировки.



local function decode(t,cp,q)
return t:gsub('[^\x01-\x7f]',function(a)--do not use \x00 in patterns
	for k,v in pairs(cp) do
		if v==a then
			return k
		end;
	end
	return q
end)
end;

local function encode(t,cp,q)
return mw.ustring.gsub(t,'[^\x01-\x7f]',function(a)
	return cp[a] or q
end)
end;

return {
Encode=encode;
Decode=decode;
rawencode = function(frame)
return encode(frame.args[2],mw.loadData("Module:Encode/"..mw.text.trim(frame.args[1])),frame.args['q'])
end;
encode = function(frame)
return mw.uri.encode(encode(frame.args[2],mw.loadData("Module:Encode/"..mw.text.trim(frame.args[1])),frame.args['q']),frame.args.type or 'QUERY')
end;
decode = function(frame)
return decode(mw.uri.decode(frame.args[2],frame.args['type'] or "QUERY"),mw.loadData("Module:Encode/"..mw.text.trim(frame.args[1])),frame.args['q'])
end;
rawdecode = function(frame)
return decode(frame.args[2],mw.loadData("Module:Encode/"..mw.text.trim(frame.args[1])),frame.args['q'])
end
}