]> git.wincent.com - docvim.git/blob - lib/Docvim/Visitor/Option.hs
Initial cut at @mapping, @command, @option, @function
[docvim.git] / lib / Docvim / Visitor / Option.hs
1 {-# LANGUAGE LambdaCase #-}
2
3 module Docvim.Visitor.Option (extractOption) where
4
5 import Control.Applicative (Alternative)
6 import Docvim.AST (Node(OptionAnnotation))
7 import Docvim.Visitor (endSection, extractBlocks)
8
9 -- | Extracts a list of nodes (if any exist) identified by the `@option`
10 -- annotation of the source code.
11 extractOption :: Alternative f => [Node] -> (f [Node], [Node])
12 extractOption = extractBlocks f
13   where
14     f = \case
15       OptionAnnotation {} -> Just endSection
16       _                   -> Nothing