leaf 1.0.0.0 → 1.0.1.1
raw patch · 2 files changed
+39/−27 lines, 2 files
Files
- leaf.cabal +4/−4
- src/Leaf.hs +35/−23
leaf.cabal view
@@ -2,15 +2,15 @@ -- see http://haskell.org/cabal/users-guide/ name: leaf-version: 1.0.0.0+version: 1.0.1.1 synopsis: A simple portfolio generator-description: leaf is a simple genererator with easy getting started and full support of Markdown.+description: leaf is a simple generator with easy getting started and full support of Markdown. homepage: https://github.com/skypers/leaf license: GPL-3 license-file: LICENSE author: Dimitri 'skp' Sabadie maintainer: dimitri.sabadie@gmail.com--- copyright: +-- copyright: category: Web build-type: Simple cabal-version: >=1.8@@ -25,7 +25,7 @@ source-repository this type: git location: git://github.com/skypers/leaf.git- tag: v1.0+ tag: 1.0.1.1 executable leaf
src/Leaf.hs view
@@ -37,7 +37,7 @@ treatArgs flag = case flag of Init name -> initFromScratch name- Bootstrap -> bootstrap+ Bootstrap -> bootstrap >> return () Generate -> generateHTML initFromScratch :: String -> IO ()@@ -47,34 +47,46 @@ writeFile (name </> "www/default.css") minimalCSSString putStrLn $ "initialised in ./" ++ name --- get the items of the current porfolio--- TODO: make it safer-getItems :: IO [String]+getItems :: IO (Maybe [String]) getItems = do- content <- readFile "leaf/wrapper.leaf"- return . map (dropWhile (==' ')) . splitWhen (==',') . join . drop 1 . splitWhen (==':') . join . filter (isPrefixOf "Items:") . lines $ content+ let path = "leaf" </> "wrapper.leaf"+ doesExist <- doesFileExist path+ if not doesExist then return Nothing else do+ content <- readFile "leaf/wrapper.leaf"+ return . Just $ map (dropWhile (==' ')) . splitWhen (==',') . join . drop 1 . splitWhen (==':') . join . filter (isPrefixOf "Items:") . lines $ content -bootstrap :: IO ()+bootstrap :: IO Bool bootstrap = do- items <- getItems- sequence_ $ flip appendFile "" . (\n -> "leaf" </> n ++ ".leafc") <$> items- putStrLn "generated files, feel free to fulfil them!"+ maybeItems <- getItems+ case maybeItems of+ Nothing -> putStrLn "unable to bootstrap" >> return False+ Just items -> do+ sequence_ $ flip appendFile "" . (\n -> "leaf" </> n ++ ".leafc") <$> items+ putStrLn "generated files, feel free to fulfil them!"+ return True generateHTML :: IO () generateHTML = do- wrapperContent <- readFile "leaf/wrapper.leaf"- let helper = fromString wrapperContent- name = prettyName (_wrapperFN helper,_wrapperLN helper,_wrapperNick helper)- ownHeader = Wrapper.header name- ownFooter = Wrapper.footer name (_wrapperYear helper) Nothing- ownNavbar = navbar $ _wrapperItems helper- ownWrapper = wrapper ownHeader ownFooter ownNavbar- forM_ (_wrapperItems helper) $ \item -> do- --let page = "www" </> item ++ ".html"- content <- readFile $ "leaf" </> item ++ ".leafc"- let doc = readMarkdown def content- output = writeHtml def doc- writeFile ("www" </> item ++ ".html") $ renderHtml (ownWrapper item output)+ let leafPath = "leaf" </> "wrapper.leaf"+ wwwPath = "www"+ doesLeafExist <- doesFileExist leafPath+ doesWWWExist <- doesDirectoryExist wwwPath+ if doesLeafExist && doesWWWExist+ then do+ wrapperContent <- readFile "leaf/wrapper.leaf"+ let helper = fromString wrapperContent+ name = prettyName (_wrapperFN helper,_wrapperLN helper,_wrapperNick helper)+ ownHeader = Wrapper.header name+ ownFooter = Wrapper.footer name (_wrapperYear helper) Nothing+ ownNavbar = navbar $ _wrapperItems helper+ ownWrapper = wrapper ownHeader ownFooter ownNavbar+ forM_ (_wrapperItems helper) $ \item -> do+ --let page = "www" </> item ++ ".html"+ content <- readFile $ "leaf" </> item ++ ".leafc"+ let doc = readMarkdown def content+ output = writeHtml def doc+ writeFile ("www" </> item ++ ".html") $ renderHtml (ownWrapper item output)+ else putStrLn "unable to generate html" main = do -- maybe get the options