on master help sign in
IdrisDoc begun
877c638Philip Rasmussen
idris.cabal+1
@@ -474,6 +474,7 @@ Library
474 , Idris.Help
474 , Idris.Help
475 , Idris.IBC
475 , Idris.IBC
476 , Idris.IdeSlave
476 , Idris.IdeSlave
477+ , Idris.IdrisDoc
477 , Idris.Imports
478 , Idris.Imports
478 , Idris.Inliner
479 , Idris.Inliner
479 , Idris.Parser
480 , Idris.Parser
src/Idris/AbsSyntaxTree.hs+1
@@ -293,6 +293,7 @@ data Command = Quit
293 | ListErrorHandlers
293 | ListErrorHandlers
294 | SetConsoleWidth ConsoleWidth
294 | SetConsoleWidth ConsoleWidth
295 | Apropos String
295 | Apropos String
296+ | MakeDoc String -- IdrisDoc
296
297
297data Opt = Filename String
298data Opt = Filename String
298 | Ver
299 | Ver
src/Idris/IdrisDoc.hsnew file+21
@@ -0,0 +1,21 @@
1+module Idris.IdrisDoc (generateDocs, DocTarget) where
2+
3+import Idris.AbsSyntax (IState)
4+import Idris.Core.TT (Err')
5+
6+type Failable = Either String
7+
8+-- ist: IState
9+-- t: What do generate documentation for
10+-- ot: Where to output documentation
11+-- trm: Trace mode? (will generate documentation for referred modules)
12+generateDocs :: IState -> DocTarget -> Filepath -> Bool -> IO (Either String ())
13+generateDocs ist t ot trm = error "IdrisDoc has not been implemented yet..."
14+
15+error :: String -> IO (Failable ())
16+error s = return Left s
17+
18+-- Target to generate documentation for
19+-- Namespace ns: Generate documentation for the namespace identified by 'ns'
20+-- Dir d: Generate documentation for all namespaces in the directory 'd'
21+data DocTarget = Namespace String | Dir FilePath
src/Idris/REPL.hs+19
@@ -12,6 +12,7 @@ import Idris.Error
12import Idris.ErrReverse
12import Idris.ErrReverse
13import Idris.Delaborate
13import Idris.Delaborate
14import Idris.Docstrings (Docstring, overview, renderDocstring)
14import Idris.Docstrings (Docstring, overview, renderDocstring)
15+import Idris.IdrisDoc
15import Idris.Prover
16import Idris.Prover
16import Idris.Parser
17import Idris.Parser
17import Idris.Primitives
18import Idris.Primitives
@@ -975,6 +976,24 @@ process h fn (Apropos a) =
975 isUN (NS n _) = isUN n
976 isUN (NS n _) = isUN n
976 isUN _ = False
977 isUN _ = False
977
978
979+-- IdrisDoc
980+process h fn (MakeDoc s) =
981+ do istate <- getIState
982+ outputTarget <- runIO $ getCurrentDirectory
983+ let trim = dropWhile isSpace
984+ s' = trim s
985+ (trace, s'') = case (stripPrefix "notrace" s') of Just x -> (False, trim x)
986+ Nothing -> (True, s')
987+ target = let (front, back) = span (not . isSpace) s''
988+ in if front == "ns" then Namespace (trim back)
989+ else if front == "dir" then Dir (trim back)
990+ else if null s'' then Dir outputTarget
991+ else Namespace (s'')
992+ result <- runIO $ generateDocs istate target outputTarget trace
993+ case result of Right _ -> iputStrLn "IdrisDoc generated"
994+ Left err -> let u = "Usage: :mkdoc [notrace] [ns | dir] [TARGET]"
995+ in iPrintError err ++ "\n" ++ u
996+
978classInfo :: ClassInfo -> Idris ()
997classInfo :: ClassInfo -> Idris ()
979classInfo ci = do iputStrLn "Methods:\n"
998classInfo ci = do iputStrLn "Methods:\n"
980 mapM_ dumpMethod (class_methods ci)
999 mapM_ dumpMethod (class_methods ci)
src/Idris/REPLParser.hs+1
@@ -99,6 +99,7 @@ pCmd = do P.whiteSpace; try (do cmd ["q", "quit"]; eof; return Quit)
99 <|> try (do cmd ["errorhandlers"]; eof ; return ListErrorHandlers)
99 <|> try (do cmd ["errorhandlers"]; eof ; return ListErrorHandlers)
100 <|> try (do cmd ["consolewidth"]; w <- pConsoleWidth ; return (SetConsoleWidth w))
100 <|> try (do cmd ["consolewidth"]; w <- pConsoleWidth ; return (SetConsoleWidth w))
101 <|> try (do cmd ["apropos"]; str <- many anyChar ; return (Apropos str))
101 <|> try (do cmd ["apropos"]; str <- many anyChar ; return (Apropos str))
102+ <|> try (do cmd ["mkdoc"]; str <- many anyChar; return (MakeDoc str)) -- IdrisDoc
102 <|> do P.whiteSpace; do eof; return NOP
103 <|> do P.whiteSpace; do eof; return NOP
103 <|> do t <- P.fullExpr defaultSyntax; return (Eval t)
104 <|> do t <- P.fullExpr defaultSyntax; return (Eval t)
104
105