frame-markdown (empty) → 0.1
raw patch · 4 files changed
+71/−0 lines, 4 filesdep +basedep +framedep +pandocsetup-changed
Dependencies added: base, frame, pandoc
Files
- LICENSE +0/−0
- Setup.hs +4/−0
- frame-markdown.cabal +22/−0
- src/Frame/View/Markdown.hs +45/−0
+ LICENSE view
+ Setup.hs view
@@ -0,0 +1,4 @@+#!/usr/bin/env runghc++import Distribution.Simple+main = defaultMain
+ frame-markdown.cabal view
@@ -0,0 +1,22 @@+Name: frame-markdown+Version: 0.1+Cabal-version: >= 1.2+Build-type: Simple+Copyright: Adam Dunkley+Maintainer: "Adam Dunkley" <acd07u@cs.nott.ac.uk>+Stability: experimental+Author: Adam Dunkley+License: BSD3+License-file: LICENSE+Category: Web+Synopsis: A markdown to Frame GUI writer for Pandoc+Description: A markdown to Frame GUI writer for Pandoc++Library+ Build-Depends:+ base >= 2 && < 4,+ frame,+ pandoc+ Exposed-Modules:+ Frame.View.Markdown+ Hs-source-dirs: src
+ src/Frame/View/Markdown.hs view
@@ -0,0 +1,45 @@+module Frame.View.Markdown where++import Frame.View+import Text.Pandoc hiding (Block (Header), Inline (Code, Strong, Image, Link))+import qualified Text.Pandoc as P (Block (Header), Inline (Code, Strong, Image, Link)) ++markdownToViewPart :: String -> Data+markdownToViewPart m = pandocToViewPart $ readMarkdown defaultParserState $ filter (/='\r') m++pandocToViewPart :: Pandoc -> Data+pandocToViewPart (Pandoc _ bs) = ViewPart $ toContainers bs++toContainers :: [P.Block] -> [Container]+toContainers = map blockToContainer++blockToContainer :: P.Block -> Container+blockToContainer (Plain is) = Paragraph (inlinesToElement is) []+blockToContainer (Para is) = Paragraph (inlinesToElement is) [] +blockToContainer (CodeBlock _ s) = Code s+blockToContainer (RawHtml s) = Code s+blockToContainer (BlockQuote bs) = Quote $ toContainers bs+blockToContainer (OrderedList _ bss) = NumList (map toContainers bss) [] +blockToContainer (BulletList bss) = List (map toContainers bss) []+blockToContainer (P.Header i is) = Header i $ inlinesToElement is+blockToContainer HorizontalRule = Line+blockToContainer _ = Empty++inlinesToElement :: [P.Inline] -> [Element]+inlinesToElement = map inlineToElement++inlineToElement :: P.Inline -> Element+inlineToElement (P.Link is t) = Link (fst t) $ Text $ concatMap inlineToString is+inlineToElement (P.Image a t) = Element $ Image (fst t) $ concatMap inlineToString a+inlineToElement (P.Strong is) = Strong (map inlineToElement is)+inlineToElement (Emph is) = Emphasis (map inlineToElement is)+inlineToElement LineBreak = Break+inlineToElement i = Element $ Text $ inlineToString i++inlineToString :: P.Inline -> String+inlineToString Space = " "+inlineToString (P.Code s) = s+inlineToString Apostrophe = "'"+inlineToString (Str s) = s+inlineToString Ellipses = "..."+inlineToString _ = ""