@@ -78,15 +78,15 @@ tests =
78 "A * symbol" =?>
78 "A * symbol" =?>
79 para (str "A" <> space <> str "*" <> space <> "symbol")
79 para (str "A" <> space <> str "*" <> space <> "symbol")
81− , "Superscript single char" =:
81+ , "Superscript simple expression" =:
82− "2^n" =?>
82+ "2^-λ" =?>
83− para (str "2" <> superscript "n")
83+ para (str "2" <> superscript "-λ")
85 , "Superscript multi char" =:
85 , "Superscript multi char" =:
86 "2^{n-1}" =?>
86 "2^{n-1}" =?>
87 para (str "2" <> superscript "n-1")
87 para (str "2" <> superscript "n-1")
89− , "Subscript single char" =:
89+ , "Subscript simple expression" =:
91 para (str "a" <> subscript "n")
91 para (str "a" <> subscript "n")
@@ -105,11 +105,8 @@ tests =
107 , "No empty markup" =:
107 , "No empty markup" =:
108− -- FIXME: __ is erroneously parsed as subscript "_"
109− -- "// ** __ ++ == ~~ $$" =?>
108+ "// ** __ ++ == ~~ $$" =?>
110− -- para (spcSep [ "//", "**", "__", "++", "==", "~~", "$$" ])
109+ para (spcSep [ "//", "**", "__", "++", "==", "~~", "$$" ])
111− "// ** ++ == ~~ $$" =?>
112− para (spcSep [ "//", "**", "++", "==", "~~", "$$" ])
114 , "Adherence to Org's rules for markup borders" =:
111 , "Adherence to Org's rules for markup borders" =:
115 "/t/& a/ / ./r/ (*l*) /e/! /b/." =?>
112 "/t/& a/ / ./r/ (*l*) /e/! /b/." =?>
@@ -143,6 +140,30 @@ tests =
144 , "emph/" ])
141 , "emph/" ])
143+ , "Sub- and superscript expressions" =:
144+ unlines [ "a_(a(b)(c)d)"
155+ para (spcSep [ "a" <> subscript "(a(b)(c)d)"
156+ , "e" <> superscript "(f(g)h)"
157+ , "i" <> (subscript "(jk)") <> "l)"
158+ , "m" <> (superscript "()") <> "n"
159+ , "o" <> subscript "p{q{}r}"
160+ , "s" <> superscript "t{u}v"
161+ , "w" <> (subscript "xy") <> "z}"
162+ , "1" <> (superscript "") <> "2"
163+ , "3" <> subscript "{}"
164+ , "4" <> superscript ("(a(" <> strong "b(c" <> ")d))")
146 , "Image" =:
167 , "Image" =:
147 "[[./sunset.jpg]]" =?>
168 "[[./sunset.jpg]]" =?>
148 (para $ image "./sunset.jpg" "" "")
169 (para $ image "./sunset.jpg" "" "")