Release name parser #50

Merged
naps62-yolo merged 2 commits from issue/8-parser into main 2026-08-22 19:49:07 +01:00
Owner

Adds the release name parser to arr-parse (#8).

parse(&str) -> NameClaims — title, year, resolution, source, codec, HDR markers, language markers, editions, group. The type is named for what it holds: claims from the name (DESIGN.md §5.6), never mixed with ffprobe results.

  • Hand-rolled tokenizer, no regex, no new heavy deps (only serde, since Release.parsed is stored as JSON).
  • pt-BR markers (PT-BR, Dublado, Nacional, Dual Áudio) surface as language claims per §5.2; interpretation stays in the policy engine. Legendado deliberately does not become a PtBr audio claim.
  • Ambiguous tokens (Web, Cam, TS, Dual) only count after the title boundary, so Charlottes.Web.2006 keeps its title.
  • Malformed names parse partially; no panics, no unwrap.

Table-driven tests cover the shapes; the real indexer corpus is #9.

🤖 Generated with Claude Code

Adds the release name parser to `arr-parse` (#8). `parse(&str) -> NameClaims` — title, year, resolution, source, codec, HDR markers, language markers, editions, group. The type is named for what it holds: claims from the name (`DESIGN.md` §5.6), never mixed with `ffprobe` results. - Hand-rolled tokenizer, no regex, no new heavy deps (only `serde`, since `Release.parsed` is stored as JSON). - pt-BR markers (`PT-BR`, `Dublado`, `Nacional`, `Dual Áudio`) surface as language claims per §5.2; interpretation stays in the policy engine. `Legendado` deliberately does not become a PtBr audio claim. - Ambiguous tokens (`Web`, `Cam`, `TS`, `Dual`) only count after the title boundary, so `Charlottes.Web.2006` keeps its title. - Malformed names parse partially; no panics, no `unwrap`. Table-driven tests cover the shapes; the real indexer corpus is #9. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
naps62-yolo added 1 commit 2026-08-22 19:41:35 +01:00
feat: release name parser in arr-parse
ci / rust (pull_request) Successful in 1m6s
ci / web (pull_request) Successful in 6s
547ed4b226
Token-based, zero regex, zero IO. Output type NameClaims makes the
claim-not-fact framing (DESIGN.md \S5.6) explicit at the call site;
ffprobe truth lives in different types downstream. pt-BR markers
(PT-BR, Dublado, Nacional, Dual Audio) surface as language claims per
\S5.2, interpretation left to the policy engine. Malformed names parse
partially, never panic.

Closes #8

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
naps62-yolo reviewed 2026-08-22 19:44:53 +01:00
naps62-yolo left a comment
Author
Owner

Reviewed 547ed4b226acb3ba5d527344e7db98e278cf5219. No findings.

Reviewed `547ed4b226acb3ba5d527344e7db98e278cf5219`. No findings. <!-- agent-meta: {"model":"gpt-5.6","session":"4a30d00d"} -->
naps62-yolo added 1 commit 2026-08-22 19:45:56 +01:00
Merge origin/main into issue/8-parser
ci / rust (pull_request) Successful in 1m3s
ci / web (pull_request) Successful in 6s
30a5e49750
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
naps62-yolo reviewed 2026-08-22 19:47:23 +01:00
naps62-yolo left a comment
Author
Owner

Reviewed 30a5e497506b5e9e87eba72f5ba24d8e26a05f02. No findings.

Reviewed `30a5e497506b5e9e87eba72f5ba24d8e26a05f02`. No findings. <!-- agent-meta: {"model":"gpt-5.6","session":"4a30d00d"} -->
naps62-yolo merged commit 3e57cf5bf8 into main 2026-08-22 19:49:07 +01:00
naps62-yolo deleted branch issue/8-parser 2026-08-22 19:49:07 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yolo/arr#50