Jackmcbarn has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/159629

Change subject: Don't output a semicolon at the end of CSS
......................................................................

Don't output a semicolon at the end of CSS

It's not necessary, it makes the output bigger, and some pages have enough
elements with CSS that it does make an actual difference.

Change-Id: I80d471899c7e04a8a4876c205198a8c0d0b1f281
---
M engines/LuaCommon/lualib/mw.html.lua
M tests/engines/LuaCommon/HtmlLibraryTests.lua
2 files changed, 16 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Scribunto 
refs/changes/29/159629/1

diff --git a/engines/LuaCommon/lualib/mw.html.lua 
b/engines/LuaCommon/lualib/mw.html.lua
index 9462cec..5f0f246 100644
--- a/engines/LuaCommon/lualib/mw.html.lua
+++ b/engines/LuaCommon/lualib/mw.html.lua
@@ -82,7 +82,8 @@
 --
 -- @param s
 local function htmlEncode( s )
-       return string.gsub( s, '[<>&"]', htmlencodeMap )
+       -- The parentheses ensure that there is only one return value
+       return ( string.gsub( s, '[<>&"]', htmlencodeMap ) )
 end
 
  local function cssEncode( s )
@@ -104,16 +105,18 @@
                end
                if #t.styles > 0 then
                        table.insert( ret, ' style="' )
+                       local css = {}
                        for i, prop in ipairs( t.styles ) do
                                if type( prop ) ~= 'table' then -- added with 
cssText()
-                                       table.insert( ret, htmlEncode( prop ) 
.. ';' )
+                                       table.insert( css, htmlEncode( prop ) )
                                else -- added with css()
                                        table.insert(
-                                               ret,
-                                               htmlEncode( cssEncode( 
prop.name ) .. ':' .. cssEncode( prop.val ) ) .. ';'
+                                               css,
+                                               htmlEncode( cssEncode( 
prop.name ) .. ':' .. cssEncode( prop.val ) )
                                        )
                                end
                        end
+                       table.insert( ret, table.concat( css, ';' ) )
                        table.insert( ret, '"' )
                end
                if t.selfClosing then
diff --git a/tests/engines/LuaCommon/HtmlLibraryTests.lua 
b/tests/engines/LuaCommon/HtmlLibraryTests.lua
index de69828..b448056 100644
--- a/tests/engines/LuaCommon/HtmlLibraryTests.lua
+++ b/tests/engines/LuaCommon/HtmlLibraryTests.lua
@@ -207,11 +207,11 @@
        },
        { name = 'mw.html.css', func = testHelper, type='ToString',
          args = { getEmptyTestDiv(), 'css', 'foo', 'bar' },
-         expect = { '<div style="foo:bar;"></div>' }
+         expect = { '<div style="foo:bar"></div>' }
        },
        { name = 'mw.html.css (numeric arguments)', func = testHelper, 
type='ToString',
          args = { getEmptyTestDiv(), 'css', 123, 456 },
-         expect = { '<div style="123:456;"></div>' }
+         expect = { '<div style="123:456"></div>' }
        },
        { name = 'mw.html.css (nil noop)', func = testHelper, type='ToString',
          args = { getEmptyTestDiv(), 'css', 'foo', nil },
@@ -231,7 +231,7 @@
        },
        { name = 'mw.html.css (table)', func = testHelper, type='ToString',
          args = { getEmptyTestDiv(), 'css', testAttrs },
-         expect = { '<div style="ab:cd;foo:bar;"></div>' }
+         expect = { '<div style="ab:cd;foo:bar"></div>' }
        },
        { name = 'mw.html.css (invalid table)', func = testHelper, 
type='ToString',
          args = { getEmptyTestDiv(), 'css', { foo = 'bar', ab = true } },
@@ -239,11 +239,11 @@
        },
        { name = 'mw.html.cssText', func = testHelper, type='ToString',
          args = { getEmptyTestDiv(), 'cssText', 'Unit tests, ftw' },
-         expect = { '<div style="Unit tests, ftw;"></div>' }
+         expect = { '<div style="Unit tests, ftw"></div>' }
        },
        { name = 'mw.html.cssText (numeric argument)', func = testHelper, 
type='ToString',
          args = { getEmptyTestDiv(), 'cssText', 123 },
-         expect = { '<div style="123;"></div>' }
+         expect = { '<div style="123"></div>' }
        },
        { name = 'mw.html.cssText (invalid value)', func = testHelper, 
type='ToString',
          args = { getEmptyTestDiv(), 'cssText', {} },
@@ -263,11 +263,11 @@
        },
        { name = 'mw.html attribute escaping (CSS)', func = testHelper, 
type='ToString',
          args = { getEmptyTestDiv(), 'css', 'mu"ha', 'ha"ha' },
-         expect = { '<div style="mu&quot;ha:ha&quot;ha;"></div>' }
+         expect = { '<div style="mu&quot;ha:ha&quot;ha"></div>' }
        },
        { name = 'mw.html attribute escaping (CSS raw)', func = testHelper, 
type='ToString',
          args = { getEmptyTestDiv(), 'cssText', 'mu"ha:-ha"ha' },
-         expect = { '<div style="mu&quot;ha:-ha&quot;ha;"></div>' }
+         expect = { '<div style="mu&quot;ha:-ha&quot;ha"></div>' }
        },
        { name = 'mw.html.addClass (nil)', func = testHelper, type='ToString',
          args = { getEmptyTestDiv(), 'addClass' },
@@ -284,7 +284,7 @@
          expect = { '<div class="foo bar"></div>' }
        },
        { name = 'mw.html.css.cssText.css', func = testCssAndCssText, 
type='ToString',
-         expect = { '<div style="foo:bar;abc:def;g:h;"></div>' }
+         expect = { '<div style="foo:bar;abc:def;g:h"></div>' }
        },
        { name = 'mw.html.tag (using done)', func = testTagDone, 
type='ToString',
          expect = { '<div><span></span></div>' }
@@ -330,7 +330,7 @@
        { name = 'mw.html complex test', func = testComplex, type='ToString',
          expect = {
                '<div class="firstClass" what="ever"><meh whynot="Русский"><hr 
a="b" /></meh>' ..
-               '<hr /><div abc="def" style="width:-1px;"></div></div>'
+               '<hr /><div abc="def" style="width:-1px"></div></div>'
          }
        },
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/159629
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I80d471899c7e04a8a4876c205198a8c0d0b1f281
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Scribunto
Gerrit-Branch: master
Gerrit-Owner: Jackmcbarn <jackmcb...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to