From 66abc163b64405600cd7af60db6116acd19720d8 Mon Sep 17 00:00:00 2001 From: ofagbemi Date: Fri, 25 Jul 2014 11:15:00 -0400 Subject: [PATCH 1/7] Added a quick fix to issue #1262 Better whitespace handling in toNodeList --- lib/mock/test_bed.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/mock/test_bed.dart b/lib/mock/test_bed.dart index d1c54da81..357129c7d 100644 --- a/lib/mock/test_bed.dart +++ b/lib/mock/test_bed.dart @@ -59,7 +59,8 @@ class TestBed { */ List toNodeList(html) { var div = new DivElement(); - div.setInnerHtml(html, treeSanitizer: new NullTreeSanitizer()); + var sanitizedHtml = html.split('\n').map((line) => line.trim()).join(' '); + div.setInnerHtml(sanitizedHtml, treeSanitizer: new NullTreeSanitizer()); var nodes = []; for (var node in div.nodes) { nodes.add(node); From 4d85bd0b83d7d0fd877a1673a8dc385d1fd3f9bd Mon Sep 17 00:00:00 2001 From: Jare Fagbemi Date: Sat, 26 Jul 2014 14:42:04 -0400 Subject: [PATCH 2/7] fix(TestBed): add whitespace handling to compile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add whitespace handling to the TestBed’s compile function. Previously, strings passed with leading or trailing whitespace would be compiled incorrectly. Now, valid HTML with arbitrary whitespace in and surrounding it can be compiled properly. --- lib/mock/test_bed.dart | 12 +++++++++++- test/mock/test_bed_spec.dart | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/mock/test_bed.dart b/lib/mock/test_bed.dart index 357129c7d..ccefe3fac 100644 --- a/lib/mock/test_bed.dart +++ b/lib/mock/test_bed.dart @@ -54,12 +54,22 @@ class TestBed { return rootElement; } + String _handleWhitespace(html) { + return html + .split('\n') + .map((line) { + var trimmed = line.trim(); + return trimmed + + (trimmed.isEmpty || trimmed.endsWith('>') ? '' : ' '); + }) + .join(); + } /** * Convert an [html] String to a [List] of [Element]s. */ List toNodeList(html) { var div = new DivElement(); - var sanitizedHtml = html.split('\n').map((line) => line.trim()).join(' '); + var sanitizedHtml = _handleWhitespace(html); div.setInnerHtml(sanitizedHtml, treeSanitizer: new NullTreeSanitizer()); var nodes = []; for (var node in div.nodes) { diff --git a/test/mock/test_bed_spec.dart b/test/mock/test_bed_spec.dart index 661c5f4ac..5c1ea4276 100644 --- a/test/mock/test_bed_spec.dart +++ b/test/mock/test_bed_spec.dart @@ -27,6 +27,24 @@ void main() { expect(directiveInst.destroyed).toBe(true); }); + it('should handle whitespace cleanly', () { + var root = _.compile(''' +
+

+

+
+ + '''); + + expect(root.runtimeType).toBe(DivElement); + expect(_.rootElements[1].runtimeType).toBe(SpanElement); + expect(_.rootElements.length).toBe(2); + }); + }); } From c2b43141ea11efc2175cc2cb87d22f713cb40106 Mon Sep 17 00:00:00 2001 From: Jare Fagbemi Date: Wed, 13 Aug 2014 08:37:06 -0400 Subject: [PATCH 3/7] Revert "fix(TestBed): add whitespace handling to compile" This reverts commit 4d85bd0b83d7d0fd877a1673a8dc385d1fd3f9bd. --- lib/mock/test_bed.dart | 12 +----------- test/mock/test_bed_spec.dart | 18 ------------------ 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/lib/mock/test_bed.dart b/lib/mock/test_bed.dart index ccefe3fac..357129c7d 100644 --- a/lib/mock/test_bed.dart +++ b/lib/mock/test_bed.dart @@ -54,22 +54,12 @@ class TestBed { return rootElement; } - String _handleWhitespace(html) { - return html - .split('\n') - .map((line) { - var trimmed = line.trim(); - return trimmed + - (trimmed.isEmpty || trimmed.endsWith('>') ? '' : ' '); - }) - .join(); - } /** * Convert an [html] String to a [List] of [Element]s. */ List toNodeList(html) { var div = new DivElement(); - var sanitizedHtml = _handleWhitespace(html); + var sanitizedHtml = html.split('\n').map((line) => line.trim()).join(' '); div.setInnerHtml(sanitizedHtml, treeSanitizer: new NullTreeSanitizer()); var nodes = []; for (var node in div.nodes) { diff --git a/test/mock/test_bed_spec.dart b/test/mock/test_bed_spec.dart index 5c1ea4276..661c5f4ac 100644 --- a/test/mock/test_bed_spec.dart +++ b/test/mock/test_bed_spec.dart @@ -27,24 +27,6 @@ void main() { expect(directiveInst.destroyed).toBe(true); }); - it('should handle whitespace cleanly', () { - var root = _.compile(''' -
-

