]> git.wincent.com - docvim.git/commitdiff
DRY up injection
authorGreg Hurrell <greg@hurrell.net>
Wed, 8 Jun 2016 06:15:31 +0000 (23:15 -0700)
committerGreg Hurrell <greg@hurrell.net>
Wed, 8 Jun 2016 06:15:31 +0000 (23:15 -0700)
lib/Docvim/Visitor/Section.hs

index 7133647efdb8d665029f2056f2c1cb05ffc6ae61..6121d543b5822ebe9ce002e4d724b0c0b3aa1c60 100644 (file)
@@ -75,42 +75,31 @@ getSectionInfo n = execState (mapMOf_ (cosmosOf uniplate) check n) defaultSectio
     check OptionsAnnotation      = hasOptions .= True
     check _                      = modify id
 
     check OptionsAnnotation      = hasOptions .= True
     check _                      = modify id
 
+-- | Appends a node to the end of a Project.
+inject :: Node -> Node -> Node
+inject (Project ns) n = Project $ ns ++ [n]
+inject other _ = other
+
 injectCommands :: Node -> Node
 injectCommands n =
 injectCommands :: Node -> Node
 injectCommands n =
-  if | info ^. hasCommands -> n
-     | info ^. hasCommand -> inject n
+  if | getSectionInfo n ^. hasCommands -> n
+     | getSectionInfo n ^. hasCommand -> inject n CommandsAnnotation
      | otherwise -> n
      | otherwise -> n
-  where
-    info = getSectionInfo n
-    inject (Project ns) = Project $ ns ++ [CommandsAnnotation]
-    inject _ = n
 
 injectFunctions :: Node -> Node
 injectFunctions n =
 
 injectFunctions :: Node -> Node
 injectFunctions n =
-  if | info ^. hasFunctions -> n
-     | info ^. hasFunction -> inject n
+  if | getSectionInfo n ^. hasFunctions -> n
+     | getSectionInfo n ^. hasFunction -> inject n FunctionsAnnotation
      | otherwise -> n
      | otherwise -> n
-  where
-    info = getSectionInfo n
-    inject (Project ns) = Project $ ns ++ [FunctionsAnnotation]
-    inject _ = n
 
 injectMappings :: Node -> Node
 injectMappings n =
 
 injectMappings :: Node -> Node
 injectMappings n =
-  if | info ^. hasMappings -> n
-     | info ^. hasMapping -> inject n
+  if | getSectionInfo n ^. hasMappings -> n
+     | getSectionInfo n ^. hasMapping -> inject n MappingsAnnotation
      | otherwise -> n
      | otherwise -> n
-  where
-    info = getSectionInfo n
-    inject (Project ns) = Project $ ns ++ [MappingsAnnotation]
-    inject _ = n
 
 injectOptions :: Node -> Node
 injectOptions n =
 
 injectOptions :: Node -> Node
 injectOptions n =
-  if | info ^. hasOptions -> n
-     | info ^. hasOption -> inject n
+  if | getSectionInfo n ^. hasOptions -> n
+     | getSectionInfo n ^. hasOption -> inject n OptionsAnnotation
      | otherwise -> n
      | otherwise -> n
-  where
-    info = getSectionInfo n
-    inject (Project ns) = Project $ ns ++ [OptionsAnnotation]
-    inject _ = n