]> git.wincent.com - docvim.git/blob - lib/Docvim/Visitor/Footer.hs
7bd35c472eddc4b85ae1c0e5455dbe954f7488b3
[docvim.git] / lib / Docvim / Visitor / Footer.hs
1 module Docvim.Visitor.Footer (extractFooter) where
2
3 import Control.Applicative (Alternative)
4 import Docvim.AST (Node(FooterAnnotation))
5 import Docvim.Visitor (endBlock, extractBlocks)
6
7 -- | Extracts a list of nodes (if any exist) from the `@footer` section(s) of
8 -- the source code.
9 --
10 -- It is not recommended to have multiple footers in a project. If multiple
11 -- footers (potentially across multiple translation units) exist, there are no
12 -- guarantees about order but they just get concatenated in the order we see
13 -- them.
14 extractFooter :: Alternative f => [Node] -> (f [Node], [Node])
15 extractFooter = extractBlocks f
16   where
17     f x = if x == FooterAnnotation
18           then Just endBlock
19           else Nothing