Skip to content

Conversation

@bug-ops
Copy link
Owner

@bug-ops bug-ops commented Dec 16, 2025

Summary

Implements Phase 1 of feedparser parity gap analysis to close gaps between feedparser-rs and Python feedparser.

New Features

  • GeoRSS namespace support for geographic location data

    • Supports georss:point, georss:line, georss:polygon, georss:box elements
    • Coordinate validation (lat: -90 to 90, lon: -180 to 180)
    • GeoType enum and GeoLocation struct
  • Creative Commons namespace for license metadata

    • Supports cc:license with rdf:resource attribute
    • Supports legacy creativeCommons:license text element
    • Converts licenses to links with rel="license"
  • ParseOptions API for parser configuration

    • resolve_relative_uris: URL resolution control
    • sanitize_html: HTML sanitization toggle
    • limits: ParserLimits integration
    • Presets: default(), strict(), permissive()
  • Enhanced date parsing

    • Year-only format ("2024")
    • Year-month format ("2024-12")

Files Changed

  • crates/feedparser-rs-core/src/namespace/georss.rs - GeoRSS namespace handler
  • crates/feedparser-rs-core/src/namespace/cc.rs - Creative Commons handler
  • crates/feedparser-rs-core/src/options.rs - ParseOptions API
  • crates/feedparser-rs-core/src/util/date.rs - Additional date formats
  • crates/feedparser-rs-core/src/types/entry.rs - Added geo field
  • crates/feedparser-rs-core/src/namespace/mod.rs - Module exports
  • crates/feedparser-rs-core/src/lib.rs - Public API exports

Test plan

  • All 441 tests pass (cargo nextest run --workspace)
  • Clippy clean (cargo clippy --all-features --workspace -- -D warnings)
  • New namespaces have unit tests with coverage
  • ParseOptions presets work correctly

@github-actions github-actions bot added type: tooling Development tools, CI/CD, or infrastructure component: core feedparser-rs-core Rust library component: python Python bindings (PyO3) component: node Node.js bindings (napi-rs) area: rss RSS 0.9x, 1.0, 2.0 support area: date-parsing Date/time parsing functionality lang: rust Rust code size: XXL Huge PR (1000+ lines changed) labels Dec 16, 2025
Implements Phase 1 of feedparser parity gap analysis:

- Add GeoRSS namespace support for geographic location data
  - Supports point, line, polygon, and box elements
  - Coordinate validation and parsing

- Add Creative Commons namespace for license metadata
  - Supports cc:license with rdf:resource attribute
  - Supports legacy creativeCommons:license text element
  - Converts licenses to links with rel="license"

- Add ParseOptions API for parser configuration
  - resolve_relative_uris: URL resolution control
  - sanitize_html: HTML sanitization toggle
  - limits: ParserLimits integration
  - Presets: default(), strict(), permissive()

- Enhanced date parsing
  - Year-only format ("2024")
  - Year-month format ("2024-12")
@bug-ops bug-ops force-pushed the feature/gap-analysis-phase1 branch from c6f77ad to 9fd6c90 Compare December 16, 2025 17:43
@codecov-commenter
Copy link

codecov-commenter commented Dec 16, 2025

Codecov Report

❌ Patch coverage is 97.40821% with 12 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
crates/feedparser-rs-core/src/namespace/georss.rs 94.55% 11 Missing ⚠️
crates/feedparser-rs-core/src/namespace/cc.rs 99.34% 1 Missing ⚠️

Impacted file tree graph

@@            Coverage Diff             @@
##             main      #22      +/-   ##
==========================================
+ Coverage   90.21%   90.75%   +0.53%     
==========================================
  Files          29       32       +3     
  Lines        5714     6175     +461     
==========================================
+ Hits         5155     5604     +449     
- Misses        559      571      +12     
Flag Coverage Δ
rust-core 90.75% <97.40%> (+0.53%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
crates/feedparser-rs-core/src/lib.rs 20.95% <ø> (ø)
crates/feedparser-rs-core/src/namespace/mod.rs 100.00% <100.00%> (ø)
crates/feedparser-rs-core/src/options.rs 100.00% <100.00%> (ø)
crates/feedparser-rs-core/src/types/entry.rs 87.69% <ø> (ø)
crates/feedparser-rs-core/src/util/date.rs 100.00% <100.00%> (ø)
crates/feedparser-rs-core/src/namespace/cc.rs 99.34% <99.34%> (ø)
crates/feedparser-rs-core/src/namespace/georss.rs 94.55% <94.55%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bug-ops bug-ops requested a review from Copilot December 16, 2025 17:48
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements Phase 1 of the feedparser parity gap analysis by adding GeoRSS namespace support for geographic data, Creative Commons namespace for license metadata, and a ParseOptions API for parser configuration. The implementation also enhances date parsing to support year-only and year-month formats.

Key changes:

  • New GeoRSS namespace handler with support for point, line, polygon, and box geometries
  • Creative Commons namespace handler for license information with backward compatibility
  • ParseOptions API providing default, strict, and permissive configuration presets

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
crates/feedparser-rs-core/src/namespace/georss.rs Implements GeoRSS namespace parsing with coordinate validation and geometry types
crates/feedparser-rs-core/src/namespace/cc.rs Handles Creative Commons licenses, converting them to links with rel="license"
crates/feedparser-rs-core/src/options.rs Provides ParseOptions API with presets for different security/performance profiles
crates/feedparser-rs-core/src/util/date.rs Adds support for year-only and year-month date formats
crates/feedparser-rs-core/src/types/entry.rs Adds geo field to Entry for GeoRSS location data
crates/feedparser-rs-core/src/namespace/mod.rs Registers new namespaces and their URI mappings
crates/feedparser-rs-core/src/lib.rs Exports ParseOptions in public API

Repository owner deleted a comment from Copilot AI Dec 16, 2025
Clippy's doc_markdown lint requires backticks for mixed-case identifiers like GeoRSS.
The Copilot suggestion was incorrect - reverting to pass CI.
@bug-ops bug-ops merged commit 633348c into main Dec 16, 2025
31 checks passed
@bug-ops bug-ops deleted the feature/gap-analysis-phase1 branch December 16, 2025 18:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: date-parsing Date/time parsing functionality area: rss RSS 0.9x, 1.0, 2.0 support component: core feedparser-rs-core Rust library component: node Node.js bindings (napi-rs) component: python Python bindings (PyO3) lang: rust Rust code size: XXL Huge PR (1000+ lines changed) type: tooling Development tools, CI/CD, or infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants