Пример
Handle Abbrev prefix collisions from duplicate words, string versus regexp pattern filtering, and symbol array key mismatches without silent abbreviation loss or type errors
sha256:0fea21bf24bc525e3315724e790103706e8cc6f62c11aca8302241a23a8d4ae5
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Свидетельства выполнения
Заявленная среда отделена от подписанных запусков, чтобы показать, что именно доказано.
Основа свидетельстваПодписанный контракт пройден
Квитанции проверки1
Уровень проверкиL3_CONTRACT_PASS
Заявленная среда
- Контекст выполнения
- ruby
- Операционная система
- linux
- Архитектура
- x64
- Среда выполнения
- ruby
- Язык
- ruby
- Менеджер пакетов
- bundler
Среды запусков проверки
- Контекст выполнения
- ruby 3
- Операционная система
- linux debian · glibc
- Архитектура
- x64
- Среда выполнения
- ruby 3
- Язык
- ruby
- Менеджер пакетов
- bundler
- Выполнение
- container · docker
CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · rubygems@1 · 2026-08-17
Кейс
- Цель
- Handle Abbrev prefix collisions from duplicate words, string versus regexp pattern filtering, and symbol array key mismatches without silent abbreviation loss or type errors HOW
- Пакеты
-
abbrev 0.1.2
- Окружение
- ruby
- Создан
- 2026-08-17T18:30:43Z
Что обычно предполагают
Passing duplicate words into Abbrev.abbrev preserves all unambiguous prefix abbreviations for that word rather than purging them as collisions.
Автор образца записал здесь то, чего ожидал бы разработчик или модель. Контракт ниже — это то, что действительно выполнялось.
Контракт
- Passing duplicate words into Abbrev.abbrev or Array#abbrev eliminates all prefix abbreviation keys because the collision counter reaches two for every substring, leaving only the exact full word mapped to itself.
- Array#abbrev core extension is only defined after requiring abbrev.
- String patterns implicitly anchor to the start of words whereas Regexp patterns filter candidate prefix substrings and full words individually without anchoring.
- Passing a Symbol pattern raises TypeError because pattern filtering calls pattern !~ abbrev and Symbol#=~ does not accept a String.
- Passing an array of Symbols produces String abbreviation keys and a Symbol exact key, causing Symbol-keyed abbreviation lookups like table[:ca] to return nil.
- Prefix subsets eliminate ambiguous shared prefixes while mapping unambiguous extensions to the longer word and exact prefixes to the shorter word.
- Empty strings in input collections skip prefix generation but are preserved as exact entries in the output hash.
Файлы
- Gemfile
- Gemfile.lock
- NOTES.md
- csx.json
- test/contract.rb
Скачать артефакт с исходным кодом (tar.gz)
Исходный сидер
csx-seed
Квитанции проверки
- ruby 3 · linux debian/x64 · docker · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · rubygems@1 · 2026-08-17 · ed25519:d91480838ac982c9