diff options
Diffstat (limited to 'trypandoc')
| -rw-r--r-- | trypandoc/Makefile | 14 | ||||
| -rw-r--r-- | trypandoc/index.html | 143 | ||||
| -rw-r--r-- | trypandoc/trypandoc.hs | 101 |
3 files changed, 0 insertions, 258 deletions
diff --git a/trypandoc/Makefile b/trypandoc/Makefile deleted file mode 100644 index c486aea3b..000000000 --- a/trypandoc/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -CGIBIN=/home/website/cgi-bin -TRYPANDOC=/home/website/html/pandoc/try/ -CGI=${CGIBIN}/trypandoc -BIN=/home/jgm/.local/bin/trypandoc - -install: ${CGI} ${TRYPANDOC}/index.html - -${TRYPANDOC}/%: % - cp $< $@ && chown website:www-data $@ && chmod a+r $@ - -${CGI}: ${BIN} - cp $< $@ && chown website:www-data $@ && chmod a+rx $@ - -.PHONY: install diff --git a/trypandoc/index.html b/trypandoc/index.html deleted file mode 100644 index d9674793b..000000000 --- a/trypandoc/index.html +++ /dev/null @@ -1,143 +0,0 @@ -<!doctype html> -<html lang="en"> -<head> - <meta charset="utf-8"> - <title>Try pandoc!</title> - <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> - <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script> - <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> - <script type="text/javascript"> -(function($) { // http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values - $.QueryString = (function(a) { - if (a == "") return {}; - var b = {}; - for (var i = 0; i < a.length; ++i) - { - var p=a[i].split('='); - if (p.length != 2) continue; - b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); - } - return b; - })(window.location.search.substr(1).split('&')) -})(jQuery); - -function newpage() { - var input = $("#text").val(); - var from = $("#from").val(); - var to = $("#to").val(); - var href = window.location.href; - window.location.href = href.replace(/([?].*)?$/,"?" + $.param({text: input, from: from, to: to})); -}; - -$(document).ready(function() { - var text = $.QueryString["text"]; - $("#text").val(text); - var from = $.QueryString["from"] || "markdown"; - $("#from").val(from); - var to = $.QueryString["to"] || "html"; - $("#to").val(to); - if (text && text != "") { - $.getJSON("/cgi-bin/trypandoc", { from: from, to: to, text: text }, - function(res) { - $("#results").text(res.html); - $("#version").text(res.version); - $("#command").text("pandoc --from " + from + " --to " + to); - }); - }; - $("#convert").click(newpage); -}); - </script> - <style type="text/css"> - h1 { margin-bottom: 1em; } - body { margin: auto; } - textarea { height: auto; width: 100%; font-family: monospace; margin-top: 15px; } - div.alert { margin: 1em; } - h3 { margin-top: 0; margin-bottom: 0; padding: 0; font-size: 100%; } - pre#results { width: 100%; margin-top: 15px; } - footer { color: #555; text-align: center; margin: 1em; } - p.version { color: #555; } - button#convert { vertical-align: bottom; } - pre#command { margin-top: 1em; background-color: transparent; border: none; } - </style> -</head> -<body> -<div class="container"> - <div class="row"> - <div class="col-md-6"> - <h1>Try <a href="http://pandoc.org">pandoc</a>!</h1> - </div> - <div class="col-md-6"> - <pre id="command"></pre> - </div> - </div> - <div class="row"> - <div class="col-md-6"> - <button class="btn btn-primary btn-xs" id="convert">Convert</button> - - <label for="from"> - from - </label> - <select id="from"> - <option value="docbook">DocBook</option> - <option value="haddock">Haddock markup</option> - <option value="html">HTML</option> - <option value="latex">LaTeX</option> - <option value="markdown" selected>Markdown (pandoc)</option> - <option value="markdown_strict">Markdown (strict)</option> - <option value="markdown_phpextra">Markdown (PHP Markdown Extra)</option> - <option value="markdown_github">Markdown (GitHub)</option> - <option value="mediawiki">MediaWiki</option> - <option value="markdown_mmd">MultiMarkdown</option> - <option value="opml">OPML</option> - <option value="org">Org Mode</option> - <option value="rst">reStructuredText</option> - <option value="textile">Textile</option> - <option value="t2t">Txt2Tags</option> - </select> - <br/> - <textarea id="text" maxlength="3000" rows="15"></textarea> - </div> - <div class="col-md-6"> - <label for="to"> - to - </label> - <select id="to"> - <option value="asciidoc">AsciiDoc</option> - <option value="context">ConTeXt</option> - <option value="docbook">DocBook</option> - <option value="dokuwiki">DokuWiki</option> - <option value="dzslides">DZSlides</option> - <option value="man">Groff man</option> - <option value="html" selected>HTML</option> - <option value="html5">HTML 5</option> - <option value="icml">ICML</option> - <option value="latex">LaTeX</option> - <option value="beamer">LaTeX Beamer</option> - <option value="markdown">Markdown (pandoc)</option> - <option value="markdown_strict">Markdown (strict)</option> - <option value="markdown_phpextra">Markdown (PHP Markdown Extra)</option> - <option value="markdown_github">Markdown (GitHub)</option> - <option value="markdown_mmd">MultiMarkdown</option> - <option value="rst">reStructuredText</option> - <option value="textile">Textile</option> - <option value="mediawiki">MediaWiki</option> - <option value="org">Org Mode</option> - <option value="opendocument">OpenDocument</option> - <option value="opml">OPML</option> - <option value="rtf">RTF</option> - <option value="S5">S5</option> - <option value="slideous">Slideous</option> - <option value="slidy">Slidy</option> - <option value="texinfo">Texinfo</option> - </select> - <br/> - <pre id="results"></pre> - </div> - </div> -</div> -<footer> - <p class="version">pandoc <span id="version"></span></p> - <p>© 2013–2015 <a href="http://johnmacfarlane.net">John MacFarlane</a></p> -</footer> -</body> -</html> diff --git a/trypandoc/trypandoc.hs b/trypandoc/trypandoc.hs deleted file mode 100644 index 2fcfe35e7..000000000 --- a/trypandoc/trypandoc.hs +++ /dev/null @@ -1,101 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -module Main where -import Network.Wai.Handler.CGI -import Network.Wai -import Control.Applicative ((<$>)) -import Data.Maybe (mapMaybe, fromMaybe) -import Network.HTTP.Types.Status (status200) -import Network.HTTP.Types.Header (hContentType) -import Network.HTTP.Types.URI (queryToQueryText) -import Text.Pandoc -import Text.Pandoc.Error (PandocError) -import Text.Pandoc.Shared (tabFilter) -import Data.Aeson -import qualified Data.Text as T -import Data.Text (Text) - -main :: IO () -main = run app - -app :: Application -app req respond = do - let query = queryToQueryText $ queryString req - let getParam x = maybe (error $ T.unpack x ++ " paramater not set") - return $ lookup x query - text <- getParam "text" >>= checkLength . fromMaybe T.empty - fromFormat <- fromMaybe "" <$> getParam "from" - toFormat <- fromMaybe "" <$> getParam "to" - reader <- maybe (error $ "could not find reader for " ++ T.unpack fromFormat) return - $ lookup fromFormat fromFormats - let writer = maybe (error $ "could not find writer for " ++ T.unpack toFormat) id - $ lookup toFormat toFormats - let result = case reader $ tabFilter 4 $ T.unpack text of - Right doc -> T.pack $ writer doc - Left err -> error (show err) - let output = encode $ object [ T.pack "html" .= result - , T.pack "name" .= - if fromFormat == "markdown_strict" - then T.pack "pandoc (strict)" - else T.pack "pandoc" - , T.pack "version" .= pandocVersion] - respond $ responseLBS status200 [(hContentType,"text/json; charset=UTF-8")] output - -checkLength :: Text -> IO Text -checkLength t = - if T.length t > 10000 - then error "exceeds length limit of 10,000 characters" - else return t - -writerOpts :: WriterOptions -writerOpts = def { writerReferenceLinks = True, - writerEmailObfuscation = NoObfuscation, - writerHTMLMathMethod = MathJax "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML", - writerHighlight = True } - -readerOpts :: ReaderOptions -readerOpts = def { readerParseRaw = True, - readerSmart = True } - -fromFormats :: [(Text, String -> Either PandocError Pandoc)] -fromFormats = [ - ("native" , readNative) - ,("json" , Text.Pandoc.readJSON readerOpts) - ,("markdown" , readMarkdown readerOpts) - ,("markdown_strict" , readMarkdown readerOpts{ - readerExtensions = strictExtensions, - readerSmart = False }) - ,("markdown_phpextra" , readMarkdown readerOpts{ - readerExtensions = phpMarkdownExtraExtensions }) - ,("markdown_github" , readMarkdown readerOpts{ - readerExtensions = githubMarkdownExtensions }) - ,("markdown_mmd", readMarkdown readerOpts{ - readerExtensions = multimarkdownExtensions }) - ,("rst" , readRST readerOpts) - ,("mediawiki" , readMediaWiki readerOpts) - ,("docbook" , readDocBook readerOpts) - ,("opml" , readOPML readerOpts) - ,("t2t" , readTxt2TagsNoMacros readerOpts) - ,("org" , readOrg readerOpts) - ,("textile" , readTextile readerOpts) -- TODO : textile+lhs - ,("html" , readHtml readerOpts) - ,("latex" , readLaTeX readerOpts) - ,("haddock" , readHaddock readerOpts) - ] - -toFormats :: [(Text, Pandoc -> String)] -toFormats = mapMaybe (\(x,y) -> - case y of - PureStringWriter w -> Just (T.pack x, w writerOpts{ - writerExtensions = - case x of - "markdown_strict" -> strictExtensions - "markdown_phpextra" -> phpMarkdownExtraExtensions - "markdown_mmd" -> multimarkdownExtensions - "markdown_github" -> githubMarkdownExtensions - _ -> pandocExtensions - }) - _ -> - case x of - "rtf" -> Just (T.pack x, writeRTF writerOpts) - _ -> Nothing) writers - |
