-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A build-system library and driver -- -- Soon to appear. @package cake @version 0.3.2.1 -- | This module provides the Parsek library developed by Koen -- Claessen in his functional pearl article Parallel Parsing -- Processes, Journal of Functional Programming, 14(6), 741–757, -- Cambridge University Press, 2004: -- -- http://www.cs.chalmers.se/~koen/pubs/entry-jfp04-parser.html -- -- http://www.cs.chalmers.se/Cs/Grundutb/Kurser/afp/ -- -- -- http://www.cs.chalmers.se/Cs/Grundutb/Kurser/afp/code/week3/Parsek.hs -- -- Copyright (C) 2003 Koen Claessen -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 of the License, or (at -- your option) any later version. -- -- This program is distributed in the hope that it will be useful, but -- WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -- 02110-1301 USA. -- -- PureFP.Parsers.Stream module Parsek data Parser s a type Expect = [String] type Unexpect = [String] satisfy :: Show s => (s -> Bool) -> Parser s s look :: Parser s [s] succeeds :: Parser s a -> Parser s (Maybe a) string :: (Eq s, Show s) => [s] -> Parser s [s] char :: (Eq t, Show t) => t -> Parser t t noneOf :: (Eq a, Show a) => [a] -> Parser a a oneOf :: (Eq a, Show a) => [a] -> Parser a a spaces :: Parser Char () space :: Parser Char Char newline :: Parser Char Char tab :: Parser Char Char upper :: Parser Char Char lower :: Parser Char Char alphaNum :: Parser Char Char letter :: Parser Char Char digit :: Parser Char Char hexDigit :: Parser Char Char octDigit :: Parser Char Char anyChar :: Parser s s anySymbol :: Parser s s munch :: (s -> Bool) -> Parser s [s] munch1 :: Show s => (s -> Bool) -> Parser s [s] label :: Parser s a -> String -> Parser s a () :: Parser s a -> String -> Parser s a pzero :: Parser s a (<|>) :: Parser s a -> Parser s a -> Parser s a (<<|>) :: Parser s a -> Parser s a -> Parser s a try :: Parser s a -> Parser s a choice :: [Parser s a] -> Parser s a option :: a -> Parser s a -> Parser s a optional :: Parser s a -> Parser s () between :: Parser s open -> Parser s close -> Parser s a -> Parser s a count :: Int -> Parser s a -> Parser s [a] chainr1, chainl1 :: Parser s a -> Parser s (a -> a -> a) -> Parser s a chainr, chainl :: Parser s a -> Parser s (a -> a -> a) -> a -> Parser s a skipMany1, skipMany :: Parser s a -> Parser s () many1, many :: Parser s a -> Parser s [a] sepBy1, sepBy :: Parser s a -> Parser s sep -> Parser s [a] type ParseMethod s a e r = P s a -> [s] -> ParseResult e r type ParseResult e r = Either (e, Expect, Unexpect) r parseFromFile :: Parser Char a -> ParseMethod Char a e r -> FilePath -> IO (ParseResult e r) parse :: Parser s a -> ParseMethod s a e r -> [s] -> ParseResult e r shortestResult :: ParseMethod s a (Maybe s) a longestResult :: ParseMethod s a (Maybe s) a longestResults :: ParseMethod s a (Maybe s) [a] allResults :: ParseMethod s a (Maybe s) [a] allResultsStaged :: ParseMethod s a (Maybe s) [[a]] completeResults :: ParseMethod s a (Maybe s) [a] shortestResultWithLeftover :: ParseMethod s a (Maybe s) (a, [s]) longestResultWithLeftover :: ParseMethod s a (Maybe s) (a, [s]) longestResultsWithLeftover :: ParseMethod s a (Maybe s) ([a], Maybe [s]) allResultsWithLeftover :: ParseMethod s a (Maybe s) [(a, [s])] completeResultsWithLine :: ParseMethod Char a Int [a] instance MonadPlus (Parser s) instance Monad (Parser s) instance Functor (Parser s) module Cake.Core -- | Rules map names of files to actions building them. type Rule = P (Act ()) type P = Parser Char (==>) :: P x -> (x -> Act a) -> Rule data Act a -- | Run an action in the context of a set of rules. cake :: Rule -> Act () -> IO () -- | Try to build a file using known rules; then mark it as used. need :: FilePath -> Act () -- | List directory contents by extension list :: FilePath -> [Char] -> Act [String] -- | Produce a file, using with the given action. The action should be -- independent of the context. produce :: FilePath -> Act () -> Act () -- | Produce a file, using with the given action. The action should be -- independent of the context. BUT: no problem to produce the same file -- multiple times. produce' :: FilePath -> Act () -> Act Answer -- | Mark that a file is used. Do not chase dependencies on this file -- though. use :: FilePath -> Act Answer -- | File was modified by some command, but in a way that does not -- invalidate previous computations. (This is probably only useful for -- latex processing). overwrote :: FilePath -> Act Answer debug :: String -> Act () -- | Answer a question using the action given. The action should be -- independent of the context. distill :: Question -> Act Answer -> Act Answer fileStamp :: MonadIO m => FilePath -> m Answer cut :: Act () -> Act () -- | Run the argument in a clean context, and do not clobber the state even -- if the argument does that. To use when the construction of the -- argument actually does not depend on the previous questions asked, and -- the constructed thing is atomic for the environment. shielded :: Act a -> Act a data Question FileContents :: FilePath -> Question Listing :: FilePath -> String -> Question Custom :: [String] -> Question data Answer Stamp :: (Maybe MD5Digest) -> Answer Text :: [String] -> Answer instance Eq Status instance Functor Act instance Applicative Act instance Monad Act instance MonadIO Act instance MonadState State Act instance MonadWriter Written Act instance MonadReader Context Act instance Alternative P instance Applicative P instance Show Question instance Binary Answer instance Eq Answer instance Show Answer instance Binary Question instance Eq Question instance Ord Question module Cake.Process processIO :: FilePath -> [String] -> Maybe FilePath -> Maybe FilePath -> Act () system :: [String] -> Act () module Cake.Rules extension :: String -> P (String, String) anyExtension :: [String] -> P (String, String) copy :: FilePath -> FilePath -> Act () mkdir :: FilePath -> Act () touch :: FilePath -> Act () readFile :: FilePath -> Act String _pdflatex :: String -> Act () _bibtex :: String -> Act () pandoc :: FilePath -> String -> [String] -> Act () graphviz :: String -> FilePath -> String -> [String] -> Act () needing :: [FilePath] -> Act () -> Act () simple :: String -> [Char] -> (String -> [Char] -> Act ()) -> Rule tex_markdown_standalone :: Rule pdf_tex :: Rule getBibFiles :: String -> Act Answer includedTex :: FilePath -> Act [[Char]] chaseDeps :: FilePath -> Act () pdflatexBibtex :: [Char] -> Act () pdf_tex_bibtex :: Rule pdflatexBiblatex :: [Char] -> Act () pdf_tex_biblatex :: Rule _lhs2TeX :: String -> String -> Act () lhs2tex :: [Char] -> Act () tex_lhs :: Rule allRules :: Parser Char (Act ()) module Cake