slidemews (empty) → 0.2
raw patch · 9 files changed
+211/−0 lines, 9 filesdep +MonadCatchIO-transformersdep +aesondep +base
Dependencies added: MonadCatchIO-transformers, aeson, base, bytestring, mtl, pandoc, snap-core, snap-server, utf8-string
Files
- Makefile +2/−0
- README +1/−0
- main.hs +14/−0
- site_key.txt +1/−0
- slideme.cabal +32/−0
- slidemews.cabal +32/−0
- src/.emacs.desktop +62/−0
- src/Main.hs +56/−0
- test.html +11/−0
+ Makefile view
@@ -0,0 +1,2 @@+all:+ ghc main.hs -o slidbeta
+ README view
@@ -0,0 +1,1 @@+WS qui fait du markdown -> revealjs
+ main.hs view
@@ -0,0 +1,14 @@+import Text.Pandoc++writerOption :: WriterOptions+writerOption = def { writerHtml5 = True,+ writerSlideVariant=RevealJsSlides }++myPandoc :: Pandoc+myPandoc = readMarkdown def "# slide 1\nJe suis un slide !"++main :: IO()+main = do+ putStrLn httpl+ where+ httpl = writeHtmlString writerOption myPandoc
+ site_key.txt view
@@ -0,0 +1,1 @@+; Tܱh?` 1S½}ÝÂ}ã7²mæÌ&@ïèËÓJ¥óþI Ï5*ÿm¨Flän0¹EÉÏÿ/yÇ~¾£%U2¤Sqä¸d¹Õ]R,
+ slideme.cabal view
@@ -0,0 +1,32 @@+Name: slidemews+Version: 0.2+Synopsis: ws convert markdown to reveal-js+Description: Simple WebService to convert markdown to reveal-js+License: AllRightsReserved+Author: Jean-Alexandre Peyroux+Maintainer: m@j4.pe+Stability: Experimental+Category: Web+Build-type: Simple+Cabal-version: >=1.2++Executable slidemews+ hs-source-dirs: src+ main-is: Main.hs++ Build-depends:+ base >= 4 && < 5,+ bytestring >= 0.9.1 && < 0.11,+ MonadCatchIO-transformers >= 0.2.1 && < 0.4,+ mtl >= 2 && < 3,+ snap-core >= 0.9 && < 0.11,+ snap-server >= 0.9 && < 0.11,+ aeson >= 0.7,+ pandoc >= 1.12,+ utf8-string >= 0.3++ if impl(ghc >= 6.12.0)+ ghc-options: -threaded -Wall -fwarn-tabs -funbox-strict-fields -O2+ -fno-warn-unused-do-bind+ else+ ghc-options: -threaded -Wall -fwarn-tabs -funbox-strict-fields -O2
+ slidemews.cabal view
@@ -0,0 +1,32 @@+Name: slidemews+Version: 0.2+Synopsis: ws convert markdown to reveal-js+Description: Simple WebService to convert markdown to reveal-js+License: GPL+Author: Jean-Alexandre Peyroux+Maintainer: m@j4.pe+Stability: Experimental+Category: Web+Build-type: Simple+Cabal-version: >=1.2++Executable slidemews+ hs-source-dirs: src+ main-is: Main.hs++ Build-depends:+ base >= 4 && < 5,+ bytestring >= 0.9.1 && < 0.11,+ MonadCatchIO-transformers >= 0.2.1 && < 0.4,+ mtl >= 2 && < 3,+ snap-core >= 0.9 && < 0.11,+ snap-server >= 0.9 && < 0.11,+ aeson >= 0.7,+ pandoc >= 1.12,+ utf8-string >= 0.3++ if impl(ghc >= 6.12.0)+ ghc-options: -threaded -Wall -fwarn-tabs -funbox-strict-fields + -fno-warn-unused-do-bind+ else+ ghc-options: -threaded -Wall -fwarn-tabs -funbox-strict-fields
+ src/.emacs.desktop view
@@ -0,0 +1,62 @@+;; -*- mode: emacs-lisp; coding: emacs-mule; -*-+;; --------------------------------------------------------------------------+;; Desktop File for Emacs+;; --------------------------------------------------------------------------+;; Created Tue Jan 28 23:11:06 2014+;; Desktop file format version 206+;; Emacs version 24.3.1++;; Global section:+(setq desktop-missing-file-warning nil)+(setq tags-file-name nil)+(setq tags-table-list nil)+(setq search-ring nil)+(setq regexp-search-ring nil)+(setq register-alist nil)+(setq file-name-history '("~/codaz/slideme/src/" "/home/ja/codaz/slideme/test.html" "/home/ja/codaz/slideme/src/Main.hs" "/home/ja/codaz/slideme/slideme.cabal" "/home/ja/codaz/slideme/main.hs" "~/codaz/slideme/src/Main.hs" "/home/ja/codaz/slideme/slideme.cabal" "/home/ja/codaz/slideme/src/Main.hs" "/home/ja/codaz/slideme/src/Site.hs" "/home/ja/codaz/slideme/src/Application.hs" "/home/ja/codaz/slideme/src/Site.hs" "/home/ja/codaz/slideme/src/Application.hs"))++;; Buffer section -- buffers listed in same order as in buffer list:+(desktop-create-buffer 206+ "/home/ja/codaz/slideme/src/Main.hs"+ "Main.hs"+ 'haskell-mode+ '(auto-complete-mode undo-tree-mode)+ 53+ '(978 nil)+ nil+ nil+ '((tab-width . 8) (indent-tabs-mode) (buffer-file-coding-system . undecided-unix)))++(desktop-create-buffer 206+ "/home/ja/codaz/slideme/test.html"+ "test.html"+ 'html-mode+ '(undo-tree-mode)+ 116+ '(58 nil)+ nil+ nil+ '((buffer-file-coding-system . utf-8-unix)))++(desktop-create-buffer 206+ "/home/ja/codaz/slideme/slideme.cabal"+ "slideme.cabal"+ 'haskell-cabal-mode+ '(undo-tree-mode)+ 968+ '(802 nil)+ nil+ nil+ '((buffer-file-coding-system . undecided-unix)))++(desktop-create-buffer 206+ "/home/ja/codaz/slideme/main.hs"+ "main.hs"+ 'haskell-mode+ '(auto-complete-mode undo-tree-mode)+ 279+ '(292 nil)+ nil+ nil+ '((tab-width . 8) (indent-tabs-mode) (buffer-file-coding-system . undecided-unix)))+
+ src/Main.hs view
@@ -0,0 +1,56 @@+{-# LANGUAGE OverloadedStrings #-}+module Main where++import Control.Applicative+import Snap.Core+import Snap.Util.FileServe+import Snap.Http.Server+import Data.Aeson+import Text.Pandoc++import qualified Codec.Binary.UTF8.String as W8+import qualified Data.ByteString.Lazy as BL+import qualified Data.ByteString as BS+import qualified Data.ByteString.Char8 as C8++main :: IO ()+main = quickHttpServe site++data SMResult = SMResult {+ msg :: String+} deriving Show++instance ToJSON SMResult where+ toJSON (SMResult msg) = object ["msg" .= msg]++instance FromJSON SMResult where+ parseJSON (Object v) = SMResult <$>+ v .: "msg"+ -- A non-Object value is of the wrong type, so fail.++writerOption :: WriterOptions+writerOption = def { writerHtml5 = True,+ writerSlideVariant=RevealJsSlides }++myPandoc :: String -> Pandoc+myPandoc mkd = readMarkdown def mkd++mkd2html :: C8.ByteString -> String+mkd2html mkd = writeHtmlString writerOption (myPandoc mkd')+ where mkd' = W8.decode $ BS.unpack mkd++site :: Snap ()+site =+ ifTop (writeBS "/slideme") <|>+ route [ ("help", writeBS "me")+ , ("slideme/", method POST slideMe)+ , ("slideme/:mkd", slideMe)+ ] <|>+ dir "static" (serveDirectory ".")++slideMe :: Snap ()+slideMe = do+ param <- getParam "mkd"+ case param of+ Just p -> writeBS $ BS.concat $ BL.toChunks $ Data.Aeson.encode $ SMResult (mkd2html p)+ Nothing -> writeBS "{'msg':'error'}"
+ test.html view
@@ -0,0 +1,11 @@+<html>+<head></head>+<body>++<form METHOD="POST" ACTION="http://127.0.0.1:8000/slideme/">+<textarea name="mkd" width="20" height="20">+</textarea>+<input type="submit" value="ok">+</form>+</body>+</html>