packages feed

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 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 _          = ""