Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: lib/src/treebuilder.dart

Issue 987433005: remove most string concat, fixes #7 (Closed) Base URL: git@github.com:dart-lang/html.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« lib/src/tokenizer.dart ('K') | « lib/src/tokenizer.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /// Internals to the tree builders. 1 /// Internals to the tree builders.
2 library treebuilder; 2 library treebuilder;
3 3
4 import 'dart:collection'; 4 import 'dart:collection';
5 import 'package:html/dom.dart'; 5 import 'package:html/dom.dart';
6 import 'package:html/parser.dart' show getElementNameTuple; 6 import 'package:html/parser.dart' show getElementNameTuple;
7 import 'package:source_span/source_span.dart'; 7 import 'package:source_span/source_span.dart';
8 import 'constants.dart'; 8 import 'constants.dart';
9 import 'list_proxy.dart'; 9 import 'list_proxy.dart';
10 import 'token.dart'; 10 import 'token.dart';
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 } 317 }
318 318
319 /// Insert [data] as text in the current node, positioned before the 319 /// Insert [data] as text in the current node, positioned before the
320 /// start of node [refNode] or to the end of the node's text. 320 /// start of node [refNode] or to the end of the node's text.
321 static void _insertText(Node parent, String data, FileSpan span, 321 static void _insertText(Node parent, String data, FileSpan span,
322 [Element refNode]) { 322 [Element refNode]) {
323 var nodes = parent.nodes; 323 var nodes = parent.nodes;
324 if (refNode == null) { 324 if (refNode == null) {
325 if (nodes.length > 0 && nodes.last is Text) { 325 if (nodes.length > 0 && nodes.last is Text) {
326 Text last = nodes.last; 326 Text last = nodes.last;
327 last.data = '${last.data}$data'; 327 last.appendData(data);
328 328
329 if (span != null) { 329 if (span != null) {
330 last.sourceSpan = 330 last.sourceSpan =
331 span.file.span(last.sourceSpan.start.offset, span.end.offset); 331 span.file.span(last.sourceSpan.start.offset, span.end.offset);
332 } 332 }
333 } else { 333 } else {
334 nodes.add(new Text(data)..sourceSpan = span); 334 nodes.add(new Text(data)..sourceSpan = span);
335 } 335 }
336 } else { 336 } else {
337 int index = nodes.indexOf(refNode); 337 int index = nodes.indexOf(refNode);
338 if (index > 0 && nodes[index - 1] is Text) { 338 if (index > 0 && nodes[index - 1] is Text) {
339 Text last = nodes[index - 1]; 339 Text last = nodes[index - 1];
340 last.data = '${last.data}$data'; 340 last.appendData(data);
341 } else { 341 } else {
342 nodes.insert(index, new Text(data)..sourceSpan = span); 342 nodes.insert(index, new Text(data)..sourceSpan = span);
343 } 343 }
344 } 344 }
345 } 345 }
346 346
347 /// Get the foster parent element, and sibling to insert before 347 /// Get the foster parent element, and sibling to insert before
348 /// (or null) when inserting a misnested table node 348 /// (or null) when inserting a misnested table node
349 List<Node> getTableMisnestedNodePosition() { 349 List<Node> getTableMisnestedNodePosition() {
350 // The foster parent element is the one which comes before the most 350 // The foster parent element is the one which comes before the most
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 Document getDocument() => document; 399 Document getDocument() => document;
400 400
401 /// Return the final fragment. 401 /// Return the final fragment.
402 DocumentFragment getFragment() { 402 DocumentFragment getFragment() {
403 //XXX assert innerHTML 403 //XXX assert innerHTML
404 var fragment = new DocumentFragment(); 404 var fragment = new DocumentFragment();
405 openElements[0].reparentChildren(fragment); 405 openElements[0].reparentChildren(fragment);
406 return fragment; 406 return fragment;
407 } 407 }
408 } 408 }
OLDNEW
« lib/src/tokenizer.dart ('K') | « lib/src/tokenizer.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698