git.iko.soy/typeable/pandoc
on master help sign in
Factor out applyDefaults in T.P.A.CommandLineOptions.
1b69d5eJohn MacFarlane
src/Text/Pandoc/App/CommandLineOptions.hs+24−20
@@ -161,26 +161,11 @@ options =
161
161
162 , Option "d" ["defaults"]
162 , Option "d" ["defaults"]
163 (ReqArg
163 (ReqArg
164− (\arg opt -> runIOorExplode $ do
164+ (\arg opt -> do
165− setVerbosity $ optVerbosity opt
166− let fp = if null (takeExtension arg)
165+ let fp' = if null (takeExtension arg)
167− then addExtension arg "yaml"
166+ then addExtension arg "yaml"
168− else arg
167+ else arg
169− dataDirs <- liftIO defaultUserDataDirs
168+ foldM applyDefaults opt [fp']
170− let fps = case optDataDir opt of
171− Nothing -> (fp : map (</> ("defaults" </> fp))
172− dataDirs)
173− Just dd -> [fp, dd </> "defaults" </> fp]
174− fp' <- fromMaybe fp <$> findFile fps
175− inp <- readFileLazy fp'
176− case Y.decode1 inp of
177− Right (f :: Opt -> Opt) -> return $ f opt
178− Left (errpos, errmsg) -> throwError $
179− PandocParseError $
180− "Error parsing " ++ fp' ++ " line " ++
181− show (Y.posLine errpos) ++ " column " ++
182− show (Y.posColumn errpos) ++ ":\n" ++ errmsg
183−
184 )
169 )
185 "FILE")
170 "FILE")
186 ""
171 ""
@@ -995,6 +980,25 @@ splitField s =
995 (k,_:v) -> (k,v)
980 (k,_:v) -> (k,v)
996 (k,[]) -> (k,"true")
981 (k,[]) -> (k,"true")
997
982
983+-- | Apply defaults from --defaults file.
984+applyDefaults :: Opt -> FilePath -> IO Opt
985+applyDefaults opt fp = runIOorExplode $ do
986+ setVerbosity $ optVerbosity opt
987+ dataDirs <- liftIO defaultUserDataDirs
988+ let fps = case optDataDir opt of
989+ Nothing -> (fp : map (</> ("defaults" </> fp))
990+ dataDirs)
991+ Just dd -> [fp, dd </> "defaults" </> fp]
992+ fp' <- fromMaybe fp <$> findFile fps
993+ inp <- readFileLazy fp'
994+ case Y.decode1 inp of
995+ Right (f :: Opt -> Opt) -> return $ f opt
996+ Left (errpos, errmsg) -> throwError $
997+ PandocParseError $
998+ "Error parsing " ++ fp' ++ " line " ++
999+ show (Y.posLine errpos) ++ " column " ++
1000+ show (Y.posColumn errpos) ++ ":\n" ++ errmsg
1001+
998lookupHighlightStyle :: PandocMonad m => String -> m Style
1002lookupHighlightStyle :: PandocMonad m => String -> m Style
999lookupHighlightStyle s
1003lookupHighlightStyle s
1000 | takeExtension s == ".theme" = -- attempt to load KDE theme
1004 | takeExtension s == ".theme" = -- attempt to load KDE theme