diff options
| author | Sébastien Dailly <sebastien@chimrod.com> | 2021-08-27 14:37:24 +0200 | 
|---|---|---|
| committer | Sébastien Dailly <sebastien@chimrod.com> | 2021-08-27 14:37:24 +0200 | 
| commit | c8b49eed4cf92e7d2dd01dce779ef84ccae733eb (patch) | |
| tree | 753547fc766a616e9c47aa78b32f047e73e7a7ef /src/lib/modifiers/mute.ml | |
| parent | 65d5990607e9542aa847ec7cb684afd3ffdedb8f (diff) | |
Splitted modifiers in own library
Diffstat (limited to 'src/lib/modifiers/mute.ml')
| -rw-r--r-- | src/lib/modifiers/mute.ml | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/modifiers/mute.ml b/src/lib/modifiers/mute.ml new file mode 100644 index 0000000..253df21 --- /dev/null +++ b/src/lib/modifiers/mute.ml @@ -0,0 +1,18 @@ +open StdLabels + +(** Mute the last consonant if there is no voyel in the syllabus. + +    This modifier is only applied in the first step, and not repeated anymore. +*)let process +  : 'a Sig.modifier +  = fun (type el) m init -> +    let module T = (val m:Sounds.T with type t = el) in +    let (((v1, v2), c) , ending) = init in +    let is_voyel = T.is_voyel v1 && T.is_voyel v2 in +    match is_voyel, c with +    | false, Some c -> +      let c = { c with Sig.opening = List.map ~f:T.muted c.Sig.opening } in +      (((v1, v2), Some c) , ending) +    | _ -> init + +  | 