-

-
- - '''); - - expect(root.runtimeType).toBe(DivElement); - expect(_.rootElements[1].runtimeType).toBe(SpanElement); - expect(_.rootElements.length).toBe(2); - }); - }); } From 1f8d0bd8b0d6a206b43f66d3a8023d77a69c5228 Mon Sep 17 00:00:00 2001 From: Jare Fagbemi Date: Wed, 13 Aug 2014 08:44:41 -0400 Subject: [PATCH 4/7] feat(TestBed): add whitespace handling to compile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add whitespace handling to the TestBed’s compile function. Closes #1262. Previously, strings passed with leading or trailing whitespace would be compiled incorrectly. Now, valid HTML with arbitrary whitespace in and surrounding it can be compiled properly. --- lib/mock/test_bed.dart | 12 +++++++++++- test/mock/test_bed_spec.dart | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/mock/test_bed.dart b/lib/mock/test_bed.dart index 357129c7d..ccefe3fac 100644 --- a/lib/mock/test_bed.dart +++ b/lib/mock/test_bed.dart @@ -54,12 +54,22 @@ class TestBed { return rootElement; } + String _handleWhitespace(html) { + return html + .split('\n') + .map((line) { + var trimmed = line.trim(); + return trimmed + + (trimmed.isEmpty || trimmed.endsWith('>') ? '' : ' '); + }) + .join(); + } /** * Convert an [html] String to a [List] of [Element]s. */ List toNodeList(html) { var div = new DivElement(); - var sanitizedHtml = html.split('\n').map((line) => line.trim()).join(' '); + var sanitizedHtml = _handleWhitespace(html); div.setInnerHtml(sanitizedHtml, treeSanitizer: new NullTreeSanitizer()); var nodes = []; for (var node in div.nodes) { diff --git a/test/mock/test_bed_spec.dart b/test/mock/test_bed_spec.dart index 661c5f4ac..5c1ea4276 100644 --- a/test/mock/test_bed_spec.dart +++ b/test/mock/test_bed_spec.dart @@ -27,6 +27,24 @@ void main() { expect(directiveInst.destroyed).toBe(true); }); + it('should handle whitespace cleanly', () { + var root = _.compile(''' +
+

+

+
+ + '''); + + expect(root.runtimeType).toBe(DivElement); + expect(_.rootElements[1].runtimeType).toBe(SpanElement); + expect(_.rootElements.length).toBe(2); + }); + }); } From d09ca44df92d936e241cecfd2b606cf8b53228ae Mon Sep 17 00:00:00 2001 From: Jare Fagbemi Date: Wed, 13 Aug 2014 08:50:13 -0400 Subject: [PATCH 5/7] Revert c2b4314..1f8d0bd This rolls back to commit c2b43141ea11efc2175cc2cb87d22f713cb40106. --- lib/mock/test_bed.dart | 12 +----------- test/mock/test_bed_spec.dart | 18 ------------------ 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/lib/mock/test_bed.dart b/lib/mock/test_bed.dart index ccefe3fac..357129c7d 100644 --- a/lib/mock/test_bed.dart +++ b/lib/mock/test_bed.dart @@ -54,22 +54,12 @@ class TestBed { return rootElement; } - String _handleWhitespace(html) { - return html - .split('\n') - .map((line) { - var trimmed = line.trim(); - return trimmed + - (trimmed.isEmpty || trimmed.endsWith('>') ? '' : ' '); - }) - .join(); - } /** * Convert an [html] String to a [List] of [Element]s. */ List toNodeList(html) { var div = new DivElement(); - var sanitizedHtml = _handleWhitespace(html); + var sanitizedHtml = html.split('\n').map((line) => line.trim()).join(' '); div.setInnerHtml(sanitizedHtml, treeSanitizer: new NullTreeSanitizer()); var nodes = []; for (var node in div.nodes) { diff --git a/test/mock/test_bed_spec.dart b/test/mock/test_bed_spec.dart index 5c1ea4276..661c5f4ac 100644 --- a/test/mock/test_bed_spec.dart +++ b/test/mock/test_bed_spec.dart @@ -27,24 +27,6 @@ void main() { expect(directiveInst.destroyed).toBe(true); }); - it('should handle whitespace cleanly', () { - var root = _.compile(''' -
-

