packages feed

astview 0.1.1 → 0.1.2

raw patch · 5 files changed

+48/−1 lines, 5 files

Files

astview.cabal view
@@ -1,5 +1,5 @@ Name:            astview-Version:         0.1.1+Version:         0.1.2 License:         BSD4 License-File:    LICENSE Author:          @@ -28,6 +28,10 @@                  data/HaskellExtParser.hs                  data/astview.html                  data/astview-tmpl.html+                 data/EX1.hs+                 data/EX2.hs+                 data/EX3.hs+                 data/EX4.hs                  data/style.css                  data/LICENSE.unwrapped 
+ data/EX1.hs view
@@ -0,0 +1,4 @@+data Parser +  = Parser { name :: String+           , exts :: [String]+           , tree :: String -> Tree String}
+ data/EX2.hs view
@@ -0,0 +1,12 @@+haskell :: Parser+haskell =  Parser "Haskell" [".hs"] buildTreeHaskell++buildTreeHaskell :: String -> Tree String+buildTreeHaskell s = case parseHaskell s of+     Right ast -> flat $ data2tree (ast::HsModule)+     Left ParseError -> Node "ParseError" []++parseHaskell :: (Data a) => String -> Either ParseError a+parseHaskell s = case parseModule s of+  ParseOk p -> unsafeCoerce $ Right p+  _         -> Left ParseError
+ data/EX3.hs view
@@ -0,0 +1,2 @@+parsers :: [Parser]+parsers = haskell:stdParserData
+ data/EX4.hs view
@@ -0,0 +1,25 @@+user@host:path$ cd ~/.cabal/share/astview-0.2/data+user@host:~/.cabal/share/astview-0.2/data$ ghci Parsers.hs++-- ghci package-messages stripped++*Parsers> :info Parser+data Parser+  = Parser {name :: !String,+            exts :: [String],+            tree :: String -> Tree String}++-- show all registered parsers+*Parsers> map name parsers                                            +["Haskell","CSV","Expr","Java","IsoPascal","C","Glade","List"]++-- get haskell parser+*Parsers> let haskell = head parsers                                 ++-- build a sample tree of strings+*Parsers> let sample = tree haskell "main = putStrLn \"Hello World\""++-- draw the tree+*Parsers> putStrLn $ Data.Tree.drawTree sample++-- lengthy output follows