@@ -117,19 +117,6 @@ data OMathTextStyle = OPlain
117
117
| OBoldItalic
118
118
deriving (Show , Eq )
119
119
120
- elemToBase :: Element -> Maybe Exp
121
- elemToBase element | isElem " m" " e" element = do
122
- bs <- elemToBases element
123
- return $ case bs of
124
- (e : [] ) -> e
125
- exps -> EGrouped exps
126
- elemToBase _ = Nothing
127
-
128
- elemToBases :: Element -> Maybe [Exp ]
129
- elemToBases element | isElem " m" " e" element =
130
- return $ concat $ mapMaybe elemToExps' (elChildren element)
131
- elemToBases _ = Nothing
132
-
133
120
134
121
breakOnAmpersand :: [Exp ] -> [[Exp ]]
135
122
breakOnAmpersand = splitWhen isAmpersand
@@ -234,9 +221,27 @@ oMathRunTextStyleToTextType (Styled scr sty)
234
221
Just $ TextBoldItalic
235
222
| otherwise = Nothing
236
223
224
+ elemsToExps :: [Element ] -> [Exp ]
225
+ elemsToExps = concat . mapMaybe elemToExps
226
+
237
227
elemToExps :: Element -> Maybe [Exp ]
238
228
elemToExps element = unGroup <$> elemToExps' element
239
229
230
+ elemToBase :: Element -> Maybe Exp
231
+ elemToBase element | isElem " m" " e" element = do
232
+ bs <- elemToBases element
233
+ return $ case bs of
234
+ (e : [] ) -> e
235
+ exps -> EGrouped exps
236
+ elemToBase _ = Nothing
237
+
238
+ elemToBases :: Element -> Maybe [Exp ]
239
+ elemToBases element | isElem " m" " e" element =
240
+ return $ concat $ mapMaybe elemToExps' (elChildren element)
241
+ elemToBases _ = Nothing
242
+
243
+
244
+
240
245
elemToExps' :: Element -> Maybe [Exp ]
241
246
elemToExps' element | isElem " m" " acc" element = do
242
247
let chr = filterChildName (hasElemName " m" " accPr" ) element >>=
@@ -301,8 +306,8 @@ elemToExps' element | isElem "m" "f" element = do
301
306
let barType = filterChildName (hasElemName " m" " fPr" ) element >>=
302
307
filterChildName (hasElemName " m" " type" ) >>=
303
308
findAttrBy (hasElemName " m" " val" )
304
- let numExp = EGrouped $ concat $ mapMaybe elemToExps (elChildren num)
305
- denExp = EGrouped $ concat $ mapMaybe elemToExps (elChildren den)
309
+ let numExp = EGrouped $ elemsToExps (elChildren num)
310
+ denExp = EGrouped $ elemsToExps (elChildren den)
306
311
case barType of
307
312
Just " noBar" -> Just [EFraction NoLineFrac numExp denExp]
308
313
_ -> Just [EFraction NormalFrac numExp denExp]
@@ -350,14 +355,14 @@ elemToExps' element | isElem "m" "limLow" element = do
350
355
baseExp <- filterChildName (hasElemName " m" " e" ) element
351
356
>>= elemToBase
352
357
limExp <- filterChildName (hasElemName " m" " lim" ) element
353
- >>= (\ e -> Just $ concat $ mapMaybe elemToExps (elChildren e))
358
+ >>= (\ e -> Just $ elemsToExps (elChildren e))
354
359
>>= (return . EGrouped )
355
360
return [EUnder True baseExp limExp]
356
361
elemToExps' element | isElem " m" " limUpp" element = do
357
362
baseExp <- filterChildName (hasElemName " m" " e" ) element
358
363
>>= elemToBase
359
364
limExp <- filterChildName (hasElemName " m" " lim" ) element
360
- >>= (\ e -> Just $ concat $ mapMaybe elemToExps (elChildren e))
365
+ >>= (\ e -> Just $ elemsToExps (elChildren e))
361
366
>>= (return . EGrouped )
362
367
return [EOver True baseExp limExp]
363
368
elemToExps' element | isElem " m" " m" element =
@@ -381,9 +386,9 @@ elemToExps' element | isElem "m" "nary" element = do
381
386
filterChildName (hasElemName " m" " limLoc" ) >>=
382
387
findAttrBy (hasElemName " m" " val" )
383
388
subExps <- filterChildName (hasElemName " m" " sub" ) element >>=
384
- ( \ e -> return $ concat $ mapMaybe elemToExps ( elChildren e))
389
+ return . elemsToExps . elChildren
385
390
supExps <- filterChildName (hasElemName " m" " sup" ) element >>=
386
- ( \ e -> return $ concat $ mapMaybe elemToExps ( elChildren e))
391
+ return . elemsToExps . elChildren
387
392
let baseExp = maybeToList $
388
393
filterChildName (hasElemName " m" " e" ) element >>= elemToBase
389
394
case limLoc of
@@ -404,17 +409,17 @@ elemToExps' element | isElem "m" "phant" element = do
404
409
return [EPhantom baseExp]
405
410
elemToExps' element | isElem " m" " rad" element = do
406
411
degExps <- filterChildName (hasElemName " m" " deg" ) element >>=
407
- ( \ e -> return $ concat $ mapMaybe elemToExps ( elChildren e))
412
+ return . elemsToExps . elChildren
408
413
baseExp <- filterChildName (hasElemName " m" " e" ) element >>=
409
414
elemToBase
410
415
return $ case degExps of
411
416
[] -> [ESqrt baseExp]
412
417
ds -> [ERoot (EGrouped ds) baseExp]
413
418
elemToExps' element | isElem " m" " sPre" element = do
414
419
subExps <- filterChildName (hasElemName " m" " sub" ) element >>=
415
- ( \ e -> return $ concat $ mapMaybe elemToExps ( elChildren e))
420
+ return . elemsToExps . elChildren
416
421
supExps <- filterChildName (hasElemName " m" " sup" ) element >>=
417
- ( \ e -> return $ concat $ mapMaybe elemToExps ( elChildren e))
422
+ return . elemsToExps . elChildren
418
423
baseExp <- filterChildName (hasElemName " m" " e" ) element >>=
419
424
elemToBase
420
425
return [ESubsup
@@ -426,21 +431,21 @@ elemToExps' element | isElem "m" "sSub" element = do
426
431
baseExp <- filterChildName (hasElemName " m" " e" ) element >>=
427
432
elemToBase
428
433
subExps <- filterChildName (hasElemName " m" " sub" ) element >>=
429
- ( \ e -> return $ concat $ mapMaybe elemToExps ( elChildren e))
434
+ return . elemsToExps . elChildren
430
435
return [ESub baseExp (EGrouped subExps)]
431
436
elemToExps' element | isElem " m" " sSubSup" element = do
432
437
baseExp <- filterChildName (hasElemName " m" " e" ) element >>=
433
438
elemToBase
434
439
subExps <- filterChildName (hasElemName " m" " sub" ) element >>=
435
- ( \ e -> return $ concat $ mapMaybe elemToExps ( elChildren e))
440
+ return . elemsToExps . elChildren
436
441
supExps <- filterChildName (hasElemName " m" " sup" ) element >>=
437
- ( \ e -> return $ concat $ mapMaybe elemToExps ( elChildren e))
442
+ return . elemsToExps . elChildren
438
443
return [ESubsup baseExp (EGrouped subExps) (EGrouped supExps)]
439
444
elemToExps' element | isElem " m" " sSup" element = do
440
445
baseExp <- filterChildName (hasElemName " m" " e" ) element >>=
441
446
elemToBase
442
447
supExps <- filterChildName (hasElemName " m" " sup" ) element >>=
443
- ( \ e -> return $ concat $ mapMaybe elemToExps ( elChildren e))
448
+ return . elemsToExps . elChildren
444
449
return [ESuper baseExp (EGrouped supExps)]
445
450
elemToExps' element | isElem " m" " r" element = do
446
451
let mrPr = filterChildName (hasElemName " m" " rPr" ) element
0 commit comments