parse `option` element correctly (#869)
authorAlex Lam S.L <alexlamsl@gmail.com>
Sat, 25 Nov 2017 21:57:59 +0000 (05:57 +0800)
committerGitHub <noreply@github.com>
Sat, 25 Nov 2017 21:57:59 +0000 (05:57 +0800)
fixes #866

src/htmlparser.js
tests/minifier.js

index 7b54b9d..0d7814b 100644 (file)
@@ -70,7 +70,7 @@ var inline = makeMap('a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,co
 
 // Elements that you can, intentionally, leave open
 // (and which close themselves)
-var closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source');
+var closeSelf = makeMap('colgroup,dd,dt,li,option,p,td,tfoot,th,thead,tr,source');
 
 // Attributes that have their values filled in disabled='disabled'
 var fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected');
index 056aa8b..979f666 100644 (file)
@@ -2996,6 +2996,16 @@ QUnit.test('auto-generated tags', function(assert) {
     includeAutoGeneratedTags: false,
     removeOptionalTags: true
   }), output);
+
+  input = '<select><option>foo<option>bar</select>';
+  assert.equal(minify(input, { includeAutoGeneratedTags: false }), input);
+  output = '<select><option>foo</option><option>bar</option></select>';
+  assert.equal(minify(input, { includeAutoGeneratedTags: true }), output);
+
+  input = '<datalist><option label="A" value="1"><option label="B" value="2"></datalist>';
+  assert.equal(minify(input, { includeAutoGeneratedTags: false }), input);
+  output = '<datalist><option label="A" value="1"></option><option label="B" value="2"></option></datalist>';
+  assert.equal(minify(input, { includeAutoGeneratedTags: true }), output);
 });
 
 QUnit.test('sort attributes', function(assert) {