úÎ/-,›,      !"#$%&'()*+© 2014 Parnell SpringmeyerAll Rights Reserved/Parnell Springmeyer <parnell@digitalmentat.com>stableNone#  !"#  !"     !"© 2014 Parnell SpringmeyerAll Rights Reserved/Parnell Springmeyer <parnell@digitalmentat.com>stableNone#Parse a property drawer. Z:PROPERTIES: :DATE: [2014-12-14 11:00] :NOTE: Something really crazy happened today! :END:$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).#$%  !"#$% !  "#$#$© 2014 Parnell SpringmeyerAll Rights Reserved/Parnell Springmeyer <parnell@digitalmentat.com>stableNone%xParse an org-mode timestamp line with user-supplied opening and ending brackets (for either active or inactive stamps).&Parse the type of schedule.%&%  !"%&% !  "%&%&© 2014 Parnell SpringmeyerAll Rights Reserved/Parnell Springmeyer <parnell@digitalmentat.com>stableNone'Parse an org-mode heading.(EParse the asterisk indicated heading level until a space is reached.)Parse the priority indicator.LIf anything but these priority indicators are used the parser will fail: `[A]`, `[ B]`, `[#C]`.,Parse the state indicator {TODO | DOING | DONE}.fThese can be custom so we're parsing the state identifier as Text but wrapped with the State newtype.*Title parser with alternative.ƒThis function tries to parse a title with a keyword and if it fails it then attempts to parse everything till the end of the line.-(Try to parse a title that may have keys.-This function recurs for every occurrence of :N and tries to parse it as a keyword. If the keyword parser fails we fold the :[ onto our title result. If it succeeds then we return the title *and the parsed keyword*..Parse a heading keyword.$NOTE: this is meant to be used with -™ since it cannot fail and we use it recursively in that function to determine whether we are hitting a keyword chunk or not (and saving it if we do!).FIt is not exported because it is not meant to be used outside of the - function.+Parse a heading keyword.You can use this with / and 0 to get a list keywords: 4keys <- many' headingKeyword return $ catMaybes keys '(),*1-.+(  !"'()*+( !  "'()*+ '(),*1-.+© 2014 Parnell SpringmeyerAll Rights Reserved/Parnell Springmeyer <parnell@digitalmentat.com>stableNone,  !"#$%&'()*+2      !"#$%&'()*+,-./012345orgmode-parse-0.0.2.0,Data.OrgMode.Parse.Attoparsec.PropertyDrawer"Data.OrgMode.Parse.Attoparsec.Time&Data.OrgMode.Parse.Attoparsec.HeadingsData.OrgMode.Parse.InternalData.OrgMode.ParseCloseOpen TimestampInactiveActive ScheduleType APPOINTMENTDEADLINE SCHEDULEDSchedule schedule_type timestamp recurringPropertyDrawerKeywordStatePriorityUnknownCBAHeadinglevelprioritystatetitlekeywords toPrioritydrawerpropertyparseTimestamp scheduleTypeheading headingLevelheadingPriority headingTitleheadingKeyword headingState takeTitleKeysheadingKeyword'attoparsec-0.12.1.2Data.Attoparsec.Combinatormany'base Data.Maybe catMaybes takeTitleEnd