Add slugify() string helper #2

Open
opened 2026-06-24 01:04:05 +02:00 by jleicher · 0 comments
Owner

Banc d'essai du workflow AFK (voir docs/agents/afk-agent-prd.md). Petite tâche
auto-contenue, entièrement spécifiée, pour valider de bout en bout : claim →
implémentation → deno task ci vert → MR. Aucune décision d'archi à prendre.

Objectif

Ajouter un helper slugify qui transforme un texte libre en slug URL-safe.

Spécification

  • Fichier : src/slugify.ts, export nommé slugify.
  • Signature : export function slugify(input: string): string.
  • Comportement :
    • Minuscules.
    • Espaces (et runs d'espaces) → un seul tiret -.
    • Supprime tout caractère non [a-z0-9-] après normalisation.
    • Effondre les tirets consécutifs en un seul.
    • Trim les tirets en début/fin.

Critères d'acceptation

  • slugify("Hello, World!") === "hello-world"
  • slugify(" Multiple Spaces ") === "multiple-spaces"
  • slugify("Déjà vu") === "dj-vu" (les accents non-ASCII sont supprimés, pas translittérés)
  • slugify("") === ""
  • slugify("---a---b---") === "a-b"
  • Tests dans src/slugify_test.ts couvrant les cas ci-dessus (@std/assert).
  • deno task ci vert (check + lint + test).

Hors scope

  • Translittération des accents (é → e). Comportement figé : on supprime les non-ASCII.
  • Toute intégration ailleurs dans le code (helper autonome).

Parent

None

Blocked by: None

Banc d'essai du workflow AFK (voir `docs/agents/afk-agent-prd.md`). Petite tâche auto-contenue, entièrement spécifiée, pour valider de bout en bout : claim → implémentation → `deno task ci` vert → MR. Aucune décision d'archi à prendre. ## Objectif Ajouter un helper `slugify` qui transforme un texte libre en slug URL-safe. ## Spécification - Fichier : `src/slugify.ts`, export nommé `slugify`. - Signature : `export function slugify(input: string): string`. - Comportement : - Minuscules. - Espaces (et runs d'espaces) → un seul tiret `-`. - Supprime tout caractère non `[a-z0-9-]` après normalisation. - Effondre les tirets consécutifs en un seul. - Trim les tirets en début/fin. ## Critères d'acceptation - `slugify("Hello, World!")` === `"hello-world"` - `slugify(" Multiple Spaces ")` === `"multiple-spaces"` - `slugify("Déjà vu")` === `"dj-vu"` (les accents non-ASCII sont supprimés, pas translittérés) - `slugify("")` === `""` - `slugify("---a---b---")` === `"a-b"` - Tests dans `src/slugify_test.ts` couvrant les cas ci-dessus (`@std/assert`). - `deno task ci` vert (check + lint + test). ## Hors scope - Translittération des accents (é → e). Comportement figé : on *supprime* les non-ASCII. - Toute intégration ailleurs dans le code (helper autonome). ## Parent None Blocked by: None
ernest self-assigned this 2026-06-24 01:05:21 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
jleicher/aitonomous#2
No description provided.