Index: source_span/lib/src/span.dart |
diff --git a/source_span/lib/src/span.dart b/source_span/lib/src/span.dart |
deleted file mode 100644 |
index 9f150482c6da354adbbad9753a12a306b4bf432c..0000000000000000000000000000000000000000 |
--- a/source_span/lib/src/span.dart |
+++ /dev/null |
@@ -1,78 +0,0 @@ |
-// 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.span; |
- |
-import 'location.dart'; |
-import 'span_mixin.dart'; |
- |
-/// A class that describes a segment of source text. |
-abstract class SourceSpan implements Comparable<SourceSpan> { |
- /// The start location of this span. |
- final SourceLocation start; |
- |
- /// The end location of this span, exclusive. |
- final SourceLocation end; |
- |
- /// The source text for this span. |
- final String text; |
- |
- /// The URL of the source (typically a file) of this span. |
- /// |
- /// This may be null, indicating that the source URL is unknown or |
- /// unavailable. |
- final Uri sourceUrl; |
- |
- /// The length of this span, in characters. |
- final int length; |
- |
- /// Creates a new span from [start] to [end] (exclusive) containing [text]. |
- /// |
- /// [start] and [end] must have the same source URL and [start] must come |
- /// before [end]. [text] must have a number of characters equal to the |
- /// distance between [start] and [end]. |
- factory SourceSpan(SourceLocation start, SourceLocation end, String text) => |
- new SourceSpanBase(start, end, text); |
- |
- /// Creates a new span that's the union of [this] and [other]. |
- /// |
- /// The two spans must have the same source URL and may not be disjoint. |
- /// [text] is computed by combining [this.text] and [other.text]. |
- SourceSpan union(SourceSpan other); |
- |
- /// Compares two spans. |
- /// |
- /// [other] must have the same source URL as [this]. This orders spans by |
- /// [start] then [length]. |
- int compareTo(SourceSpan other); |
- |
- /// Formats [message] in a human-friendly way associated with this span. |
- /// |
- /// [color] may either be a [String], a [bool], or `null`. If it's a string, |
- /// it indicates an ANSII terminal color escape that should be used to |
- /// highlight the span's text. If it's `true`, it indicates that the text |
- /// should be highlighted using the default color. If it's `false` or `null`, |
- /// it indicates that the text shouldn't be highlighted. |
- String message(String message, {color}); |
-} |
- |
-/// A base class for source spans with [start], [end], and [text] known at |
-/// construction time. |
-class SourceSpanBase extends SourceSpanMixin { |
- final SourceLocation start; |
- final SourceLocation end; |
- final String text; |
- |
- SourceSpanBase(this.start, this.end, this.text) { |
- if (end.sourceUrl != start.sourceUrl) { |
- throw new ArgumentError("Source URLs \"${start.sourceUrl}\" and " |
- " \"${end.sourceUrl}\" don't match."); |
- } else if (end.offset < start.offset) { |
- throw new ArgumentError('End $end must come after start $start.'); |
- } else if (text.length != start.distance(end)) { |
- throw new ArgumentError('Text "$text" must be ${start.distance(end)} ' |
- 'characters long.'); |
- } |
- } |
-} |