From ee539f2855b4e90a4fea5cb607f0c38f3480f790 Mon Sep 17 00:00:00 2001 From: mgros Date: Tue, 22 Sep 2026 01:56:01 +0200 Subject: [PATCH] Add German ClearSpeak rule and tests for pause intent --- Rules/Languages/de/ClearSpeak_Rules.yaml | 15 +++++++++++++++ tests/Languages/de/intent.rs | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/Rules/Languages/de/ClearSpeak_Rules.yaml b/Rules/Languages/de/ClearSpeak_Rules.yaml index 8d23c3502..d2551ffef 100644 --- a/Rules/Languages/de/ClearSpeak_Rules.yaml +++ b/Rules/Languages/de/ClearSpeak_Rules.yaml @@ -1,4 +1,19 @@ --- +- name: pause + tag: "!*" + match: "not(self::m:math) and not($MatchingPause) and @data-intent-property[contains(., ':pause')]" + replace: + - with: + variables: [MatchingPause: "true()"] + replace: + - test: + - if: "contains(@data-intent-property, ':pause-long')" + then: [pause: long] + - else_if: "contains(@data-intent-property, ':pause-short')" + then: [pause: short] + else: [pause: medium] + - x: "." + - name: intent-literal-silent tag: [mi, mo, mn] match: "contains(@data-intent-property, ':silent:')" diff --git a/tests/Languages/de/intent.rs b/tests/Languages/de/intent.rs index a93e49d2d..62e711db6 100644 --- a/tests/Languages/de/intent.rs +++ b/tests/Languages/de/intent.rs @@ -3,6 +3,27 @@ use crate::common::*; use anyhow::Result; +#[test] +fn clear_speak_short_pause_intent() -> Result<()> { + // A short pause intent should survive intent inference and render as a comma. + let expr = "xy"; + test("de", "ClearSpeak", expr, "x, y") +} + +#[test] +fn clear_speak_medium_pause_intent() -> Result<()> { + // An unsuffixed pause intent requests the default medium pause. + let expr = "xy"; + test("de", "ClearSpeak", expr, "x; y") +} + +#[test] +fn clear_speak_long_pause_intent() -> Result<()> { + // A long pause intent should be preserved in ClearSpeak text output. + let expr = "xy"; + test("de", "ClearSpeak", expr, "x; y") +} + #[test] fn silent_intent() -> Result<()> {