Guest User

Untitled

a guest
Jul 22nd, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.62 KB | None | 0 0
  1. -- Orgdex - an indexer for org-mode files
  2.  
  3. module Orgdex where
  4. import Text.ParserCombinators.Parsec
  5.  
  6. myTest = parse node "org-mode" "** TODO Foo :tags:here:"
  7.  
  8. node :: Parser (Int, Maybe String, String, [String])
  9. node = do
  10. level <- many1 (char '*')
  11. many1 space
  12. keyword <- optionMaybe keyword
  13. node <- many1 (noneOf ":")
  14. tags <- ((many1 space) >> tags) <|> return []
  15. return ((length level), keyword, node, tags)
  16.  
  17. keyword :: Parser String
  18. keyword = do
  19. keyword <- many1 upper
  20. many1 space
  21. return keyword
  22.  
  23. tags :: Parser [String]
  24. tags = (char ':') >>
  25. (sepEndBy1 (many1 alphaNum) (char ':'))
  26. <?> "Tag list"
Add Comment
Please, Sign In to add comment