diff options
Diffstat (limited to 'src/Text/Pandoc/Readers/Org/Parsing.hs')
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Parsing.hs | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/src/Text/Pandoc/Readers/Org/Parsing.hs b/src/Text/Pandoc/Readers/Org/Parsing.hs deleted file mode 100644 index 1eb8a3b00..000000000 --- a/src/Text/Pandoc/Readers/Org/Parsing.hs +++ /dev/null @@ -1,217 +0,0 @@ -{- -Copyright (C) 2014-2016 Albert Krewinkel <tarleb+pandoc@moltkeplatz.de> - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --} - -{- | - Module : Text.Pandoc.Readers.Org.Options - Copyright : Copyright (C) 2014-2016 Albert Krewinkel - License : GNU GPL, version 2 or above - - Maintainer : Albert Krewinkel <tarleb+pandoc@moltkeplatz.de> - -Org-mode parsing utilities. - -Most functions are simply re-exports from @Text.Pandoc.Parsing@, some -functions are adapted to Org-mode specific functionality. --} -module Text.Pandoc.Readers.Org.Parsing - ( OrgParser - , anyLine - , blanklines - , newline - , parseFromString - , skipSpaces1 - , inList - , withContext - , getExportSetting - , updateLastForbiddenCharPos - , updateLastPreCharPos - , orgArgKey - , orgArgWord - , orgArgWordChar - -- * Re-exports from Text.Pandoc.Parser - , ParserContext (..) - , many1Till - , notFollowedBy' - , spaceChar - , nonspaceChar - , skipSpaces - , blankline - , enclosed - , stringAnyCase - , charsInBalanced - , uri - , withRaw - , readWithM - , guardEnabled - , updateLastStrPos - , notAfterString - , ParserState (..) - , registerHeader - , QuoteContext (..) - , singleQuoteStart - , singleQuoteEnd - , doubleQuoteStart - , doubleQuoteEnd - , dash - , ellipses - , citeKey - -- * Re-exports from Text.Pandoc.Parsec - , runParser - , runParserT - , getInput - , char - , letter - , digit - , alphaNum - , skipMany1 - , spaces - , anyChar - , satisfy - , string - , count - , eof - , noneOf - , oneOf - , lookAhead - , notFollowedBy - , many - , many1 - , manyTill - , (<|>) - , (<?>) - , choice - , try - , sepBy - , sepBy1 - , sepEndBy1 - , option - , optional - , optionMaybe - , getState - , updateState - , SourcePos - , getPosition - ) where - -import Text.Pandoc.Readers.Org.ParserState - -import qualified Text.Pandoc.Parsing as P -import Text.Pandoc.Parsing hiding ( anyLine, blanklines, newline - , parseFromString ) - -import Control.Monad ( guard ) -import Control.Monad.Reader ( ReaderT ) - --- | The parser used to read org files. -type OrgParser m = ParserT [Char] OrgParserState (ReaderT OrgParserLocal m) - --- --- Adaptions and specializations of parsing utilities --- - --- | Parse any line of text -anyLine :: Monad m => OrgParser m String -anyLine = - P.anyLine - <* updateLastPreCharPos - <* updateLastForbiddenCharPos - --- The version Text.Pandoc.Parsing cannot be used, as we need additional parts --- of the state saved and restored. -parseFromString :: Monad m => OrgParser m a -> String -> OrgParser m a -parseFromString parser str' = do - oldLastPreCharPos <- orgStateLastPreCharPos <$> getState - updateState $ \s -> s{ orgStateLastPreCharPos = Nothing } - result <- P.parseFromString parser str' - updateState $ \s -> s{ orgStateLastPreCharPos = oldLastPreCharPos } - return result - --- | Skip one or more tab or space characters. -skipSpaces1 :: Monad m => OrgParser m () -skipSpaces1 = skipMany1 spaceChar - --- | Like @Text.Parsec.Char.newline@, but causes additional state changes. -newline :: Monad m => OrgParser m Char -newline = - P.newline - <* updateLastPreCharPos - <* updateLastForbiddenCharPos - --- | Like @Text.Parsec.Char.blanklines@, but causes additional state changes. -blanklines :: Monad m => OrgParser m [Char] -blanklines = - P.blanklines - <* updateLastPreCharPos - <* updateLastForbiddenCharPos - --- | Succeeds when we're in list context. -inList :: Monad m => OrgParser m () -inList = do - ctx <- orgStateParserContext <$> getState - guard (ctx == ListItemState) - --- | Parse in different context -withContext :: Monad m - => ParserContext -- ^ New parser context - -> OrgParser m a -- ^ Parser to run in that context - -> OrgParser m a -withContext context parser = do - oldContext <- orgStateParserContext <$> getState - updateState $ \s -> s{ orgStateParserContext = context } - result <- parser - updateState $ \s -> s{ orgStateParserContext = oldContext } - return result - --- --- Parser state functions --- - --- | Get an export setting. -getExportSetting :: Monad m => (ExportSettings -> a) -> OrgParser m a -getExportSetting s = s . orgStateExportSettings <$> getState - --- | Set the current position as the last position at which a forbidden char --- was found (i.e. a character which is not allowed at the inner border of --- markup). -updateLastForbiddenCharPos :: Monad m => OrgParser m () -updateLastForbiddenCharPos = getPosition >>= \p -> - updateState $ \s -> s{ orgStateLastForbiddenCharPos = Just p} - --- | Set the current parser position as the position at which a character was --- seen which allows inline markup to follow. -updateLastPreCharPos :: Monad m => OrgParser m () -updateLastPreCharPos = getPosition >>= \p -> - updateState $ \s -> s{ orgStateLastPreCharPos = Just p} - --- --- Org key-value parsing --- - --- | Read the key of a plist style key-value list. -orgArgKey :: Monad m => OrgParser m String -orgArgKey = try $ - skipSpaces *> char ':' - *> many1 orgArgWordChar - --- | Read the value of a plist style key-value list. -orgArgWord :: Monad m => OrgParser m String -orgArgWord = many1 orgArgWordChar - --- | Chars treated as part of a word in plists. -orgArgWordChar :: Monad m => OrgParser m Char -orgArgWordChar = alphaNum <|> oneOf "-_" |