-

-
- - '''); - - expect(root.runtimeType).toBe(DivElement); - expect(_.rootElements[1].runtimeType).toBe(SpanElement); - expect(_.rootElements.length).toBe(2); - }); - }); } From 32a0513d99d1ba1281af039ebbd8a39c3a60b3ef Mon Sep 17 00:00:00 2001 From: Jare Fagbemi Date: Wed, 13 Aug 2014 08:52:19 -0400 Subject: [PATCH 6/7] feat(TestBed): add whitespace handling to compile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add whitespace handling to the TestBed’s compile function. Closes #1262. Previously, strings passed with leading or trailing whitespace would be compiled incorrectly. Now, valid HTML with arbitrary whitespace in and surrounding it can be compiled properly. --- lib/mock/test_bed.dart | 12 +++++++++++- test/mock/test_bed_spec.dart | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/mock/test_bed.dart b/lib/mock/test_bed.dart index 357129c7d..ccefe3fac 100644 --- a/lib/mock/test_bed.dart +++ b/lib/mock/test_bed.dart @@ -54,12 +54,22 @@ class TestBed { return rootElement; } + String _handleWhitespace(html) { + return html + .split('\n') + .map((line) { + var trimmed = line.trim(); + return trimmed + + (trimmed.isEmpty || trimmed.endsWith('>') ? '' : ' '); + }) + .join(); + } /** * Convert an [html] String to a [List] of [Element]s. */ List toNodeList(html) { var div = new DivElement(); - var sanitizedHtml = html.split('\n').map((line) => line.trim()).join(' '); + var sanitizedHtml = _handleWhitespace(html); div.setInnerHtml(sanitizedHtml, treeSanitizer: new NullTreeSanitizer()); var nodes = []; for (var node in div.nodes) { diff --git a/test/mock/test_bed_spec.dart b/test/mock/test_bed_spec.dart index 661c5f4ac..5c1ea4276 100644 --- a/test/mock/test_bed_spec.dart +++ b/test/mock/test_bed_spec.dart @@ -27,6 +27,24 @@ void main() { expect(directiveInst.destroyed).toBe(true); }); + it('should handle whitespace cleanly', () { + var root = _.compile(''' +
+

+

+
+ + '''); + + expect(root.runtimeType).toBe(DivElement); + expect(_.rootElements[1].runtimeType).toBe(SpanElement); + expect(_.rootElements.length).toBe(2); + }); + }); } From b00bcb330397c83cef96dbdacedfeecc65a177a2 Mon Sep 17 00:00:00 2001 From: ofagbemi Date: Fri, 25 Jul 2014 11:15:00 -0400 Subject: [PATCH 7/7] feat(TestBed): add whitespace handling to compile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add whitespace handling to the TestBed’s compile function. Closes #1262. Previously, strings passed with leading or trailing whitespace would be compiled incorrectly. Now, valid HTML with arbitrary whitespace in and surrounding it can be compiled properly. --- lib/mock/test_bed.dart | 13 ++++++++++++- test/mock/test_bed_spec.dart | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lib/mock/test_bed.dart b/lib/mock/test_bed.dart index d1c54da81..ccefe3fac 100644 --- a/lib/mock/test_bed.dart +++ b/lib/mock/test_bed.dart @@ -54,12 +54,23 @@ class TestBed { return rootElement; } + String _handleWhitespace(html) { + return html + .split('\n') + .map((line) { + var trimmed = line.trim(); + return trimmed + + (trimmed.isEmpty || trimmed.endsWith('>') ? '' : ' '); + }) + .join(); + } /** * Convert an [html] String to a [List] of [Element]s. */ List toNodeList(html) { var div = new DivElement(); - div.setInnerHtml(html, treeSanitizer: new NullTreeSanitizer()); + var sanitizedHtml = _handleWhitespace(html); + div.setInnerHtml(sanitizedHtml, treeSanitizer: new NullTreeSanitizer()); var nodes = []; for (var node in div.nodes) { nodes.add(node); diff --git a/test/mock/test_bed_spec.dart b/test/mock/test_bed_spec.dart index 661c5f4ac..5c1ea4276 100644 --- a/test/mock/test_bed_spec.dart +++ b/test/mock/test_bed_spec.dart @@ -27,6 +27,24 @@ void main() { expect(directiveInst.destroyed).toBe(true); }); + it('should handle whitespace cleanly', () { + var root = _.compile(''' +
+

+

+
+ + '''); + + expect(root.runtimeType).toBe(DivElement); + expect(_.rootElements[1].runtimeType).toBe(SpanElement); + expect(_.rootElements.length).toBe(2); + }); + }); }