Skip to content

feat: добавить раскрытие шаблонов URI по RFC 6570 - #7

Merged
Stivo182 merged 1 commit into
mainfrom
feat/uri-template
Sep 12, 2026
Merged

Stivo182 merged 1 commit into
mainfrom
feat/uri-template

Conversation

@Stivo182

@Stivo182 Stivo182 commented Sep 12, 2026 •

Copy link
Copy Markdown
Owner

Добавлено

  • Новый класс ШаблонURI для раскрытия шаблонов URI по RFC 6570.
  • Поддержка всех операторов и четырёх уровней RFC 6570.
  • Поддержка простых, списочных и ассоциативных значений.
  • Поддержка модификаторов * и :число.
  • Обработка вложенных структур.
  • Предметные коды ошибок с позицией нарушения синтаксиса.
  • Безопасное повторное и параллельное раскрытие одного шаблона.
  • Документация с примерами использования и описанием ошибок.
  • Бенчмарки создания, разбора, подготовки и раскрытия шаблонов.
  • Канонические тесты проекта uri-templates/uritemplate-test.

Summary by CodeRabbit

  • New Features

    • Added RFC 6570 URI template support through the new ШаблонURI class.
    • Supports all four URI Template specification levels, operators, lists, associative values, nested structures, and modifiers.
    • Expands templates into new URL values with validation and clear syntax errors.
  • Documentation

    • Added API documentation, examples, usage guidance, error references, and security considerations.
  • Tests

    • Added comprehensive RFC 6570 conformance, error-handling, Unicode, composite-value, and thread-safety coverage.

@coderabbitai

coderabbitai Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

Warning

Review limit reached

Next included review available in 41 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 7f275a26-aca9-4af4-a1a6-56771edd9b88

📥 Commits

Reviewing files that changed from the base of the PR and between 01435e9 and 8c26143.

📒 Files selected for processing (14)
  • tests/URL/IPАдресХоста.os
  • tests/URL/БезопасныйРазборURL.os
  • tests/URL/Копирование.os
  • tests/URL/КорневойURL.os
  • tests/URL/Путь.os
  • tests/URL/РазборСоСхемойПоУмолчанию.os
  • tests/ВнутренниеКомпоненты/ВладениеКомпонентамиURL.os
  • tests/ВнутренниеКомпоненты/НормализацияКомпонентовURI.os
  • tests/ВнутренниеКомпоненты/РазборIRI.os
  • tests/ВнутренниеКомпоненты/РазрешениеURI.os
  • tests/ВнутренниеКомпоненты/РелятивизацияURI.os
  • tests/ВнутренниеКомпоненты/СборкаURL.os
  • tests/Совместимость/СвойстваURL.os
  • tests/ШаблонURI/ПрограммныйИнтерфейс.os

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: e1826963-9fa0-4c5f-b1f1-073f4e7db0af

📥 Commits

Reviewing files that changed from the base of the PR and between feca7bc and 01435e9.

