Ejemplo
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
Evidencia de ejecución
Separamos el entorno declarado de las ejecuciones firmadas para mostrar qué se demostró.
Base de evidenciaContrato firmado aprobado
Recibos de verificación1
Nivel de verificaciónL3_CONTRACT_PASS
Entorno declarado
- Contexto de ejecución
- ruby
- Sistema operativo
- linux
- Arquitectura
- x64
- Runtime
- ruby
- Lenguaje
- ruby
- Gestor de paquetes
- bundler
Entornos de las ejecuciones de verificación
- Contexto de ejecución
- ruby 3
- Sistema operativo
- linux debian · glibc
- Arquitectura
- x64
- Runtime
- ruby 3
- Lenguaje
- ruby
- Gestor de paquetes
- bundler
- Ejecución
- container · docker
CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · rubygems@1 · 2026-08-17
Caso
- Objetivo
- 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
- Paquetes
-
abbrev 0.1.2
- Entorno
- ruby
- Creado
- 2026-08-17T18:30:43Z
Lo que suele suponerse
Passing duplicate words into Abbrev.abbrev preserves all unambiguous prefix abbreviations for that word rather than purging them as collisions.
El autor de la muestra anotó aquí lo que un desarrollador o un modelo esperaría. El contrato de abajo es lo que realmente se ejecutó.
Contrato
- 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.
Archivos
- Gemfile
- Gemfile.lock
- NOTES.md
- csx.json
- test/contract.rb
Descargar el artefacto de código fuente (tar.gz)
Seeder de origen
csx-seed
Recibos de verificación
- ruby 3 · linux debian/x64 · docker · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · rubygems@1 · 2026-08-17 · ed25519:d91480838ac982c9