Changes

Jump to navigation Jump to search
1,003 bytes added ,  04:34, 8 July 2018
replace html entity with # symbol - tested in /sandbox1 so as not to disturb /sandbox
Line 63: Line 63:  
return ''
 
return ''
 
end
 
end
 +
 +
-- html '#' entity
 +
c = c:gsub("#", "#")
 +
 
-- whitespace
 
-- whitespace
 
c = c:match( '^%s*(.-)[%s;]*$' )
 
c = c:match( '^%s*(.-)[%s;]*$' )
Line 121: Line 125:  
function p._greatercontrast(args)
 
function p._greatercontrast(args)
 
local bias = tonumber(args['bias'] or '0') or 0
 
local bias = tonumber(args['bias'] or '0') or 0
 +
local css = (args['css'] and args['css'] ~= '') and true or false
 
local v1 = color2lum(args[1] or '')
 
local v1 = color2lum(args[1] or '')
 
local c2 = args[2] or '#FFFFFF'
 
local c2 = args[2] or '#FFFFFF'
Line 126: Line 131:  
local c3 = args[3] or '#000000'
 
local c3 = args[3] or '#000000'
 
local v3 = color2lum(c3)
 
local v3 = color2lum(c3)
local ratio1 = 0;
+
local ratio1 = -1;
local ratio2 = 0;
+
local ratio2 = -1;
 
if (type(v1) == 'number' and type(v2) == 'number') then
 
if (type(v1) == 'number' and type(v2) == 'number') then
 
ratio1 = (v2 + 0.05)/(v1 + 0.05)
 
ratio1 = (v2 + 0.05)/(v1 + 0.05)
Line 136: Line 141:  
ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2
 
ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2
 
end
 
end
return (ratio1 + bias > ratio2) and c2 or c3
+
 +
if css then
 +
local c1 = args[1] or ''
 +
if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
 +
mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
 +
c1 = '#' .. c1
 +
end
 +
if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
 +
mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
 +
c2 = '#' .. c2
 +
end
 +
if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
 +
mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
 +
c3 = '#' .. c3
 +
end
 +
return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';'
 +
end
 +
 +
return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or ''
 
end
 
end
   Line 167: Line 190:  
end
 
end
   −
local slist = mw.text.split(style or '', ';')
+
local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '&#35;', '#'), ';')
 
for k = 1,#slist do
 
for k = 1,#slist do
s = slist[k]
+
local s = slist[k]
 
local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' )
 
local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' )
 
k = k or ''
 
k = k or ''
Anonymous user

Navigation menu