| Index: dart_style/lib/src/debug.dart
|
| diff --git a/dart_style/lib/src/debug.dart b/dart_style/lib/src/debug.dart
|
| deleted file mode 100644
|
| index 47ca7fe41cbf7d1e0d82a582cd69006e4e826733..0000000000000000000000000000000000000000
|
| --- a/dart_style/lib/src/debug.dart
|
| +++ /dev/null
|
| @@ -1,216 +0,0 @@
|
| -// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -/// Internal debugging utilities.
|
| -library dart_style.src.debug;
|
| -
|
| -import 'dart:math' as math;
|
| -
|
| -import 'chunk.dart';
|
| -import 'line_splitting/rule_set.dart';
|
| -import 'rule/rule.dart';
|
| -
|
| -/// Set this to `true` to turn on diagnostic output while building chunks.
|
| -bool traceChunkBuilder = false;
|
| -
|
| -/// Set this to `true` to turn on diagnostic output while writing lines.
|
| -bool traceLineWriter = false;
|
| -
|
| -/// Set this to `true` to turn on diagnostic output while line splitting.
|
| -bool traceSplitter = false;
|
| -
|
| -bool useAnsiColors = false;
|
| -
|
| -const unicodeSection = "\u00a7";
|
| -const unicodeMidDot = "\u00b7";
|
| -
|
| -/// The whitespace prefixing each line of output.
|
| -String _indent = "";
|
| -
|
| -void indent() {
|
| - _indent = " $_indent";
|
| -}
|
| -
|
| -void unindent() {
|
| - _indent = _indent.substring(2);
|
| -}
|
| -
|
| -/// Constants for ANSI color escape codes.
|
| -final _cyan = _color("\u001b[36m");
|
| -final _gray = _color("\u001b[1;30m");
|
| -final _green = _color("\u001b[32m");
|
| -final _red = _color("\u001b[31m");
|
| -final _magenta = _color("\u001b[35m");
|
| -final _none = _color("\u001b[0m");
|
| -final _noColor = _color("\u001b[39m");
|
| -final _bold = _color("\u001b[1m");
|
| -
|
| -/// Prints [message] to stdout with each line correctly indented.
|
| -void log([message]) {
|
| - if (message == null) {
|
| - print("");
|
| - return;
|
| - }
|
| -
|
| - print(_indent + message.toString().replaceAll("\n", "\n$_indent"));
|
| -}
|
| -
|
| -/// Wraps [message] in gray ANSI escape codes if enabled.
|
| -String gray(message) => "$_gray$message$_none";
|
| -
|
| -/// Wraps [message] in green ANSI escape codes if enabled.
|
| -String green(message) => "$_green$message$_none";
|
| -
|
| -/// Wraps [message] in bold ANSI escape codes if enabled.
|
| -String bold(message) => "$_bold$message$_none";
|
| -
|
| -/// Prints [chunks] to stdout, one chunk per line, with detailed information
|
| -/// about each chunk.
|
| -void dumpChunks(int start, List<Chunk> chunks) {
|
| - if (chunks.isEmpty) return;
|
| -
|
| - // Show the spans as vertical bands over their range.
|
| - var spans = new Set();
|
| - addSpans(chunks) {
|
| - for (var chunk in chunks) {
|
| - spans.addAll(chunk.spans);
|
| -
|
| - addSpans(chunk.blockChunks);
|
| - }
|
| - }
|
| -
|
| - addSpans(chunks);
|
| -
|
| - spans = spans.toList();
|
| -
|
| - var rules = chunks
|
| - .map((chunk) => chunk.rule)
|
| - .where((rule) => rule != null && rule is! HardSplitRule)
|
| - .toSet();
|
| -
|
| - var rows = [];
|
| -
|
| - addChunk(chunk, prefix, index) {
|
| - var row = [];
|
| - row.add("$prefix$index:");
|
| -
|
| - if (chunk.text.length > 70) {
|
| - row.add(chunk.text.substring(0, 70));
|
| - } else {
|
| - row.add(chunk.text);
|
| - }
|
| -
|
| - var spanBars = "";
|
| - for (var span in spans) {
|
| - spanBars += chunk.spans.contains(span) ? "|" : " ";
|
| - }
|
| - row.add(spanBars);
|
| -
|
| - writeIf(predicate, String callback()) {
|
| - if (predicate) {
|
| - row.add(callback());
|
| - } else {
|
| - row.add("");
|
| - }
|
| - }
|
| -
|
| - if (chunk.rule != null) {
|
| - row.add(chunk.isHardSplit ? "" : chunk.rule.toString());
|
| -
|
| - var outerRules = chunk.rule.outerRules.toSet().intersection(rules);
|
| - writeIf(outerRules.isNotEmpty, () => "-> ${outerRules.join(" ")}");
|
| - } else {
|
| - row.add("(no rule)");
|
| -
|
| - // Outer rules.
|
| - row.add("");
|
| - }
|
| -
|
| - writeIf(chunk.indent != null && chunk.indent != 0,
|
| - () => "indent ${chunk.indent}");
|
| -
|
| - writeIf(chunk.nesting != null && chunk.nesting != 0,
|
| - () => "nest ${chunk.nesting}");
|
| -
|
| - writeIf(chunk.flushLeft != null && chunk.flushLeft, () => "flush");
|
| -
|
| - rows.add(row);
|
| -
|
| - for (var j = 0; j < chunk.blockChunks.length; j++) {
|
| - addChunk(chunk.blockChunks[j], "$prefix$index.", j);
|
| - }
|
| - }
|
| -
|
| - var i = start;
|
| - for (var chunk in chunks) {
|
| - addChunk(chunk, "", i);
|
| - i++;
|
| - }
|
| -
|
| - var rowWidths = new List.filled(rows.first.length, 0);
|
| - for (var row in rows) {
|
| - for (var i = 0; i < row.length; i++) {
|
| - rowWidths[i] = math.max(rowWidths[i], row[i].length);
|
| - }
|
| - }
|
| -
|
| - var buffer = new StringBuffer();
|
| - for (var row in rows) {
|
| - for (var i = 0; i < row.length; i++) {
|
| - var cell = row[i].padRight(rowWidths[i]);
|
| -
|
| - if (i != 1) cell = gray(cell);
|
| -
|
| - buffer.write(cell);
|
| - buffer.write(" ");
|
| - }
|
| -
|
| - buffer.writeln();
|
| - }
|
| -
|
| - print(buffer.toString());
|
| -}
|
| -
|
| -/// Convert the line to a [String] representation.
|
| -///
|
| -/// It will determine how best to split it into multiple lines of output and
|
| -/// return a single string that may contain one or more newline characters.
|
| -void dumpLines(List<Chunk> chunks, int firstLineIndent, SplitSet splits) {
|
| - var buffer = new StringBuffer();
|
| -
|
| - writeIndent(indent) => buffer.write(gray("| " * (indent ~/ 2)));
|
| -
|
| - writeChunksUnsplit(List<Chunk> chunks) {
|
| - for (var chunk in chunks) {
|
| - buffer.write(chunk.text);
|
| - if (chunk.spaceWhenUnsplit) buffer.write(" ");
|
| -
|
| - // Recurse into the block.
|
| - writeChunksUnsplit(chunk.blockChunks);
|
| - }
|
| - }
|
| -
|
| - writeIndent(firstLineIndent);
|
| -
|
| - for (var i = 0; i < chunks.length - 1; i++) {
|
| - var chunk = chunks[i];
|
| - buffer.write(chunk.text);
|
| -
|
| - if (splits.shouldSplitAt(i)) {
|
| - for (var j = 0; j < (chunk.isDouble ? 2 : 1); j++) {
|
| - buffer.writeln();
|
| - writeIndent(splits.getColumn(i));
|
| - }
|
| - } else {
|
| - writeChunksUnsplit(chunk.blockChunks);
|
| -
|
| - if (chunk.spaceWhenUnsplit) buffer.write(" ");
|
| - }
|
| - }
|
| -
|
| - buffer.write(chunks.last.text);
|
| - log(buffer);
|
| -}
|
| -
|
| -String _color(String ansiEscape) => useAnsiColors ? ansiEscape : "";
|
|
|