Модуль:DecodeEncode
Перейти до навігації
Перейти до пошуку
Документація модуля[перегляд] [редагувати] [історія] [очистити кеш]
Цей модуль позначений як К:реліз, готовий до загального вжитку (43). Він досягнув стадії готовності й вважається, що вільний від помилок і може використовуватись всюди, де знадобиться. Його можна вживати на допоміжних сторінках та інших сторінках Вікіпедії як можливість для навчання новачків. Аби зменшити навантаження на сервери та некоректний показ сторінок, його можна вдосконалювати в рамцях чернеткового тестування[en], а не з застосуванням спроб і помилок. |
Цей модуль Lua використовується на близько 14 000 сторінках і його зміни будуть дуже помітними. Будь ласка, перевіряйте будь-які зміни на підсторінках /пісочниці та /тестів цього модуля, або у вашій пісочниці модуля, та зважайте на обговорення змін на сторінці обговорення перед їхнім впровадженням. |
Модуль для виклику функцій mw.text.decode, mw.text.encode. Копія з АнглВікі.
{{#invoke:decodeEncode|decode|s=Source text©}}
→Source text©
Дивіться Список позначень символів у XML та HTML.
Функція decode (© → ©)
- Декодує іменований символ from у звичайний символ into:
©
→©
>
→>
- Наприклад, речення:
- "Вода закипає при температурі 100 °C"
- В коді:
Вода закипає при температурі 100 °C
- вікітекст
- Результат декодування:
{{#invoke:decodeEncode|decode|s=Вода закипає при температурі 100 °C}}
→Вода закипає при температурі 100 °C
Мінімальне декодування
Якщо задати параметр |subset_only=true
, тільки 5 символів буде опрацьовано: <
, >
, &
, "
,
(<, >, &, " та нерозривний пробіл).
Функція encode (© → ©)
encode
закодовує звичайні символи у іменовані (наприклад:&
→&
).
Regular sentence:
- Вода закипає при температурі 100 °C
У коді:
Вода закипає при температурі 100 °C
Результат кодування:
{{#invoke:decodeEncode|encode|s=Вода закипає при температурі 100 °C|charset=&<>{{!}}°"'&©}}
- →
Вода закипає при температурі 100 °C
Закодовані символі
За промовчанням, тільки невеликий набір символів опрацьовуються. Його можна розширити параметром |charset=
.
- Наприклад:
|charset=<>" \'&
(за промовчанням),|charset=<>°"'&©{{!}}
; нестандартні символи буде замінено десятковими позначеннями:©
→©
Див. також
Документація вище включена з Модуль:DecodeEncode/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
require('strict')
local p = {}
local function _getBoolean( boolean_str )
-- from: module:String; adapted
-- requires an explicit true
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'true' or boolean_str == 'yes' or boolean_str == '1' then
boolean_value = true
else
boolean_value = false
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
boolean_value = false
end
return boolean_value
end
function p.decode( frame )
local s = frame.args['s'] or ''
local subset_only = _getBoolean(frame.args['subset_only'] or false)
return p._decode( s, subset_only )
end
function p._decode( s, subset_only )
-- U+2009 THIN SPACE: workaround for bug: HTML entity   is decoded incorrect. Entity   gets decoded properly
s = mw.ustring.gsub( s, ' ', ' ' )
-- U+03B5 ε GREEK SMALL LETTER EPSILON: workaround for bug (phab:T328840): HTML entity ε is decoded incorrect for gsub(). Entity ε gets decoded properly
s = mw.ustring.gsub( s, 'ε', 'ε' )
local ret = mw.text.decode( s, not subset_only )
return ret
end
function p.encode( frame )
local s = frame.args['s'] or ''
local charset = frame.args['charset']
return p._encode( s, charset )
end
function p._encode( s, charset )
-- example: charset = '_&©−°\\\"\'\=' -- do escape with backslash not %;
local ret
if charset and charset ~= '' then
ret = mw.text.encode( s, charset )
else
-- use default: chartset = '<>&"\' ' (outer quotes = lua required; space = NBSP)
ret = mw.text.encode( s )
end
return ret
end
return p