1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
--
-- | Generate the initial @index state
--
import Text.HTML.TagSoup
import Data.List
main = interact (unlines . go [] . parseTags)
go mods (TagOpen "td" [("class","src")] : TagText ident : xs) =
nub mods ++ ["" | not (null mods)] ++ ident : go [] xs
go mods (TagOpen "td" [("class","module")] : xs) =
let (ys, zs) = span (not . isTagCloseName "td") xs in
go (mods ++ words (filter (/= ',') (innerText ys))) zs
go mods (x : xs) = go mods xs
go mods [] = nub mods ++ ["" | not (null mods)]
|