| Index: mojo/public/dart/third_party/source_span/lib/src/utils.dart
|
| diff --git a/mojo/public/dart/third_party/source_span/lib/src/utils.dart b/mojo/public/dart/third_party/source_span/lib/src/utils.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fa0895784f2685639b311fe14b22d79a6429e9f7
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/source_span/lib/src/utils.dart
|
| @@ -0,0 +1,33 @@
|
| +// 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 source_span.utils;
|
| +
|
| +/// Returns the minimum of [obj1] and [obj2] according to
|
| +/// [Comparable.compareTo].
|
| +Comparable min(Comparable obj1, Comparable obj2) =>
|
| + obj1.compareTo(obj2) > 0 ? obj2 : obj1;
|
| +
|
| +/// Returns the maximum of [obj1] and [obj2] according to
|
| +/// [Comparable.compareTo].
|
| +Comparable max(Comparable obj1, Comparable obj2) =>
|
| + obj1.compareTo(obj2) > 0 ? obj1 : obj2;
|
| +
|
| +/// Finds a line in [context] containing [text] at the specified [column].
|
| +///
|
| +/// Returns the index in [context] where that line begins, or null if none
|
| +/// exists.
|
| +int findLineStart(String context, String text, int column) {
|
| + var isEmpty = text == '';
|
| + var index = context.indexOf(text);
|
| + while (index != -1) {
|
| + var lineStart = context.lastIndexOf('\n', index) + 1;
|
| + var textColumn = index - lineStart;
|
| + if (column == textColumn || (isEmpty && column == textColumn + 1)) {
|
| + return lineStart;
|
| + }
|
| + index = context.indexOf(text, index + 1);
|
| + }
|
| + return null;
|
| +}
|
|
|