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

Side by Side Diff: lib/src/utils.dart

Issue 1649663003: Add basic support for a configuration file. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:convert'; 6 import 'dart:convert';
7 import 'dart:math' as math; 7 import 'dart:math' as math;
8 8
9 import 'package:async/async.dart' hide StreamQueue; 9 import 'package:async/async.dart' hide StreamQueue;
10 import 'package:crypto/crypto.dart'; 10 import 'package:crypto/crypto.dart';
(...skipping 16 matching lines...) Expand all
27 /// A typedef for a zero-argument callback function. 27 /// A typedef for a zero-argument callback function.
28 typedef void Callback(); 28 typedef void Callback();
29 29
30 /// A converter that decodes bytes using UTF-8 and splits them on newlines. 30 /// A converter that decodes bytes using UTF-8 and splits them on newlines.
31 final lineSplitter = UTF8.decoder.fuse(const LineSplitter()); 31 final lineSplitter = UTF8.decoder.fuse(const LineSplitter());
32 32
33 /// A regular expression to match the exception prefix that some exceptions' 33 /// A regular expression to match the exception prefix that some exceptions'
34 /// [Object.toString] values contain. 34 /// [Object.toString] values contain.
35 final _exceptionPrefix = new RegExp(r'^([A-Z][a-zA-Z]*)?(Exception|Error): '); 35 final _exceptionPrefix = new RegExp(r'^([A-Z][a-zA-Z]*)?(Exception|Error): ');
36 36
37 /// A regular expression matching a single vowel.
38 final _vowel = new RegExp('[aeiou]');
39
37 /// Directories that are specific to OS X. 40 /// Directories that are specific to OS X.
38 /// 41 ///
39 /// This is used to try to distinguish OS X and Linux in [currentOSGuess]. 42 /// This is used to try to distinguish OS X and Linux in [currentOSGuess].
40 final _macOSDirectories = new Set<String>.from([ 43 final _macOSDirectories = new Set<String>.from([
41 "/Applications", 44 "/Applications",
42 "/Library", 45 "/Library",
43 "/Network", 46 "/Network",
44 "/System", 47 "/System",
45 "/Users" 48 "/Users"
46 ]); 49 ]);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 /// Returns [name] if [number] is 1, or the plural of [name] otherwise. 114 /// Returns [name] if [number] is 1, or the plural of [name] otherwise.
112 /// 115 ///
113 /// By default, this just adds "s" to the end of [name] to get the plural. If 116 /// By default, this just adds "s" to the end of [name] to get the plural. If
114 /// [plural] is passed, that's used instead. 117 /// [plural] is passed, that's used instead.
115 String pluralize(String name, int number, {String plural}) { 118 String pluralize(String name, int number, {String plural}) {
116 if (number == 1) return name; 119 if (number == 1) return name;
117 if (plural != null) return plural; 120 if (plural != null) return plural;
118 return '${name}s'; 121 return '${name}s';
119 } 122 }
120 123
124 /// Returns [noun] with an indefinite article ("a" or "an") added, based on
125 /// whether its first letter is a vowel.
126 String a(String noun) => noun.startsWith(_vowel) ? "an $noun" : "a $noun";
127
121 /// Wraps [text] so that it fits within [lineLength], which defaults to 100 128 /// Wraps [text] so that it fits within [lineLength], which defaults to 100
122 /// characters. 129 /// characters.
123 /// 130 ///
124 /// This preserves existing newlines and doesn't consider terminal color escapes 131 /// This preserves existing newlines and doesn't consider terminal color escapes
125 /// part of a word's length. 132 /// part of a word's length.
126 String wordWrap(String text, {int lineLength}) { 133 String wordWrap(String text, {int lineLength}) {
127 if (lineLength == null) lineLength = _lineLength; 134 if (lineLength == null) lineLength = _lineLength;
128 return text.split("\n").map((originalLine) { 135 return text.split("\n").map((originalLine) {
129 var buffer = new StringBuffer(); 136 var buffer = new StringBuffer();
130 var lengthSoFar = 0; 137 var lengthSoFar = 0;
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 urlSafe: urlSafe, addLineSeparator: addLineSeparator); 416 urlSafe: urlSafe, addLineSeparator: addLineSeparator);
410 } 417 }
411 418
412 /// Returns middleware that nests all requests beneath the URL prefix [beneath]. 419 /// Returns middleware that nests all requests beneath the URL prefix [beneath].
413 shelf.Middleware nestingMiddleware(String beneath) { 420 shelf.Middleware nestingMiddleware(String beneath) {
414 return (handler) { 421 return (handler) {
415 var pathHandler = new PathHandler()..add(beneath, handler); 422 var pathHandler = new PathHandler()..add(beneath, handler);
416 return pathHandler.handler; 423 return pathHandler.handler;
417 }; 424 };
418 } 425 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698