Skip to content

Commit 36637a9

Browse files
committed
docs: update README with supported formats and namespace extensions
- Add Supported Formats table (RSS, Atom, JSON Feed versions) - Add Namespace Extensions table (Dublin Core, Content, Media RSS, iTunes, Podcast 2.0) - Add Conditional GET feature - Add Podcast support feature - Add coverage command to Development section - Improve Python migration note
1 parent 96919a0 commit 36637a9

File tree

1 file changed

+28
-12
lines changed

1 file changed

+28
-12
lines changed

README.md

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,30 @@ High-performance RSS/Atom/JSON Feed parser written in Rust, with Python and Node
1414

1515
- **Multi-format support** — RSS 0.9x, 1.0, 2.0 / Atom 0.3, 1.0 / JSON Feed 1.0, 1.1
1616
- **Tolerant parsing** — Handles malformed feeds gracefully with `bozo` flag pattern
17-
- **HTTP fetching** — Built-in URL fetching with compression support (gzip, deflate, brotli)
17+
- **HTTP fetching** — Built-in URL fetching with compression (gzip, deflate, brotli)
18+
- **Conditional GET** — ETag/Last-Modified support for bandwidth-efficient polling
19+
- **Podcast support** — iTunes and Podcast 2.0 namespace extensions
1820
- **Multi-language bindings** — Native Python (PyO3) and Node.js (napi-rs) bindings
1921
- **Familiar API** — Inspired by Python's feedparser, easy to migrate existing code
2022

23+
## Supported Formats
24+
25+
| Format | Versions | Status |
26+
|--------|----------|--------|
27+
| RSS | 0.90, 0.91, 0.92, 1.0, 2.0 | ✅ Full support |
28+
| Atom | 0.3, 1.0 | ✅ Full support |
29+
| JSON Feed | 1.0, 1.1 | ✅ Full support |
30+
31+
### Namespace Extensions
32+
33+
| Namespace | Description |
34+
|-----------|-------------|
35+
| Dublin Core | Creator, date, rights metadata |
36+
| Content | Encoded HTML content |
37+
| Media RSS | Media attachments and metadata |
38+
| iTunes | Podcast metadata (author, duration, explicit) |
39+
| Podcast 2.0 | Chapters, transcripts, funding |
40+
2141
## Installation
2242

2343
### Rust
@@ -54,7 +74,7 @@ pip install feedparser-rs
5474

5575
## Usage
5676

57-
### Rust Usage
77+
### Rust
5878

5979
```rust
6080
use feedparser_rs::parse;
@@ -103,7 +123,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
103123
> [!TIP]
104124
> Use `fetch_and_parse` for URL fetching with automatic compression handling (gzip, deflate, brotli).
105125
106-
### Node.js Usage
126+
### Node.js
107127

108128
```javascript
109129
import { parse, fetchAndParse } from 'feedparser-rs';
@@ -120,7 +140,7 @@ const remoteFeed = await fetchAndParse('https://example.com/feed.xml');
120140

121141
See [Node.js API documentation](crates/feedparser-rs-node/README.md) for complete reference.
122142

123-
### Python Usage
143+
### Python
124144

125145
```python
126146
import feedparser_rs
@@ -134,15 +154,15 @@ print(d.entries[0].published_parsed) # time.struct_time
134154
```
135155

136156
> [!NOTE]
137-
> Python bindings provide `time.struct_time` for date fields, similar to feedparser's API.
157+
> Python bindings provide `time.struct_time` for date fields, matching feedparser's API for easy migration.
138158
139159
## Cargo Features
140160

141161
| Feature | Description | Default |
142162
|---------|-------------|---------|
143163
| `http` | Enable URL fetching with reqwest (gzip/deflate/brotli support) | Yes |
144164

145-
To disable HTTP support:
165+
To disable HTTP support and reduce dependencies:
146166

147167
```toml
148168
[dependencies]
@@ -151,8 +171,6 @@ feedparser-rs = { version = "0.1", default-features = false }
151171

152172
## Workspace Structure
153173

154-
This repository contains multiple crates:
155-
156174
| Crate | Description | Package |
157175
|-------|-------------|---------|
158176
| [`feedparser-rs`](crates/feedparser-rs-core) | Core Rust parser | [crates.io](https://crates.io/crates/feedparser-rs) |
@@ -161,17 +179,15 @@ This repository contains multiple crates:
161179

162180
## Development
163181

164-
This project uses [cargo-make](https://github.com/sagiegurari/cargo-make) for task automation.
165-
166182
```bash
167183
# Install cargo-make
168184
cargo install cargo-make
169185

170186
# Run all checks (format, lint, test)
171187
cargo make ci-all
172188

173-
# Run tests
174-
cargo make test
189+
# Run tests with coverage
190+
cargo make coverage
175191

176192
# Run benchmarks
177193
cargo make bench

0 commit comments

Comments
 (0)