📒 Files selected for processing (32)
  • README.md
  • benchmarks/ИзменениеКомпонентовURL.os
  • benchmarks/КодированиеURL.os
  • benchmarks/НормализацияURL.os
  • benchmarks/РазборURL.os
  • benchmarks/РазрешениеURL.os
  • benchmarks/РаскрытиеШаблонаURI.os
  • benchmarks/СериализацияПараметровЗапросаURL.os
  • docs/README.md
  • docs/КодыОшибокURL.md
  • docs/ШаблонURI.md
  • packagedef
  • src/internal/Классы/ОбработчикВыраженийШаблонаURI.os
  • src/internal/Классы/РазборщикШаблонаURI.os
  • src/internal/Модули/СервисыБиблиотекиURL.os
  • src/Классы/ШаблонURI.os
  • src/Модули/КодыОшибокURL.os
  • tests/fixtures/rfc6570/LICENSE
  • tests/fixtures/rfc6570/UPSTREAM.md
  • tests/fixtures/rfc6570/extended-tests.json
  • tests/fixtures/rfc6570/negative-tests.json
  • tests/fixtures/rfc6570/spec-examples-by-section.json
  • tests/fixtures/rfc6570/spec-examples.json
  • tests/ВнутренниеКомпоненты/СервисыБиблиотекиURL.os
  • tests/Ошибки/КодыОшибок.os
  • tests/ШаблонURI/КаноническиеПримеры.os
  • tests/ШаблонURI/Модификаторы.os
  • tests/ШаблонURI/Операторы.os
  • tests/ШаблонURI/ОшибкиСинтаксиса.os
  • tests/ШаблонURI/ПотокобезопасностьШаблонаURI.os
  • tests/ШаблонURI/ПрограммныйИнтерфейс.os
  • tests/ШаблонURI/СоставныеЗначения.os

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Добавлена поддержка URI-шаблонов RFC 6570. Реализованы парсер, раскрытие выражений, публичный класс ШаблонURI, сервисы, тесты соответствия, benchmarks и документация.

Changes

RFC 6570 URI templates

Layer / File(s) Summary
Разбор синтаксиса URI-шаблонов
src/internal/Классы/РазборщикШаблонаURI.os
Добавлен разбор выражений RFC 6570, модификаторов, литералов, имён переменных и Unicode с диагностикой позиций ошибок.
Раскрытие выражений и значений
src/internal/Классы/ОбработчикВыраженийШаблонаURI.os
Добавлено раскрытие простых и составных значений с операторами RFC 6570, кодированием, проверкой Unicode и обнаружением циклов.
Публичный класс и сервисы
src/Классы/ШаблонURI.os, src/internal/Модули/СервисыБиблиотекиURL.os, src/Модули/КодыОшибокURL.os, packagedef
Добавлен класс ШаблонURI, фабрики сервисов, код ошибки синтаксиса и регистрация класса в пакете.
RFC 6570 fixtures и тесты
tests/fixtures/rfc6570/*, tests/ШаблонURI/*, tests/ВнутренниеКомпоненты/СервисыБиблиотекиURL.os, tests/Ошибки/КодыОшибок.os
Добавлены канонические, расширенные и отрицательные fixtures, а также тесты API, операторов, составных значений, модификаторов, ошибок и потокобезопасности.
Документация и benchmarks
README.md, docs/README.md, docs/ШаблонURI.md, docs/КодыОшибокURL.md, benchmarks/*
Документация описывает API и правила RFC 6570. Benchmarks получают явные имена и покрывают операции URI-шаблонов.

Priority: ➖ Normal

Estimated code review effort: 4 (Complex) | ~60 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant ШаблонURI
  participant РазборщикШаблонаURI
  participant ОбработчикВыраженийШаблонаURI
  participant URL
  Client->>ШаблонURI: Создать шаблон
  ШаблонURI->>РазборщикШаблонаURI: Разобрать представление
  РазборщикШаблонаURI-->>ШаблонURI: Подготовленные части и имена
  ШаблонURI->>ОбработчикВыраженийШаблонаURI: Подготовить шаблон
  Client->>ШаблонURI: Раскрыть значения
  ШаблонURI->>ОбработчикВыраженийШаблонаURI: Раскрыть подготовленный шаблон
  ОбработчикВыраженийШаблонаURI-->>ШаблонURI: Раскрытая строка
  ШаблонURI->>URL: Создать новый URL
  URL-->>Client: Результат раскрытия
Loading

Merge Risk: ⚪ Minimal · up to 01435

No concrete merge-blocking risk is established for the current changes.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding RFC 6570 URI template expansion.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/uri-template

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Stivo182
Stivo182 merged commit b6e03c4 into main Sep 12, 2026
27 of 28 checks passed
@Stivo182
Stivo182 deleted the feat/uri-template branch September 12, 2026 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant