More work, I guess

master
Aadhavan Srinivasan 1 week ago
parent ade48bd64e
commit cbdcfcfea7

@ -5,6 +5,7 @@ import Control.Monad
import Control.Applicative
import Text.Printf
import Debug.Trace
import Data.List
type HeaderLevel = Int
@ -55,6 +56,11 @@ instance Show MdToken where
mustBeHash :: ReadP Char
mustBeHash = satisfy (\x -> x == '#')
lengthCmp :: (a,[b]) -> (a, [b]) -> Ordering
lengthCmp (i,j) (k,l) = compare (length l) (length j)
leftmostLongest :: [(a, [b])] -> a
leftmostLongest tupleLst = (sortBy lengthCmp tupleLst)
@ -96,24 +102,22 @@ parseItalic = do
parseString :: ReadP MdToken
parseString = do
firstChar <- get -- Must parse at least one character here
text <- munch (\x -> not (elem x "#*_["))
return (Unit (firstChar:text))
--return (Unit text)
-- firstChar <- get -- Must parse at least one character here
text <- munch1 (\x -> not (elem x "#*_["))
--return (Unit (firstChar:text))
return (Unit text)
parseLine :: ReadP MdToken
parseLine = choice [parseHeader, parseBold, parseItalic, parseString]
parsePara :: ReadP MdToken
parsePara =
------ parsePara :: ReadP MdToken
------ parsePara = do
------ parsed <- parseMany parseLine
------ -- traceM $ show parsed
------ return (Para parsed)
parsePara = do
parsed <- parseMany parseLine
-- traceM $ show parsed
return (Para parsed)
main :: IO ()
main = do
let res = readP_to_S parsePara "## Hello __world_*"
let res = readP_to_S parsePara "## Hello __world__"
putStrLn (show res)

Loading…
Cancel
Save