Difference between revisions of "Module:DecodeEncode"
Jump to navigation
Jump to search
Fixed error (`a ~= (nil or '')` doesn't work; change to `a and a ~= ''`).
m (1 revision imported) |
en>Lemondoge (Fixed error (`a ~= (nil or '')` doesn't work; change to `a and a ~= ''`).) |
||
Line 1: | Line 1: | ||
require('strict') | |||
local p = {} | local p = {} | ||
function _getBoolean( boolean_str ) | local function _getBoolean( boolean_str ) | ||
-- from: module:String; adapted | -- from: module:String; adapted | ||
-- requires an explicit true | -- requires an explicit true | ||
Line 22: | Line 23: | ||
function p.decode( frame ) | function p.decode( frame ) | ||
local | local s = frame.args['s'] or '' | ||
local subset_only = _getBoolean(frame.args['subset_only'] or false) | |||
subset_only = _getBoolean(frame.args['subset_only'] or false) | |||
return p._decode( s, subset_only ) | return p._decode( s, subset_only ) | ||
Line 32: | Line 30: | ||
function p._decode( s, subset_only ) | 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 ) | |||
ret = mw.text.decode( s, not subset_only ) | |||
return ret | return ret | ||
Line 42: | Line 41: | ||
function p.encode( frame ) | function p.encode( frame ) | ||
local | local s = frame.args['s'] or '' | ||
local charset = frame.args['charset'] | |||
charset = frame.args['charset'] | |||
return p._encode( s, charset ) | return p._encode( s, charset ) | ||
Line 55: | Line 51: | ||
local ret | local ret | ||
if charset ~= | if charset and charset ~= '' then | ||
ret = mw.text.encode( s, charset ) | ret = mw.text.encode( s, charset ) | ||
else | else |