-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A collection of Attoparsec combinators for parsing org-mode -- flavored documents. -- -- -- `orgmode-parse` is a parsing library for the org-mode flavor of -- document markup. -- -- The provided Attoparsec combinators parse the human-readable and -- textual representation into a simple AST. @package orgmode-parse @version 0.3.0 -- | Types for the AST of an org-mode document. module Data.OrgMode.Types -- | Sum type indicating the active state of a timestamp. data ActiveState Active :: ActiveState Inactive :: ActiveState -- | A data type for parsed org-mode bracketed datetime stamps, e.g: -- --
--   [2015-03-27 Fri 10:20 +4h]
--   
data BracketedDateTime BracketedDateTime :: YearMonthDay -> Maybe Weekday -> Maybe TimePart -> Maybe Repeater -> Maybe Delay -> ActiveState -> BracketedDateTime [datePart] :: BracketedDateTime -> YearMonthDay [dayNamePart] :: BracketedDateTime -> Maybe Weekday [timePart] :: BracketedDateTime -> Maybe TimePart [repeat] :: BracketedDateTime -> Maybe Repeater [delayPart] :: BracketedDateTime -> Maybe Delay [activeState] :: BracketedDateTime -> ActiveState newtype Clock Clock :: (Maybe Timestamp, Maybe Duration) -> Clock [unClock] :: Clock -> (Maybe Timestamp, Maybe Duration) -- | A data type for parsed org-mode datetime stamps. -- -- TODO: why do we have this data type and BracketedDateTime? They look -- almost exactly the same... data DateTime DateTime :: YearMonthDay -> Maybe Text -> Maybe (Hour, Minute) -> Maybe Repeater -> Maybe Delay -> DateTime [yearMonthDay] :: DateTime -> YearMonthDay [dayName] :: DateTime -> Maybe Text [hourMinute] :: DateTime -> Maybe (Hour, Minute) [repeater] :: DateTime -> Maybe Repeater [delay] :: DateTime -> Maybe Delay -- | A data type representing a delay value. data Delay Delay :: DelayType -> Int -> TimeUnit -> Delay -- | Type of delay [delayType] :: Delay -> DelayType -- | Delay value [delayValue] :: Delay -> Int -- | Delay time unit [delayUnit] :: Delay -> TimeUnit -- | A sum type representing the delay type of a delay value. data DelayType DelayAll :: DelayType DelayFirst :: DelayType -- | Headline nesting depth. newtype Depth Depth :: Int -> Depth -- | Org-mode document. data Document Document :: Text -> [Headline] -> Document -- | Text occurring before any Org headlines [documentText] :: Document -> Text -- | Toplevel Org headlines [documentHeadlines] :: Document -> [Headline] type Drawer = Block type Duration = (Hour, Minute) -- | Headline within an org-mode document. data Headline Headline :: Depth -> Maybe StateKeyword -> Maybe Priority -> Text -> Maybe Timestamp -> Maybe Stats -> [Tag] -> Section -> [Headline] -> Headline -- | Org headline nesting depth (1 is at the top), e.g: * or ** or *** [depth] :: Headline -> Depth -- | State of the headline, e.g: TODO, DONE [stateKeyword] :: Headline -> Maybe StateKeyword -- | Headline priority, e.g: [#A] [priority] :: Headline -> Maybe Priority -- | Primary text of the headline [title] :: Headline -> Text -- | A timestamp that may be embedded in the headline [timestamp] :: Headline -> Maybe Timestamp -- | Fraction of subtasks completed, e.g: [33%] or [1/2] [stats] :: Headline -> Maybe Stats -- | Tags on the headline [tags] :: Headline -> [Tag] -- | The body underneath a headline [section] :: Headline -> Section -- | A list of sub-headlines [subHeadlines] :: Headline -> [Headline] newtype Logbook Logbook :: [Clock] -> Logbook [unLogbook] :: Logbook -> [Clock] -- | A sum type representing the planning keywords. data PlanningKeyword SCHEDULED :: PlanningKeyword DEADLINE :: PlanningKeyword CLOSED :: PlanningKeyword -- | A type representing a map of planning timestamps. newtype Plannings Plns :: (HashMap PlanningKeyword Timestamp) -> Plannings -- | A sum type representing the three default priorities: A, -- B, and C. data Priority A :: Priority B :: Priority C :: Priority newtype Properties Properties :: HashMap Text Text -> Properties [unProperties] :: Properties -> HashMap Text Text -- | A data type representing a repeater interval in a org-mode timestamp. data Repeater Repeater :: RepeaterType -> Int -> TimeUnit -> Repeater -- | Type of repeater [repeaterType] :: Repeater -> RepeaterType -- | Repeat value [repeaterValue] :: Repeater -> Int -- | Repeat time unit [repeaterUnit] :: Repeater -> TimeUnit -- | A sum type representing the repeater type of a repeater interval in a -- org-mode timestamp. data RepeaterType RepeatCumulate :: RepeaterType RepeatCatchUp :: RepeaterType RepeatRestart :: RepeaterType -- | Section of text directly following a headline. data Section Section :: Maybe Timestamp -> Plannings -> [Clock] -> Properties -> Logbook -> [Block] -> Section -- | A headline's section timestamp [sectionTimestamp] :: Section -> Maybe Timestamp -- | A map of planning timestamps [sectionPlannings] :: Section -> Plannings -- | A list of clocks [sectionClocks] :: Section -> [Clock] -- | A map of properties from the :PROPERTY: drawer [sectionProperties] :: Section -> Properties -- | A list of clocks from the :LOGBOOK: drawer [sectionLogbook] :: Section -> Logbook -- | Content of Section [sectionBlocks] :: Section -> [Block] -- | A type representing a headline state keyword, e.g: TODO, -- DONE, WAITING, etc. newtype StateKeyword StateKeyword :: Text -> StateKeyword [unStateKeyword] :: StateKeyword -> Text -- | A data type representing a stats value in a headline, e.g -- [2/3] in this headline: -- --
--   * TODO [2/3] work on orgmode-parse
--   
data Stats StatsPct :: Int -> Stats StatsOf :: Int -> Int -> Stats type Tag = Text -- | A sum type representing an absolute time part of a bracketed org-mode -- datetime stamp or a time range between two absolute timestamps. data TimePart AbsoluteTime :: AbsTime -> TimePart TimeStampRange :: (AbsTime, AbsTime) -> TimePart -- | A sum type representing the time units of a delay. data TimeUnit UnitYear :: TimeUnit UnitWeek :: TimeUnit UnitMonth :: TimeUnit UnitDay :: TimeUnit UnitHour :: TimeUnit -- | A generic data type for parsed org-mode time stamps, e.g: -- --
--   <2015-03-27 Fri 10:20>
--   [2015-03-27 Fri 10:20 +4h]
--   <2015-03-27 Fri 10:20>--<2015-03-28 Sat 10:20>
--   
data Timestamp Timestamp :: DateTime -> ActiveState -> Maybe DateTime -> Timestamp -- | A datetime stamp [tsTime] :: Timestamp -> DateTime -- | Active or inactive? [tsActive] :: Timestamp -> ActiveState -- | A end-of-range datetime stamp [tsEndTime] :: Timestamp -> Maybe DateTime data YearMonthDay :: * YearMonthDay :: {-# UNPACK #-} ~Year -> {-# UNPACK #-} ~Month -> {-# UNPACK #-} ~DayOfMonth -> YearMonthDay [ymdYear] :: YearMonthDay -> {-# UNPACK #-} ~Year [ymdMonth] :: YearMonthDay -> {-# UNPACK #-} ~Month [ymdDay] :: YearMonthDay -> {-# UNPACK #-} ~DayOfMonth data Block OrderedList :: [Item] -> Block UnorderedList :: [Item] -> Block Paragraph :: [MarkupText] -> Block Drawer :: Text -> Text -> Block [name] :: Block -> Text [contents] :: Block -> Text data MarkupText Plain :: Text -> MarkupText LaTeX :: Text -> MarkupText Verbatim :: Text -> MarkupText Code :: Text -> MarkupText Bold :: [MarkupText] -> MarkupText Italic :: [MarkupText] -> MarkupText UnderLine :: [MarkupText] -> MarkupText Strikethrough :: [MarkupText] -> MarkupText newtype Item Item :: [Block] -> Item sectionDrawer :: Section -> [Block] instance GHC.Generics.Generic Data.OrgMode.Types.Document instance GHC.Classes.Eq Data.OrgMode.Types.Document instance GHC.Show.Show Data.OrgMode.Types.Document instance GHC.Generics.Generic Data.OrgMode.Types.Headline instance GHC.Classes.Eq Data.OrgMode.Types.Headline instance GHC.Show.Show Data.OrgMode.Types.Headline instance GHC.Generics.Generic Data.OrgMode.Types.Section instance GHC.Classes.Eq Data.OrgMode.Types.Section instance GHC.Show.Show Data.OrgMode.Types.Section instance GHC.Base.Monoid Data.OrgMode.Types.Logbook instance Data.Semigroup.Semigroup Data.OrgMode.Types.Logbook instance GHC.Generics.Generic Data.OrgMode.Types.Logbook instance GHC.Classes.Eq Data.OrgMode.Types.Logbook instance GHC.Show.Show Data.OrgMode.Types.Logbook instance GHC.Generics.Generic Data.OrgMode.Types.Clock instance GHC.Classes.Eq Data.OrgMode.Types.Clock instance GHC.Show.Show Data.OrgMode.Types.Clock instance GHC.Generics.Generic Data.OrgMode.Types.Stats instance GHC.Classes.Eq Data.OrgMode.Types.Stats instance GHC.Show.Show Data.OrgMode.Types.Stats instance GHC.Generics.Generic Data.OrgMode.Types.Priority instance GHC.Classes.Ord Data.OrgMode.Types.Priority instance GHC.Classes.Eq Data.OrgMode.Types.Priority instance GHC.Read.Read Data.OrgMode.Types.Priority instance GHC.Show.Show Data.OrgMode.Types.Priority instance GHC.Generics.Generic Data.OrgMode.Types.Plannings instance GHC.Classes.Eq Data.OrgMode.Types.Plannings instance GHC.Show.Show Data.OrgMode.Types.Plannings instance GHC.Generics.Generic Data.OrgMode.Types.PlanningKeyword instance GHC.Classes.Ord Data.OrgMode.Types.PlanningKeyword instance GHC.Enum.Enum Data.OrgMode.Types.PlanningKeyword instance GHC.Classes.Eq Data.OrgMode.Types.PlanningKeyword instance GHC.Show.Show Data.OrgMode.Types.PlanningKeyword instance GHC.Generics.Generic Data.OrgMode.Types.StateKeyword instance GHC.Classes.Eq Data.OrgMode.Types.StateKeyword instance GHC.Show.Show Data.OrgMode.Types.StateKeyword instance GHC.Classes.Eq Data.OrgMode.Types.BracketedDateTime instance GHC.Show.Show Data.OrgMode.Types.BracketedDateTime instance GHC.Generics.Generic Data.OrgMode.Types.Timestamp instance GHC.Classes.Eq Data.OrgMode.Types.Timestamp instance GHC.Show.Show Data.OrgMode.Types.Timestamp instance GHC.Generics.Generic Data.OrgMode.Types.DateTime instance GHC.Classes.Eq Data.OrgMode.Types.DateTime instance GHC.Show.Show Data.OrgMode.Types.DateTime instance GHC.Generics.Generic Data.OrgMode.Types.Repeater instance GHC.Classes.Eq Data.OrgMode.Types.Repeater instance GHC.Show.Show Data.OrgMode.Types.Repeater instance GHC.Generics.Generic Data.OrgMode.Types.Delay instance GHC.Classes.Eq Data.OrgMode.Types.Delay instance GHC.Show.Show Data.OrgMode.Types.Delay instance GHC.Generics.Generic Data.OrgMode.Types.TimeUnit instance GHC.Classes.Eq Data.OrgMode.Types.TimeUnit instance GHC.Show.Show Data.OrgMode.Types.TimeUnit instance GHC.Generics.Generic Data.OrgMode.Types.DelayType instance GHC.Classes.Eq Data.OrgMode.Types.DelayType instance GHC.Show.Show Data.OrgMode.Types.DelayType instance GHC.Generics.Generic Data.OrgMode.Types.RepeaterType instance GHC.Classes.Eq Data.OrgMode.Types.RepeaterType instance GHC.Show.Show Data.OrgMode.Types.RepeaterType instance GHC.Show.Show Data.OrgMode.Types.TimePart instance GHC.Classes.Ord Data.OrgMode.Types.TimePart instance GHC.Classes.Eq Data.OrgMode.Types.TimePart instance GHC.Generics.Generic Data.OrgMode.Types.ActiveState instance GHC.Read.Read Data.OrgMode.Types.ActiveState instance GHC.Classes.Eq Data.OrgMode.Types.ActiveState instance GHC.Show.Show Data.OrgMode.Types.ActiveState instance GHC.Base.Monoid Data.OrgMode.Types.Item instance Data.Semigroup.Semigroup Data.OrgMode.Types.Item instance GHC.Generics.Generic Data.OrgMode.Types.Item instance GHC.Classes.Eq Data.OrgMode.Types.Item instance GHC.Show.Show Data.OrgMode.Types.Item instance GHC.Generics.Generic Data.OrgMode.Types.Block instance GHC.Classes.Eq Data.OrgMode.Types.Block instance GHC.Show.Show Data.OrgMode.Types.Block instance GHC.Generics.Generic Data.OrgMode.Types.MarkupText instance GHC.Classes.Eq Data.OrgMode.Types.MarkupText instance GHC.Show.Show Data.OrgMode.Types.MarkupText instance GHC.Base.Monoid Data.OrgMode.Types.Properties instance Data.Semigroup.Semigroup Data.OrgMode.Types.Properties instance GHC.Generics.Generic Data.OrgMode.Types.Properties instance GHC.Classes.Eq Data.OrgMode.Types.Properties instance GHC.Show.Show Data.OrgMode.Types.Properties instance GHC.Generics.Generic Data.OrgMode.Types.Depth instance GHC.Num.Num Data.OrgMode.Types.Depth instance GHC.Show.Show Data.OrgMode.Types.Depth instance GHC.Classes.Eq Data.OrgMode.Types.Depth instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Document instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Document instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Depth instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Depth instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.MarkupText instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.MarkupText instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Item instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Item instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Block instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Block instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Properties instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Properties instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Logbook instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Logbook instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.ActiveState instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.ActiveState instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Clock instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Clock instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Timestamp instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Timestamp instance Data.Aeson.Types.ToJSON.ToJSON Data.Thyme.Calendar.Internal.YearMonthDay instance Data.Aeson.Types.FromJSON.FromJSON Data.Thyme.Calendar.Internal.YearMonthDay instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.DateTime instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.DateTime instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.RepeaterType instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.RepeaterType instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Repeater instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Repeater instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.DelayType instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.DelayType instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Delay instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Delay instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.TimeUnit instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.TimeUnit instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.StateKeyword instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.StateKeyword instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.PlanningKeyword instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.PlanningKeyword instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Plannings instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Plannings instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Section instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Section instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Headline instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Headline instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Priority instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Priority instance Data.Aeson.Types.ToJSON.ToJSON Data.OrgMode.Types.Stats instance Data.Aeson.Types.FromJSON.FromJSON Data.OrgMode.Types.Stats instance Data.Hashable.Class.Hashable Data.OrgMode.Types.PlanningKeyword -- | Attoparsec utilities module Data.OrgMode.Parse.Attoparsec.Util.ParseLinesTill takeALine :: Parser Text class (Foldable m) => ParseLinesTill m where stop p' = hasMoreInput *> do { z <- (Right <$> p') <> (return . Left) (); case z of { Left _ -> return (Left ()) Right x -> guard ((not . null) x) $> (Right . toList $ x) } } takeContent next c = tContent <> return (empty, []) where (c', p) = next c tContent = do { z <- stop p; case z of { Right as -> return (empty, as) Left _ -> (\ l -> (append l . fst) &&& snd) <$> takeALine <*> takeContent next c' } } parseLinesContextuallyTill pD next c = skipEmptyLines *> hasMoreInput *> do { (content, blocks) <- takeContent next c; guard (not $ null content && null blocks) *> ((: blocks) <$> feedParserText pD content) } parseLinesTill pDefault pBreaker = parseLinesContextuallyTill pDefault (const (0 :: Integer, pBreaker)) 0 -- | Fail and reset position when a breaker is found stop :: forall a. ParseLinesTill m => Parser (m a) -> Parser (Either () [a]) takeContent :: forall a b. ParseLinesTill m => Recursive m b a -> b -> Parser (Text, [a]) -- | Save the content and parse as the default Plain Text or default -- Section Paragraph and try to parse the new block if the new block -- exists under the same node parseLinesContextuallyTill :: forall a b. ParseLinesTill m => Parser a -> Recursive m b a -> b -> Parser [a] parseLinesTill :: forall a. ParseLinesTill m => Parser a -> Parser (m a) -> Parser [a] -- | Is the current line a SectionBlock break. A Line is a break takeBlockBreak :: Parser () skipEmptyLines :: Parser () instance Data.OrgMode.Parse.Attoparsec.Util.ParseLinesTill.ParseLinesTill (Data.Either.Either a) -- | Attoparsec utilities. module Data.OrgMode.Parse.Attoparsec.Util -- | Skip whitespace characters, only! -- -- Data.Attoparsec.Text.skipSpace uses the isSpace -- predicate from Data.Char which also includes control -- characters such as a return and newline which we need to *not* consume -- in some cases during parsing. skipOnlySpace :: Parser () -- | Parse a non-heading line of a section. nonHeadline :: Parser Text -- | Parsing combinators for org-mode timestamps; both active and inactive. module Data.OrgMode.Parse.Attoparsec.Time -- | Parse a planning line. -- -- Plannings inhabit a heading section and are formatted as a keyword and -- a timestamp. There can be more than one, but they are all on the same -- line e.g: -- --
--   DEADLINE: <2015-05-10 17:00> CLOSED: <2015-04-1612:00>
--   
parsePlannings :: Parser Text (HashMap PlanningKeyword Timestamp) -- | Parse a clock line. -- -- A heading's section contains one line per clock entry. Clocks may have -- a timestamp, a duration, both, or neither e.g.: -- --
--   CLOCK: [2014-12-10 Fri 2:30]--[2014-12-10 Fri 10:30] => 08:00
--   
parseClock :: Parser Text Clock -- | Parse a timestamp. -- -- Timestamps may be timepoints or timeranges, and they indicate whether -- they are active or closed by using angle or square brackets -- respectively. -- -- Time ranges are formatted by infixing two timepoints with a double -- hyphen, --; or, by appending two hh:mm timestamps -- together in a single timepoint with one hyphen -. -- -- Each timepoint includes an optional repeater flag and an optional -- delay flag. parseTimestamp :: Parser Text Timestamp -- | Parsing combinators for org-mode section generic drawers. module Data.OrgMode.Parse.Attoparsec.Drawer.Generic -- | Parse a user-defined drawer. -- --
--   :MYTEXT:
--   whatever I want, can go in here except for headlines and drawers
--   :END:
--   
parseDrawer :: Parser Drawer -- | Parse drawer delimiters, e.g the beginning and end of a property -- drawer: -- --
--   :PROPERTIES:
--   :END:
--   
parseDrawerDelim :: Text -> Parser Text -- | Parse the :END: of a drawer. drawerEnd :: Parser Text -- | Parsing combinators for org-mode section logbook drawers. module Data.OrgMode.Parse.Attoparsec.Drawer.Logbook -- | Parse a LOGBOOK drawer. -- --
--   :LOGBOOK:
--   CLOCK: [2015-10-05 Mon 17:13]--[2015-10-05 Mon 17:14] =>  0:01
--   :END:
--   
parseLogbook :: Parser Text Logbook -- | Parsing combinators for org-mode section property drawers. module Data.OrgMode.Parse.Attoparsec.Drawer.Property -- | Parse a PROPERTY drawer. -- --
--   :PROPERTIES:
--   :DATE: [2014-12-14 11:00]
--   :NOTE: Something really crazy happened today!
--   :END:
--   
parseProperties :: Parser Text Properties -- | Parse a property of a drawer. -- -- Properties *must* be a `:KEY: value` pair, the key can be of any case -- and contain any characters except for newlines and colons (since they -- delimit the start and end of the key). property :: Parser Text (PropertyKey, PropertyVal) type PropertyKey = Text type PropertyVal = Text -- | Attoparsec combinators for parsing drawers in org-mode documents. module Data.OrgMode.Parse.Attoparsec.Drawer -- | Parsing combinators for org-mode markup and paragraphs. module Data.OrgMode.Parse.Attoparsec.Block.Markup -- | Parse the whole text content to an array of Markup Text. This parser -- will not handle the block stop. The block stop shall be already -- handled before passing text with this Parser parseMarkupContent :: Parser [MarkupText] -- | The fallback default if all markup parser fails parsePlainText :: Parser MarkupText -- | Parsing combinators for org-mode markup and paragraphs. module Data.OrgMode.Parse.Attoparsec.Block.Paragraph -- | If a chunk of text cannot be parsed as other blocks, parse the chunk -- of text as a paragraph parseParagraph :: Parser Block -- | Parsing combinators for org-mode markups and paragraphs. module Data.OrgMode.Parse.Attoparsec.Block.List parseList :: Parser Block -- | Parsing combinators for org-mode markup and paragraphs. module Data.OrgMode.Parse.Attoparsec.Block -- | Parse the content until reaching a drawer, a list, or a block end. And -- include the parsed drawer. parseBlocks :: Parser [Block] -- | Parsing combinators for org-mode headline sections. module Data.OrgMode.Parse.Attoparsec.Section -- | Parse a heading section -- -- Headline sections contain optionally a property drawer, a list of -- clock entries, code blocks (not yet implemented), plain lists (not yet -- implemented), and unstructured text. parseSection :: Parser Section -- | Parsing combinators for org-mode headlines. module Data.OrgMode.Parse.Attoparsec.Headline -- | Parse an org-mode headline, its metadata, its section-body, and any -- sub-headlines; please see org-syntax. -- -- Headline metadata includes a hierarchy level indicated by asterisks, -- optional todo state keywords, an optional priority level, %-done -- statistics, and tags; e.g: -- --
--   ** TODO [#B] Polish Poetry Essay [25%] :HOMEWORK:POLISH:WRITING:
--   
-- -- Headlines may contain: -- -- -- -- headlineBelowDepth takes a list of terms to consider, state -- keywords, and a minumum hierarchy depth. -- -- Use a Depth of 0 to parse any headline. headlineBelowDepth :: [Text] -> Depth -> Parser Text Headline -- | Parse the asterisk-indicated headline depth until a space is -- encountered. -- -- Constrain it to Depth. headlineDepth :: Depth -> Parser Text Depth -- | Parse the priority indicator. -- -- If anything but these priority indicators are used the parser will -- fail: -- -- headingPriority :: Parser Text Priority -- | Parse a statisticss block, e.g: [33%]. -- -- Accepts either form: "[m/n]" or "[n%]" and there is no restriction on -- m or n other than that they are integers. parseStats :: Parser Text Stats -- | Parse a colon-separated list of tags. -- --
--   :HOMEWORK:POETRY:WRITING:
--   
parseTags :: Parser Text [Tag] -- | Produce a triple consisting of a stripped start-of-title if there are -- no leftovers after parsing (otherwise, recombine the two) and the -- optional stats and tags. mkTitleMeta :: Text -> Maybe Stats -> Maybe [Tag] -> Text -> TitleMeta -- | Intermediate type for parsing titles in a headline after the state -- keyword and priority have been parsed. data TitleMeta instance GHC.Show.Show Data.OrgMode.Parse.Attoparsec.Headline.TitleMeta instance GHC.Classes.Eq Data.OrgMode.Parse.Attoparsec.Headline.TitleMeta -- | Top-level attoparsec parser for org-mode documents. module Data.OrgMode.Parse.Attoparsec.Document parseDocument :: [Text] -> Parser Text Document -- | Attoparsec combinators for parsing org-mode documents. module Data.OrgMode.Parse