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

Side by Side Diff: dart_style/lib/src/formatter_options.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 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
« no previous file with comments | « dart_style/lib/src/formatter_exception.dart ('k') | dart_style/lib/src/io.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 library dart_style.src.formatter_options;
6
7 import 'dart:convert';
8 import 'dart:io';
9
10 import 'source_code.dart';
11
12 /// Global options that affect how the formatter produces and uses its outputs.
13 class FormatterOptions {
14 /// The [OutputReporter] used to show the formatting results.
15 final OutputReporter reporter;
16
17 /// The number of columns that formatted output should be constrained to fit
18 /// within.
19 final int pageWidth;
20
21 /// Whether symlinks should be traversed when formatting a directory.
22 final bool followLinks;
23
24 FormatterOptions(this.reporter,
25 {this.pageWidth: 80, this.followLinks: false});
26 }
27
28 /// How the formatter reports the results it produces.
29 abstract class OutputReporter {
30 /// Prints only the names of files whose contents are different from their
31 /// formatted version.
32 static final dryRun = new _DryRunReporter();
33
34 /// Prints the formatted results of each file to stdout.
35 static final print = new _PrintReporter();
36
37 /// Prints the formatted result and selection info of each file to stdout as
38 /// a JSON map.
39 static final printJson = new _PrintJsonReporter();
40
41 /// Overwrites each file with its formatted result.
42 static final overwrite = new _OverwriteReporter();
43
44 /// Describe the directory whose contents are about to be processed.
45 void showDirectory(String path) {}
46
47 /// Describe the symlink at [path] that wasn't followed.
48 void showSkippedLink(String path) {}
49
50 /// Describe the hidden file at [path] that wasn't processed.
51 void showHiddenFile(String path) {}
52
53 /// Describe the processed file at [path] whose formatted result is [output].
54 ///
55 /// If the contents of the file are the same as the formatted output,
56 /// [changed] will be false.
57 void showFile(File file, String label, SourceCode output, {bool changed});
58 }
59
60 /// Prints only the names of files whose contents are different from their
61 /// formatted version.
62 class _DryRunReporter extends OutputReporter {
63 void showFile(File file, String label, SourceCode output, {bool changed}) {
64 // Only show the changed files.
65 if (changed) print(label);
66 }
67 }
68
69 /// Prints the formatted results of each file to stdout.
70 class _PrintReporter extends OutputReporter {
71 void showDirectory(String path) {
72 print("Formatting directory $path:");
73 }
74
75 void showSkippedLink(String path) {
76 print("Skipping link $path");
77 }
78
79 void showHiddenFile(String path) {
80 print("Skipping hidden file $path");
81 }
82
83 void showFile(File file, String label, SourceCode output, {bool changed}) {
84 // Don't add an extra newline.
85 stdout.write(output.text);
86 }
87 }
88
89 /// Prints the formatted result and selection info of each file to stdout as a
90 /// JSON map.
91 class _PrintJsonReporter extends OutputReporter {
92 void showFile(File file, String label, SourceCode output, {bool changed}) {
93 // TODO(rnystrom): Put an empty selection in here to remain compatible with
94 // the old formatter. Since there's no way to pass a selection on the
95 // command line, this will never be used, which is why it's hard-coded to
96 // -1, -1. If we add support for passing in a selection, put the real
97 // result here.
98 print(JSON.encode({
99 "path": label,
100 "source": output.text,
101 "selection": {
102 "offset": output.selectionStart != null ? output.selectionStart : -1,
103 "length": output.selectionLength != null ? output.selectionLength : -1
104 }
105 }));
106 }
107 }
108
109 /// Overwrites each file with its formatted result.
110 class _OverwriteReporter extends _PrintReporter {
111 void showFile(File file, String label, SourceCode output, {bool changed}) {
112 if (changed) {
113 file.writeAsStringSync(output.text);
114 print("Formatted $label");
115 } else {
116 print("Unchanged $label");
117 }
118 }
119 }
OLDNEW
« no previous file with comments | « dart_style/lib/src/formatter_exception.dart ('k') | dart_style/lib/src/io.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698