noodles-gff 0.33.0

Generic Feature Format (GFF) reader and writer
Documentation
# Changelog

## 0.33.0 - 2024-05-19

### Changed

  * gff: Move reader (`Reader`) and writer (`Writer`) to `io` module.

  * gff/lazy: Increase the visibility of `record` module.

  * gff/lazy/record: Parse positions (`Record::start` and `Record::end`) and
    strand (`Record::strand`).

  * gff/lazy/record/attributes: Tag the value type (`Value`).

    The raw value can still be accessed via `AsRef<str>`.

### Deprecated

  * gff: Deprecate `gff::Reader` and `gff::Writer`.

    Use `gff::io::Reader` and `gff::io::Writer`, respectively, instead.

### Removed

  * gff/lazy/record: Remove `Position` and `Strand` wrappers.

    These fields are now parsed as `noodles_core::Position` and
    `gff::record::Strand`, respectively.

## 0.32.0 - 2024-05-16

### Added

  * gff/async: Add an async reader (`gff::r#async::Reader`) ([#262]).

  * gff/lazy/line: Implement `Clone`, `Debug`, `Eq`, and `PartialEq`.

  * gff/reader: Add getter for a mutable reference to the underlying reader
    (`Reader::get_mut`).

[#262]: https://github.com/zaeleus/noodles/issues/262

### Fixed

  * gff/reader: Fix lazy reading consecutive comment or directive lines.

  * gff/reader/lazy_line: Disallow newlines to appear in fields.

    This previously allowed incomplete records to span over more than one line.

## 0.31.0 - 2024-05-08

### Changed

  * gff: Sync dependencies.

## 0.30.0 - 2024-05-02

### Changed

  * gff: Sync dependencies.

## 0.29.0 - 2024-03-28

### Changed

  * gff: Sync dependencies.

## 0.28.0 - 2024-03-12

### Changed

  * gff: Sync dependencies.

## 0.27.0 - 2024-01-25

### Changed

  * gff: Sync dependencies.

## 0.26.0 - 2023-12-14

### Changed

  * gff: Raise minimum supported Rust version (MSRV) to 1.70.0.

  * gff/reader: Accept `csi::BinningIndex` for querying.

## 0.25.0 - 2023-11-14

### Changed

  * gff: Sync dependencies.

## 0.24.0 - 2023-11-13

### Changed

  * gff: Sync dependencies.

## 0.23.0 - 2023-10-26

### Changed

  * gff: Sync dependencies.

## 0.22.0 - 2023-10-19

### Added

  * gff/lazy: Add lazy line (`lazy::Line`) and record (`lazy::Record`).

### Changed

  * gff/record: Increase visibility of the `strand` module.

## 0.21.0 - 2023-10-12

### Changed

  * gff: Sync dependencies.

## 0.20.0 - 2023-08-31

### Changed

  * gff: Sync dependencies.

## 0.19.1 - 2023-08-24

### Fixed

  * gff/directive/name/other: Fix comparison with `&str`.

## 0.19.0 - 2023-08-17

### Changed

  * gff: Sync dependencies.

## 0.18.0 - 2023-08-03

### Added

  * gff/directive: Add support for nonstandard directives ([#190]).

    Nonstandard directives are now parsed as `Directive::Other(name::Other,
    Option<String>)`.

[#190]: https://github.com/zaeleus/noodles/issues/190

## 0.17.0 - 2023-07-20

### Added

  * gff/record/attributes/field/tag: Add standard tag constants.

### Changed

  * gff/record/attributes: Change underlying structure to an `IndexMap<Tag,
    Value>` ([#183]).

    This allows record attribute fields to have multiple values. Replace usages
    of, e.g., `attributes.iter().find(|entry| entry.key() == tag).map(|entry|
    entry.value())` with `attributes.get(tag).and_then(|values|
    values.as_string())`.

    Values are now wrapped with a typed `Value`, i.e., it can either be a
    string or array of strings. Replace `String` values with
    `Value::from(value)`.

[#183]: https://github.com/zaeleus/noodles/issues/183

## 0.16.0 - 2023-07-06

### Changed

  * gff: Sync dependencies.

## 0.15.0 - 2023-06-29

### Changed

  * gff: Sync dependencies.

## 0.14.0 - 2023-06-15

### Changed

  * gff: Sync dependencies.

## 0.13.0 - 2023-06-01

### Changed

  * gff: Sync dependencies.

## 0.12.0 - 2023-05-18

### Added

  * gff/reader: Add query iterator (`Reader::query`) ([#158]).

[#158]: https://github.com/zaeleus/noodles/issues/158

## 0.11.0 - 2023-03-03

### Changed

  * gff: Sync dependencies.

## 0.10.0 - 2023-02-03

### Added

  * gff: Implement `std::error::Error::source` for errors.

### Changed

  * gff: Raise minimum supported Rust version (MSRV) to 1.64.0.

## 0.9.0 - 2022-10-28

### Added

  * gff/writer: Add line writer (`Writer::write_line`).

## 0.8.0 - 2022-10-20

### Changed

  * gff: Sync dependencies.

## 0.7.0 - 2022-08-16

### Changed

  * gff: Raise minimum supported Rust version (MSRV) to 1.57.0.

## 0.6.1 - 2022-06-08

### Fixed

  * gff: Sync dependencies.

## 0.6.0 - 2022-03-29

### Changed

  * gff/record: Change start and end positions to `Position`.

## 0.5.0 - 2022-02-17

### Added

  * gff: Set minimum supported Rust version (MSRV) to 1.56.0 in package
    manifest.

## 0.4.0 - 2021-11-11

### Changed

  * gff: Update to Rust 2021.

## 0.3.0 - 2021-10-16

### Added

  * gff/record: Implement `fmt::Display`.

    The string representation of a `Record` is its serialized tabular form.

### Changed

  * gff/record: Disallow reference sequence names to start with '>'.

## 0.2.0 - 2021-09-19

### Added

  * gff/record/attributes/entry: Accept `Into<String>` for key and value.

### Changed

  * gff/record/attributes/entry: Return `ParseError::Invalid` when no `=`
    separator is present.

    This previously would return `ParseError::MissingValue`.

## 0.1.1 - 2021-07-21

### Fixed

  * gff: Fixed documentation link in package manifest ([#31]).

[#31]: https://github.com/zaeleus/noodles/issues/31

## 0.1.0 - 2021-07-14

  * gff: Initial release.