Skip to content

v2: Add parsing strictness configuration #250

@mmcdole

Description

@mmcdole

Overview

Add configuration options to control parsing strictness, allowing users to choose between robust/permissive parsing (default) and strict standards-compliant parsing.

Tasks

Define Strictness Options

  • Identify specific behaviors to make configurable:
    • Date format parsing (allow non-standard formats vs RFC-compliant only)
    • Required field validation (ignore vs error on missing required fields)
    • Unescaped markup handling (attempt to parse vs error)
    • Unknown elements (ignore vs error)
    • Namespace validation
    • Character encoding issues

Implementation

  • Add flags to StrictnessOptions struct
  • Update parsers to check strictness settings
  • Ensure default remains permissive for backward compatibility
  • Document each strictness option clearly

Example Usage

opts := &gofeed.ParseOptions{
    StrictnessOptions: gofeed.StrictnessOptions{
        AllowInvalidDates: false,     // Reject non-standard dates
        AllowMissingRequired: false,  // Error on missing required fields
        AllowUnescapedMarkup: false,  // Don't try to fix broken markup
    },
}
feed, err := parser.Parse(reader, opts)

Benefits

  • Users can choose appropriate level of strictness for their use case
  • Helps identify feed quality issues when needed
  • Maintains backward compatibility with permissive defaults
  • Better standards compliance when required

Related Issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    v2Version 2 related issues

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions