Index: dart_style/lib/src/dart_formatter.dart |
diff --git a/dart_style/lib/src/dart_formatter.dart b/dart_style/lib/src/dart_formatter.dart |
deleted file mode 100644 |
index fc2e789384973ca629ed4e61363b1115cd956579..0000000000000000000000000000000000000000 |
--- a/dart_style/lib/src/dart_formatter.dart |
+++ /dev/null |
@@ -1,129 +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. |
- |
-library dart_style.src.dart_formatter; |
- |
-import 'dart:math' as math; |
- |
-import 'package:analyzer/analyzer.dart'; |
-import 'package:analyzer/src/generated/parser.dart'; |
-import 'package:analyzer/src/generated/scanner.dart'; |
-import 'package:analyzer/src/generated/source.dart'; |
-import 'package:analyzer/src/string_source.dart'; |
- |
-import 'error_listener.dart'; |
-import 'formatter_exception.dart'; |
-import 'source_code.dart'; |
-import 'source_visitor.dart'; |
- |
-/// Dart source code formatter. |
-class DartFormatter { |
- /// The string that newlines should use. |
- /// |
- /// If not explicitly provided, this is inferred from the source text. If the |
- /// first newline is `\r\n` (Windows), it will use that. Otherwise, it uses |
- /// Unix-style line endings (`\n`). |
- String lineEnding; |
- |
- /// The number of characters allowed in a single line. |
- final int pageWidth; |
- |
- /// The number of characters of indentation to prefix the output lines with. |
- final int indent; |
- |
- /// Creates a new formatter for Dart code. |
- /// |
- /// If [lineEnding] is given, that will be used for any newlines in the |
- /// output. Otherwise, the line separator will be inferred from the line |
- /// endings in the source file. |
- /// |
- /// If [indent] is given, that many levels of indentation will be prefixed |
- /// before each resulting line in the output. |
- DartFormatter({this.lineEnding, int pageWidth, this.indent: 0}) |
- : this.pageWidth = (pageWidth == null) ? 80 : pageWidth; |
- |
- /// Formats the given [source] string containing an entire Dart compilation |
- /// unit. |
- /// |
- /// If [uri] is given, it is a [String] or [Uri] used to identify the file |
- /// being formatted in error messages. |
- String format(String source, {uri}) { |
- if (uri == null) { |
- uri = "<unknown>"; |
- } else if (uri is Uri) { |
- uri = uri.toString(); |
- } else if (uri is String) { |
- // Do nothing. |
- } else { |
- throw new ArgumentError("uri must be `null`, a Uri, or a String."); |
- } |
- |
- return formatSource( |
- new SourceCode(source, uri: uri, isCompilationUnit: true)).text; |
- } |
- |
- /// Formats the given [source] string containing a single Dart statement. |
- String formatStatement(String source) { |
- return formatSource(new SourceCode(source, isCompilationUnit: false)).text; |
- } |
- |
- /// Formats the given [source]. |
- /// |
- /// Returns a new [SourceCode] containing the formatted code and the resulting |
- /// selection, if any. |
- SourceCode formatSource(SourceCode source) { |
- var errorListener = new ErrorListener(); |
- |
- // Tokenize the source. |
- var reader = new CharSequenceReader(source.text); |
- var stringSource = new StringSource(source.text, source.uri); |
- var scanner = new Scanner(stringSource, reader, errorListener); |
- var startToken = scanner.tokenize(); |
- var lineInfo = new LineInfo(scanner.lineStarts); |
- |
- // Infer the line ending if not given one. Do it here since now we know |
- // where the lines start. |
- if (lineEnding == null) { |
- // If the first newline is "\r\n", use that. Otherwise, use "\n". |
- if (scanner.lineStarts.length > 1 && |
- scanner.lineStarts[1] >= 2 && |
- source.text[scanner.lineStarts[1] - 2] == '\r') { |
- lineEnding = "\r\n"; |
- } else { |
- lineEnding = "\n"; |
- } |
- } |
- |
- errorListener.throwIfErrors(); |
- |
- // Parse it. |
- var parser = new Parser(stringSource, errorListener); |
- |
- var node; |
- if (source.isCompilationUnit) { |
- node = parser.parseCompilationUnit(startToken); |
- } else { |
- node = parser.parseStatement(startToken); |
- |
- // Make sure we consumed all of the source. |
- var token = node.endToken.next; |
- if (token.type != TokenType.EOF) { |
- var error = new AnalysisError.con2( |
- stringSource, |
- token.offset, |
- math.max(token.length, 1), |
- ParserErrorCode.UNEXPECTED_TOKEN, |
- [token.lexeme]); |
- |
- throw new FormatterException([error]); |
- } |
- } |
- |
- errorListener.throwIfErrors(); |
- |
- // Format it. |
- var visitor = new SourceVisitor(this, lineInfo, source); |
- return visitor.run(node); |
- } |
-} |