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

Unified Diff: tests/compiler/dart2js/sourcemaps/sourcemap_html_helper.dart

Issue 1678043003: Add Dart code to diff_view (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Update status. Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: tests/compiler/dart2js/sourcemaps/sourcemap_html_helper.dart
diff --git a/tests/compiler/dart2js/sourcemaps/sourcemap_html_helper.dart b/tests/compiler/dart2js/sourcemaps/sourcemap_html_helper.dart
index 52e871d7779b8b36daea279e1b41b96b87b2bb69..3ca926b280cd317b5547f8392387d927c64f0257 100644
--- a/tests/compiler/dart2js/sourcemaps/sourcemap_html_helper.dart
+++ b/tests/compiler/dart2js/sourcemaps/sourcemap_html_helper.dart
@@ -17,6 +17,15 @@ import 'package:compiler/src/js/js.dart' as js;
import 'colors.dart';
import 'sourcemap_helper.dart';
import 'sourcemap_html_templates.dart';
+import 'html_parts.dart';
+
+/// Truncate [input] to [length], adding '...' if truncated.
+String truncate(String input, int length) {
+ if (input.length > length) {
+ return '${input.substring(0, length - 3)}...';
+ }
+ return input;
+}
/// Returns the [index]th color for visualization.
HSV toColor(int index) {
@@ -43,12 +52,13 @@ String toPattern(int index) {
/// Return the html for the [index] line number. If [width] is provided, shorter
/// line numbers will be prefixed with spaces to match the width.
-String lineNumber(int index, [int width]) {
+String lineNumber(int index, {int width, bool useNbsp: false}) {
String text = '${index + 1}';
+ String padding = useNbsp ? ' ' : ' ';
if (width != null && text.length < width) {
- text = (' ' * (width - text.length)) + text;
+ text = (padding * (width - text.length)) + text;
}
- return '<span class="lineNumber">$text </span>';
+ return '<span class="lineNumber">$text$padding</span>';
}
/// Return the html escaped [text].
@@ -277,8 +287,9 @@ String convertAnnotatedCodeToHtml(
if (lines.isNotEmpty) {
lineNoWidth = '${lines.last.lineNo + 1}'.length;
}
+ HtmlPrintContext context = new HtmlPrintContext(lineNoWidth: lineNoWidth);
for (CodeLine line in lines) {
- line.printHtmlOn(htmlBuffer, lineNoWidth);
+ line.printHtmlOn(htmlBuffer, context);
}
return htmlBuffer.toString();
}
@@ -298,20 +309,20 @@ List<CodeLine> convertAnnotatedCodeToCodeLines(
int lastLine;
bool pendingSourceLocationsEnd = false;
- void write(String code, String html) {
+ void write(String code, HtmlPart html) {
if (currentLine != null) {
currentLine.codeBuffer.write(code);
currentLine.htmlParts.add(html);
}
}
- void startLine() {
- lines.add(currentLine = new CodeLine(lines.length));
+ void startLine(int currentOffset) {
+ lines.add(currentLine = new CodeLine(lines.length, currentOffset));
}
void endCurrentLocation() {
if (pendingSourceLocationsEnd) {
- write('', '</a>');
+ write('', const ConstHtmlPart('</a>'));
}
pendingSourceLocationsEnd = false;
}
@@ -321,38 +332,40 @@ List<CodeLine> convertAnnotatedCodeToCodeLines(
if (offset >= code.length) return;
String substring = code.substring(offset, until);
- offset = until;
bool first = true;
if (isLast) {
lastLine = lineIndex;
}
+ int localOffset = 0;
if (isFirst) {
- startLine();
+ startLine(offset + localOffset);
}
for (String line in substring.split('\n')) {
if (!first) {
endCurrentLocation();
- write('', '\n');
+ write('', const NewLine());
lineIndex++;
- startLine();
+ startLine(offset + localOffset);
}
if (pendingSourceLocationsEnd && !colorScheme.showLocationAsSpan) {
if (line.isNotEmpty) {
String before = line.substring(0, 1);
- write(before, escape(before));
+ write(before, new HtmlText(before));
endCurrentLocation();
String after = line.substring(1);
- write(after, escape(after));
+ write(after, new HtmlText(after));
}
} else {
- write(line, escape(line));
+ write(line, new HtmlText(line));
}
first = false;
+ localOffset += line.length + 1;
}
if (isFirst) {
firstLine = lineIndex;
}
+ offset = until;
}
void insertAnnotations(List<Annotation> annotations) {
@@ -384,29 +397,17 @@ List<CodeLine> convertAnnotatedCodeToCodeLines(
String onclick = elementScheme.onClick(id, ids);
String onmouseover = elementScheme.onMouseOver(id, ids);
String onmouseout = elementScheme.onMouseOut(id, ids);
- write('', '<a');
- if (href != null) {
- write('', ' href="${href}"');
- }
- if (name != null) {
- write('', ' name="${name}"');
- }
- if (title != null) {
- write('', ' title="${escape(title)}"');
- }
- write('', ' style="${color}"');
- if (onclick != null) {
- write('', ' onclick="${onclick}"');
- }
- if (onmouseover != null) {
- write('', ' onmouseover="${onmouseover}"');
- }
- if (onmouseout != null) {
- write('', ' onmouseout="${onmouseout}"');
- }
- write('', '>');
+ write('', new AnchorHtmlPart(
+ color: color,
+ name: name,
+ href: href,
+ title: title,
+ onclick: onclick,
+ onmouseover: onmouseover,
+ onmouseout: onmouseout));
pendingSourceLocationsEnd = true;
}
+ currentLine.annotations.addAll(annotations);
if (annotations.last == null) {
endCurrentLocation();
}
@@ -438,30 +439,6 @@ List<CodeLine> convertAnnotatedCodeToCodeLines(
return lines.sublist(start, end);
}
-class CodeLine {
- final int lineNo;
- final StringBuffer codeBuffer = new StringBuffer();
- final List<String> htmlParts = <String>[];
- String _code;
-
- CodeLine(this.lineNo);
-
- String get code {
- if (_code == null) {
- _code = codeBuffer.toString();
- }
- return _code;
- }
-
- void printHtmlOn(StringBuffer htmlBuffer, [int lineNoWidth]) {
- htmlBuffer.write(lineNumber(lineNo, lineNoWidth));
- for (String part in htmlParts) {
- htmlBuffer.write(part);
- }
- }
-}
-
-
/// Computes the HTML representation for a collection of JavaScript code blocks.
String computeJsHtml(Iterable<SourceMapHtmlInfo> infoList) {
@@ -508,7 +485,6 @@ SourceMapHtmlInfo createHtmlInfo(SourceLocationCollection collection,
SourceLocationCollection subcollection =
new SourceLocationCollection(collection);
CodeProcessor codeProcessor = new CodeProcessor(name, subcollection);
- //print('${info.element}:${info.nodeMap.nodes.length}');
for (js.Node node in info.nodeMap.nodes) {
info.nodeMap[node].forEach(
(int targetOffset, List<SourceLocation> sourceLocations) {
@@ -573,6 +549,7 @@ String computeDartHtmlPart(String name,
});
sourceLocationMap.forEach((Uri uri, Map<int, List<SourceLocation>> uriMap) {
SourceFile sourceFile = sourceFileManager.getSourceFile(uri);
+ if (sourceFile == null) return;
StringBuffer codeBuffer = new StringBuffer();
int firstLineIndex;
@@ -595,7 +572,7 @@ String computeDartHtmlPart(String name,
line < firstLineIndex;
line++) {
if (line >= 0) {
- dartCodeBuffer.write(lineNumber(line, lineNoWidth));
+ dartCodeBuffer.write(lineNumber(line, width: lineNoWidth));
dartCodeBuffer.write(sourceFile.getLineText(line));
}
}
@@ -604,7 +581,7 @@ String computeDartHtmlPart(String name,
line <= lastLineIndex + windowSize;
line++) {
if (line < sourceFile.lines) {
- dartCodeBuffer.write(lineNumber(line, lineNoWidth));
+ dartCodeBuffer.write(lineNumber(line, width: lineNoWidth));
dartCodeBuffer.write(sourceFile.getLineText(line));
}
}
@@ -625,7 +602,7 @@ String computeDartHtmlPart(String name,
firstLineIndex = lineIndex;
} else {
for (int line = lastLineIndex + 1; line < lineIndex; line++) {
- codeBuffer.write(lineNumber(line, lineNoWidth));
+ codeBuffer.write(lineNumber(line, width: lineNoWidth));
codeBuffer.write(sourceFile.getLineText(line));
}
}
@@ -640,7 +617,7 @@ String computeDartHtmlPart(String name,
end = locations[i + 1].column;
}
if (i == 0) {
- codeBuffer.write(lineNumber(lineIndex, lineNoWidth));
+ codeBuffer.write(lineNumber(lineIndex, width: lineNoWidth));
codeBuffer.write(line.substring(0, start));
}
codeBuffer.write(
@@ -673,7 +650,7 @@ String computeJsTraceHtmlPart(List<CodePoint> codePoints,
'<tr><th>Node kind</th><th>JS code @ offset</th>'
'<th>Dart code @ mapped location</th><th>file:position:name</th></tr>');
codePoints.forEach((CodePoint codePoint) {
- String jsCode = codePoint.jsCode;
+ String jsCode = truncate(codePoint.jsCode, 50);
if (codePoint.sourceLocation != null) {
int index = collection.getIndex(codePoint.sourceLocation);
if (index != null) {
@@ -700,7 +677,8 @@ String computeJsTraceHtmlPart(List<CodePoint> codePoints,
if (codePoint.sourceLocation == null) {
//buffer.write('<td></td>');
} else {
- buffer.write('<td class="code">${codePoint.dartCode}</td>');
+ String dartCode = truncate(codePoint.dartCode, 50);
+ buffer.write('<td class="code">${dartCode}</td>');
buffer.write('<td>${escape(codePoint.sourceLocation.shortText)}</td>');
}
buffer.write('</tr>');

Powered by Google App Engine
This is Rietveld 408576698