Skip to content

v0.3.0

Choose a tag to compare

@AliAzlanDev AliAzlanDev released this 16 Aug 19:21
· 72 commits to main since this release
762cf18

πŸš€ v0.3.0 β€” Major API Overhaul and CSV/Deduplication Enhancements

This release introduces major improvements and breaking changes to the crate, making the API more robust, flexible, and developer-friendly.
Special thanks to @jennydaman for their significant contributions and feedback, which shaped this release and the crate overall. πŸ™Œ

✨ Highlights

  • Deduplication API
    Added find_duplicates_with_sources() for source-aware deduplication when sources are managed outside the crate.

  • CSV Parser Enhancements
    More powerful CSV parsing with support for quote configuration, trimming, flexible parsing, memory optimization, additional header aliases, validation, and automatic format detection.

  • Error Handling Overhaul (Breaking)
    Completely restructured error system with line/column tracking and semantic error types (Syntax, MissingValue, BadValue, MultipleValues).
    Empty input now cleanly returns Ok(Vec::new()).

  • Author Struct Redesign (Breaking)
    Author now supports richer name handling and multiple affiliations. Middle names and mononyms are consistently parsed across formats.

  • Cleaner Core Data Structures (Breaking)

    • Removed Citation.id (ID management should be done at the application level).
    • Removed Citation.source (source tracking now handled by the caller).
    • Removed Citation.year (use date.year instead).
    • Removed .with_source() methods from all parsers.
  • API Changes (Breaking)

    • detect_and_parse(content, source) β†’ detect_and_parse(content)
    • CitationParser::parse now returns Result<Vec<Citation>, ParseError> instead of CitationError.
  • Bug Fixes

    • Fixed critical bug where extra CSV fields were ignored instead of being populated in Citation structs.

πŸ“– Migration Guide

This release contains breaking changes to core types (Citation, Author, CitationError) and functions.
Please see the full migration guide in the changelog for detailed code examples on upgrading from 0.2.x to 0.3.x.