diff --git a/langfilter/Glosses.hs b/langfilter/Glosses.hs index 73244a8..2250b2b 100644 --- a/langfilter/Glosses.hs +++ b/langfilter/Glosses.hs @@ -29,35 +29,39 @@ glosses = \case pattern Gloss l g w t = BulletList [[Plain l], [Plain g], [Plain w], [Plain t]] pattern PGloss l p g w t = BulletList [[Plain l], [Plain p], [Plain g], [Plain w], [Plain t]] +pattern PNGloss l b n g w t = + BulletList [[Plain l], [Plain b], [Plain n], [Plain g], [Plain w], [Plain t]] glossTable :: Vars => Block -> IO (Maybe Block) glossTable = \case - Gloss l s g t -> Just <$> make l Nothing s g t - PGloss l p s g t -> Just <$> make l (Just p) s g t - HorizontalRule -> pure Nothing - b -> error $ "found " ++ show b ++ " in gloss section" + Gloss l s g t -> Just <$> make l Nothing Nothing s g t + PGloss l p s g t -> Just <$> make l (Just p) Nothing s g t + PNGloss l b n s g t -> Just <$> make l (Just b) (Just n) s g t + HorizontalRule -> pure Nothing + b -> error $ "found " ++ show b ++ " in gloss section" where - make l p s g t = do - let n = length $ splitInlines s - let colspecs = replicate n (AlignDefault, ColWidthDefault) - let l' = cell1 n $ underlines l; p' = cell1 n <$> p - let ss = cells s; gs = cells g; t' = cell1 n t + make l b n s g t = do + let ℓ = length $ splitInlines s + let colspecs = replicate ℓ (AlignDefault, ColWidthDefault) + let l' = cell1 ℓ $ underlines l; b' = cell1 ℓ <$> b; n' = cell1 ℓ <$> n + let ss = cells s; gs = cells g; t' = cell1 ℓ t img <- case ?lang of Just Lántas -> - [Just $ cell1 n [img] | img <- makeImage $ splitImage' $ stripInlines l] + [Just $ cell1 ℓ [img] | img <- makeImage $ splitImage' $ stripInlines l] Nothing -> pure Nothing pure $ Table ("", ["gloss"], []) (Caption Nothing []) colspecs (TableHead mempty []) [TableBody mempty (RowHeadColumns 0) [] $ concat [[row ["gloss-scr", "scr"] [i] | Just i <- [img]], [row ["gloss-lang", "lang"] [l']], - [row ["gloss-pron", "ipa"] [p] | Just p <- [p']], + [row ["gloss-pron", "ipa"] [b] | Just b <- [b']], + [row ["gloss-pron", "ipa"] [n] | Just n <- [n']], [row ["gloss-split", "lang"] ss], [row ["gloss-gloss"] gs], [row ["gloss-trans"] [t']]]] (TableFoot mempty []) cell is = Cell mempty AlignDefault (RowSpan 1) (ColSpan 1) [Plain is] - cell1 n is = Cell mempty AlignDefault (RowSpan 1) (ColSpan n) [Plain is] + cell1 ℓ is = Cell mempty AlignDefault (RowSpan 1) (ColSpan ℓ) [Plain is] cells = map (cell . concatMap abbrs) . splitInlines row c = Row ("", c, [])