Merge pull request #2907 from tarleb/org-fixes

Org fixes (reader and writer)
This commit is contained in:
John MacFarlane 2016-05-09 10:17:56 -07:00
commit fd9ec835ec
3 changed files with 14 additions and 5 deletions

View file

@ -1581,8 +1581,8 @@ inlineLaTeX = try $ do
parseAsMathMLSym :: String -> Maybe Inlines
parseAsMathMLSym cs = B.str <$> MathMLEntityMap.getUnicode (clean cs)
-- dropWhileEnd would be nice here, but it's not available before base 4.5
where clean = reverse . dropWhile (`elem` ("{}" :: String)) . reverse . drop 1
-- drop initial backslash and any trailing "{}"
where clean = dropWhileEnd (`elem` ("{}" :: String)) . drop 1
state :: ParserState
state = def{ stateOptions = def{ readerParseRaw = True }}
@ -1598,13 +1598,18 @@ inlineLaTeXCommand = try $ do
rest <- getInput
case runParser rawLaTeXInline def "source" rest of
Right (RawInline _ cs) -> do
-- drop any trailing whitespace, those should not be part of the command
let cmdNoSpc = takeWhile (not . isSpace) $ cs
-- drop any trailing whitespace, those are not be part of the command as
-- far as org mode is concerned.
let cmdNoSpc = dropWhileEnd isSpace cs
let len = length cmdNoSpc
count len anyChar
return cmdNoSpc
_ -> mzero
-- Taken from Data.OldList.
dropWhileEnd :: (a -> Bool) -> [a] -> [a]
dropWhileEnd p = foldr (\x xs -> if p x && null xs then [] else x : xs) []
smart :: OrgParser (F Inlines)
smart = do
getOption readerSmart >>= guard

View file

@ -170,7 +170,7 @@ blockToOrg (Table caption' _ _ headers rows) = do
map ((+2) . numChars) $ transpose (headers' : rawRows)
-- FIXME: Org doesn't allow blocks with height more than 1.
let hpipeBlocks blocks = hcat [beg, middle, end]
where h = maximum (map height blocks)
where h = maximum (1 : map height blocks)
sep' = lblock 3 $ vcat (map text $ replicate h " | ")
beg = lblock 2 $ vcat (map text $ replicate h "| ")
end = lblock 2 $ vcat (map text $ replicate h " |")

View file

@ -308,6 +308,10 @@ tests =
"\\textit{Emphasised}" =?>
para (emph "Emphasised")
, "Inline LaTeX command with spaces" =:
"\\emph{Emphasis mine}" =?>
para (emph "Emphasis mine")
, "Inline LaTeX math symbol" =:
"\\tau" =?>
para (emph "τ")