OLD | NEW |
1 <!-- | |
2 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
3 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
4 // found in the LICENSE file. | 3 // found in the LICENSE file. |
5 --> | |
6 <script> | |
7 import "dart:sky"; | 4 import "dart:sky"; |
8 | 5 |
9 final kEntityMap = new Map.fromIterable([ | 6 final kEntityMap = new Map.fromIterable([ |
10 ['\u00a0', ' '], | 7 ['\u00a0', ' '], |
11 ['&', '&'], | 8 ['&', '&'], |
12 ['<', '<'], | 9 ['<', '<'], |
13 ['>', '>'], | 10 ['>', '>'], |
14 ['"', '"'], | 11 ['"', '"'], |
15 ], key: (item) => item[0], value: (item) => item[1]); | 12 ], key: (item) => item[0], value: (item) => item[1]); |
16 | 13 |
(...skipping 18 matching lines...) Expand all Loading... |
35 buffer += ' '; | 32 buffer += ' '; |
36 buffer += attribute.name; | 33 buffer += attribute.name; |
37 buffer += '="'; | 34 buffer += '="'; |
38 buffer += escapeText(attribute.value, kAttributeEscapePattern); | 35 buffer += escapeText(attribute.value, kAttributeEscapePattern); |
39 buffer += '"'; | 36 buffer += '"'; |
40 } | 37 } |
41 | 38 |
42 return buffer; | 39 return buffer; |
43 } | 40 } |
44 | 41 |
45 Node getFirstChild(Node node) { | 42 Node getFirstChild(ParentNode node) { |
46 if (node is HTMLTemplateElement) | 43 if (node is HTMLTemplateElement) |
47 return node.content.firstChild; | 44 return node.content.firstChild; |
48 return node.firstChild; | 45 return node.firstChild; |
49 } | 46 } |
50 | 47 |
51 Node getLastChild(Node node) { | 48 Node getLastChild(ParentNode node) { |
52 if (node is HTMLTemplateElement) | 49 if (node is HTMLTemplateElement) |
53 return node.content.lastChild; | 50 return node.content.lastChild; |
54 return node.lastChild; | 51 return node.lastChild; |
55 } | 52 } |
56 | 53 |
57 String serializeChildren(Node node, int depth) { | 54 String serializeChildren(ParentNode node, int depth) { |
58 String buffer = ''; | 55 String buffer = ''; |
59 Node firstChild = getFirstChild(node); | 56 Node firstChild = getFirstChild(node); |
60 Node lastChild = getLastChild(node); | 57 Node lastChild = getLastChild(node); |
61 if (firstChild is Element && depth != 0) | 58 if (firstChild is Element && depth != 0) |
62 buffer += '\n' + (kIndent * depth); | 59 buffer += '\n' + (kIndent * depth); |
63 for (Node child = firstChild; child != null; child = child.nextSibling) { | 60 for (Node child = firstChild; child != null; child = child.nextSibling) { |
64 buffer += serializeNode(child, depth); | 61 buffer += serializeNode(child, depth); |
65 if (child is Element && child.nextSibling is Element) | 62 if (child is Element && child.nextSibling is Element) |
66 buffer += '\n' + (kIndent * depth); | 63 buffer += '\n' + (kIndent * depth); |
67 } | 64 } |
68 if (lastChild is Element) { | 65 if (lastChild is Element) { |
69 buffer += '\n'; | 66 buffer += '\n'; |
70 if (depth != 0) | 67 if (depth != 0) |
71 buffer += kIndent * (depth - 1); | 68 buffer += kIndent * (depth - 1); |
72 } | 69 } |
73 return buffer; | 70 return buffer; |
74 } | 71 } |
75 | 72 |
76 String serializeElement(Element element, int depth) { | 73 String serializeElement(Element element, int depth) { |
77 String buffer = '<' + element.tagName + serializeAttributes(element) + '>'; | 74 String buffer = '<' + element.tagName + serializeAttributes(element) + '>'; |
78 buffer += serializeChildren(element, depth + 1); | 75 buffer += serializeChildren(element, depth + 1); |
79 buffer += '</' + element.tagName + '>'; | 76 buffer += '</' + element.tagName + '>'; |
80 return buffer; | 77 return buffer; |
81 } | 78 } |
82 | 79 |
83 String serializeText(Node node) { | 80 String serializeText(Text node) { |
84 Node parent = node.parentNode; | 81 Node parent = node.parentNode; |
85 if (parent != null && (parent is HTMLScriptElement || parent is HTMLStyleEleme
nt)) | 82 if (parent != null && (parent is HTMLScriptElement || parent is HTMLStyleEleme
nt)) |
86 return node.data; | 83 return node.data; |
87 return escapeText(node.data, kTextEscapePattern); | 84 return escapeText(node.data, kTextEscapePattern); |
88 } | 85 } |
89 | 86 |
90 String serializeNode(Node node, [int depth = 0]) { | 87 String serializeNode(Node node, [int depth = 0]) { |
91 if (node is Text) | 88 if (node is Text) |
92 return serializeText(node); | 89 return serializeText(node); |
93 if (node is Element) | 90 if (node is Element) |
94 return serializeElement(node, depth); | 91 return serializeElement(node, depth); |
95 if (node is Document || node is ShadowRoot) | 92 if (node is Document || node is ShadowRoot) |
96 return serializeChildren(node, depth); | 93 return serializeChildren(node, depth); |
97 throw new Error('Cannot serialize node'); | 94 throw new Exception('Cannot serialize node'); |
98 } | 95 } |
99 </script> | |
OLD | NEW |