summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/lab/index.html15
-rw-r--r--src/features.fea11
2 files changed, 20 insertions, 6 deletions
diff --git a/docs/lab/index.html b/docs/lab/index.html
index c32742bd2..3ced1f065 100644
--- a/docs/lab/index.html
+++ b/docs/lab/index.html
@@ -153,11 +153,16 @@ A*Y V*V W*W N*N X*X
Λ*Λ Σ*Σ Δ*Δ Y*Y &*
calt case should cascade:
-U() U[] U{} — rightx should be rightx.case
-()U []U {}U — special-cased as "delim' delim -> delim.case"
-U--- — all hyphens should be hyphen.case
----U — only the hyphen next to U should be hyphen.case
-U-→(){}[]*
+U() U[] U{} rightx should be rightx.case
+()U []U {}U special-cased as "delim' delim -> delim.case"
+---U--- all hyphens should be hyphen.case
+U-→(){}[]* all should be .case
+
+left side cascades up to 5 characters:
+******ABBA******
+------M------
+@@@@@@M@@@@@@
+++++++M++++++
`)
// From http://justanotherfoundry.com/generator
diff --git a/src/features.fea b/src/features.fea
index 17fda3d22..4a0db3bdf 100644
--- a/src/features.fea
+++ b/src/features.fea
@@ -715,9 +715,18 @@ feature calt {
@UC = [ @UC_ROMAN @UC_SET1 exclam question ];
@LC = [ @LC_ROMAN @LC_SET1 ];
+ # rules to support left-hand repetition of CASE{L}->{R} [issue #57]
+ # y' y y y Z -> x y y y Z
+ sub @CASE_L' @CASE_L @CASE_L @CASE_L @CASE_L @UC by @CASE_R;
+ # y' y y y Z -> x y y y Z
+ sub @CASE_L' @CASE_L @CASE_L @CASE_L @UC by @CASE_R;
+ # y' y y Z -> x y y Z
+ sub @CASE_L' @CASE_L @CASE_L @UC by @CASE_R;
+ # y' y Z -> x y Z
+ sub @CASE_L' @CASE_L @UC by @CASE_R;
+
sub [ @UC @CASE_R ] @CASE_L' by @CASE_R;
ignore sub @LC @CASE_NONDELIM_L' @UC;
- sub @CASE_L' [ @CASE_R @UC ] by @CASE_R;
sub @CASE_DELIM_L' @CASE_DELIM_L [ @CASE_R @UC ] by @CASE_DELIM_R;