## 1.10.1 * Require Dart 3.1 * Move to `dart-lang/tools` monorepo. ## 1.10.0 * Add a `SourceFile.codeUnits` property. * Require Dart 2.18 * Add an API usage example in `example/`. ## 1.9.1 * Properly handle multi-line labels for multi-span highlights. * Populate the pubspec `repository` field. ## 1.9.0 * Add `SourceSpanWithContextExtension.subspan` that returns a `SourceSpanWithContext` rather than a plain `SourceSpan`. ## 1.8.2 * Fix a bug where highlighting multiple spans with `null` URLs could cause an assertion error. Now when multiple spans are passed with `null` URLs, they're highlighted as though they all come from different source files. ## 1.8.1 * Fix a bug where the URL header for the highlights with multiple files would get omitted only one span has a non-null URI. ## 1.8.0 * Stable release for null safety. ## 1.7.0 * Add a `SourceSpan.subspan()` extension method which returns a slice of an existing source span. ## 1.6.0 * Add support for highlighting multiple source spans at once, providing more context for span-based messages. This is exposed through the new APIs `SourceSpan.highlightMultiple()` and `SourceSpan.messageMultiple()` (both extension methods), `MultiSourceSpanException`, and `MultiSourceSpanFormatException`. ## 1.5.6 * Fix padding around line numbers that are powers of 10 in `FileSpan.highlight()`. ## 1.5.5 * Fix a bug where `FileSpan.highlight()` would crash for spans that covered a trailing newline and a single additional empty line. ## 1.5.4 * `FileSpan.highlight()` now properly highlights point spans at the beginning of lines. ## 1.5.3 * Fix an edge case where `FileSpan.highlight()` would put the highlight indicator in the wrong position when highlighting a point span after the end of a file. ## 1.5.2 * `SourceFile.span()` now goes to the end of the file by default, rather than ending one character before the end of the file. This matches the documented behavior. * `FileSpan.context` now includes the full line on which the span appears for empty spans at the beginning and end of lines. * Fix an edge case where `FileSpan.highlight()` could crash when highlighting a span that ended with an empty line. ## 1.5.1 * Produce better source span highlights for multi-line spans that cover the entire last line of the span, including the newline. * Produce better source span highlights for spans that contain Windows-style newlines. ## 1.5.0 * Improve the output of `SourceSpan.highlight()` and `SourceSpan.message()`: * They now include line numbers. * They will now print every line of a multiline span. * They will now use Unicode box-drawing characters by default (this can be controlled using [`term_glyph.ascii`][]). [`term_glyph.ascii`]: https://pub.dartlang.org/documentation/term_glyph/latest/term_glyph/ascii.html ## 1.4.1 * Set max SDK version to `<3.0.0`, and adjust other dependencies. ## 1.4.0 * The `new SourceFile()` constructor is deprecated. This constructed a source file from a string's runes, rather than its code units, which runs counter to the way Dart handles strings otherwise. The `new StringFile.fromString()` constructor (see below) should be used instead. * The `new SourceFile.fromString()` constructor was added. This works like `new SourceFile()`, except it uses code units rather than runes. * The current behavior when characters larger than `0xFFFF` are passed to `new SourceFile.decoded()` is now considered deprecated. ## 1.3.1 * Properly highlight spans for lines that include tabs with `SourceSpan.highlight()` and `SourceSpan.message()`. ## 1.3.0 * Add `SourceSpan.highlight()`, which returns just the highlighted text that would be included in `SourceSpan.message()`. ## 1.2.4 * Fix a new strong mode error. ## 1.2.3 * Fix a bug where a point span at the end of a file without a trailing newline would be printed incorrectly. ## 1.2.2 * Allow `SourceSpanException.message`, `SourceSpanFormatException.source`, and `SourceSpanWithContext.context` to be overridden in strong mode. ## 1.2.1 * Fix the declared type of `FileSpan.start` and `FileSpan.end`. In 1.2.0 these were mistakenly changed from `FileLocation` to `SourceLocation`. ## 1.2.0 * **Deprecated:** Extending `SourceLocation` directly is deprecated. Instead, extend the new `SourceLocationBase` class or mix in the new `SourceLocationMixin` mixin. * Dramatically improve the performance of `FileLocation`. ## 1.1.6 * Optimize `getLine()` in `SourceFile` when repeatedly called. ## 1.1.5 * Fixed another case in which `FileSpan.union` could throw an exception for external implementations of `FileSpan`. ## 1.1.4 * Eliminated dart2js warning about overriding `==`, but not `hashCode`. ## 1.1.3 * `FileSpan.compareTo`, `FileSpan.==`, `FileSpan.union`, and `FileSpan.expand` no longer throw exceptions for external implementations of `FileSpan`. * `FileSpan.hashCode` now fully agrees with `FileSpan.==`. ## 1.1.2 * Fixed validation in `SourceSpanWithContext` to allow multiple occurrences of `text` within `context`. ## 1.1.1 * Fixed `FileSpan`'s context to include the full span text, not just the first line of it. ## 1.1.0 * Added `SourceSpanWithContext`: a span that also includes the full line of text that contains the span. ## 1.0.3 * Cleanup equality operator to accept any Object rather than just a `SourceLocation`. ## 1.0.2 * Avoid unintentionally allocating extra objects for internal `FileSpan` operations. * Ensure that `SourceSpan.operator==` works on arbitrary `Object`s. ## 1.0.1 * Use a more compact internal representation for `FileSpan`. ## 1.0.0 This package was extracted from the [`source_maps`](https://pub.dev/packages/source_maps) package, but the API has many differences. Among them: * `Span` has been renamed to `SourceSpan` and `Location` has been renamed to `SourceLocation` to clarify their purpose and maintain consistency with the package name. Likewise, `SpanException` is now `SourceSpanException` and `SpanFormatException` is not `SourceSpanFormatException`. * `FixedSpan` and `FixedLocation` have been rolled into the `Span` and `Location` classes, respectively. * `SourceFile` is more aggressive about validating its arguments. Out-of-bounds lines, columns, and offsets will now throw errors rather than be silently clamped. * `SourceSpan.sourceUrl`, `SourceLocation.sourceUrl`, and `SourceFile.url` now return `Uri` objects rather than `String`s. The constructors allow either `String`s or `Uri`s. * `Span.getLocationMessage` and `SourceFile.getLocationMessage` are now `SourceSpan.message` and `SourceFile.message`, respectively. Rather than taking both a `useColor` and a `color` parameter, they now take a single `color` parameter that controls both whether and which color is used. * `Span.isIdentifier` has been removed. This property doesn't make sense outside of a source map context. * `SourceFileSegment` has been removed. This class wasn't widely used and was inconsistent in its choice of which parameters were considered relative and which absolute.