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

Unified Diff: pkg/analyzer_experimental/bin/formatter.dart

Issue 23125002: Provisional formatter main. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer_experimental/bin/formatter.dart
===================================================================
--- pkg/analyzer_experimental/bin/formatter.dart (revision 0)
+++ pkg/analyzer_experimental/bin/formatter.dart (revision 0)
@@ -0,0 +1,93 @@
+#!/usr/bin/env dart
+
+// Copyright (c) 2013, 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.
+
+import 'dart:io';
+
+import 'package:args/args.dart';
+
+import 'package:analyzer_experimental/src/services/formatter_impl.dart';
+
+
+const BINARY_NAME = 'dartfmt';
+final argParser = _initArgParser();
+
+void main() {
+ var options = argParser.parse(new Options().arguments);
+ if (options['help']) {
+ _printUsage();
+ return;
+ }
+ if (options.rest.isEmpty) {
+ _formatStdin(options);
+ } else {
+ _formatFiles(options.rest);
+ }
+}
+
+_formatFiles(files) {
+ for (var file in files) {
+ _formatFile(file);
+ }
+}
+
+_formatFile(path) {
+ var buffer = new StringBuffer();
+ var file = new File(path);
+ file.openRead()
+ .transform(new StringDecoder())
+ .listen((data) => buffer.write(data),
+ onError: (error) => print('Error, could not open "$path"'),
+ onDone: () => print(_formatCU(buffer.toString())));
+}
+
+_formatStdin(options) {
+ _log('not supported yet!');
+// stdin.transform(new StringDecoder())
+// .listen((String data) => print(data),
+// onError: (error) => print('Error reading from stdin'),
+// onDone: () => print('Finished reading data'));
+}
+
+/// Initialize the arg parser instance.
+ArgParser _initArgParser() {
+ // NOTE: these flags are placeholders only!
+ var parser = new ArgParser();
+ parser.addFlag('write', abbr: 'w', negatable: false,
+ help: 'Write reformatted sources to files (overwriting contents). '
+ 'Do not print reformatted sources to standard output.');
+ parser.addFlag('help', abbr: 'h', negatable: false,
+ help: 'Print this usage information.');
+ return parser;
+}
+
+
+/// Displays usage information.
+_printUsage() {
+ var buffer = new StringBuffer();
+ buffer..write('$BINARY_NAME formats Dart programs.')
+ ..write('\n\n')
+ ..write('Without an explicit path, $BINARY_NAME processes the standard '
+ 'input. Given a file, it operates on that file; given a '
+ 'directory, it operates on all .dart files in that directory, '
+ 'recursively. (Files starting with a period are ignored.) By '
+ 'default, $BINARY_NAME prints the reformatted sources to '
+ 'standard output.')
+ ..write('\n\n')
+ ..write('Supported flags are:')
+ ..write('Usage: $BINARY_NAME [flags] [path...]\n\n')
+ ..write('${argParser.getUsage()}\n\n');
+ _log(buffer.toString());
+}
+
+/// Format the given [src] as a compilation unit.
+String _formatCU(src, {options: const FormatterOptions()}) =>
+ new CodeFormatter(options).format(CodeKind.COMPILATION_UNIT, src);
+
+/// Log the given [msg].
+_log(String msg) {
+ //TODO(pquitslund): add proper log support
+ print(msg);
+}
Property changes on: pkg/analyzer_experimental/bin/formatter.dart
___________________________________________________________________
Added: svn:executable
+ *
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698