| OLD | NEW | 
|---|
| 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 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 | 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 library source_span.utils; |  | 
| 6 |  | 
| 7 /// Returns the minimum of [obj1] and [obj2] according to | 5 /// Returns the minimum of [obj1] and [obj2] according to | 
| 8 /// [Comparable.compareTo]. | 6 /// [Comparable.compareTo]. | 
| 9 Comparable min(Comparable obj1, Comparable obj2) => | 7 Comparable min(Comparable obj1, Comparable obj2) => | 
| 10     obj1.compareTo(obj2) > 0 ? obj2 : obj1; | 8     obj1.compareTo(obj2) > 0 ? obj2 : obj1; | 
| 11 | 9 | 
| 12 /// Returns the maximum of [obj1] and [obj2] according to | 10 /// Returns the maximum of [obj1] and [obj2] according to | 
| 13 /// [Comparable.compareTo]. | 11 /// [Comparable.compareTo]. | 
| 14 Comparable max(Comparable obj1, Comparable obj2) => | 12 Comparable max(Comparable obj1, Comparable obj2) => | 
| 15     obj1.compareTo(obj2) > 0 ? obj1 : obj2; | 13     obj1.compareTo(obj2) > 0 ? obj1 : obj2; | 
| 16 | 14 | 
| 17 /// Finds a line in [context] containing [text] at the specified [column]. | 15 /// Finds a line in [context] containing [text] at the specified [column]. | 
| 18 /// | 16 /// | 
| 19 /// Returns the index in [context] where that line begins, or null if none | 17 /// Returns the index in [context] where that line begins, or null if none | 
| 20 /// exists. | 18 /// exists. | 
| 21 int findLineStart(String context, String text, int column) { | 19 int findLineStart(String context, String text, int column) { | 
| 22   var isEmpty = text == ''; | 20   var isEmpty = text == ''; | 
| 23   var index = context.indexOf(text); | 21   var index = context.indexOf(text); | 
| 24   while (index != -1) { | 22   while (index != -1) { | 
| 25     var lineStart = context.lastIndexOf('\n', index) + 1; | 23     var lineStart = context.lastIndexOf('\n', index) + 1; | 
| 26     var textColumn = index - lineStart; | 24     var textColumn = index - lineStart; | 
| 27     if (column == textColumn || (isEmpty && column == textColumn + 1)) { | 25     if (column == textColumn || (isEmpty && column == textColumn + 1)) { | 
| 28       return lineStart; | 26       return lineStart; | 
| 29     } | 27     } | 
| 30     index = context.indexOf(text, index + 1); | 28     index = context.indexOf(text, index + 1); | 
| 31   } | 29   } | 
| 32   return null; | 30   return null; | 
| 33 } | 31 } | 
| OLD | NEW | 
|---|