ixmatus / orgmode-parse

Attoparsec parser combinators for parsing org-mode structured text!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Parsing a timestamp seems to only work if SCHEDULED or DEADLINE

stephenjbarr opened this issue · comments

I have been testing the most recent version of orgmode-parse ( e9e034c at the moment ) and it does not seem to parse timestamps that are not part of a SCHEDULED or DEADLINE item. For example, from the timestamps page:

http://orgmode.org/manual/Timestamps.html#Timestamps

* Meet Peter at the movies
  <2006-11-01 Wed 19:15>

* Discussion on climate change
  <2006-11-02 Thu 20:00-22:00>

parses into:

Right (Document {documentText = "", documentHeadings = [Heading {level = Level 1, keyword = Nothing, priority = Nothing, title = "Meet Peter at the movies", stats = Nothing, tags = [], section = Section {sectionPlannings = Plns (fromList []), sectionClocks = [], sectionProperties = fromList [], sectionParagraph = "  <2006-11-01 Wed 19:15>\n\n"}, subHeadings = []},Heading {level = Level 1, keyword = Nothing, priority = Nothing, title = "Discussion on climate change", stats = Nothing, tags = [], section = Section {sectionPlannings = Plns (fromList []), sectionClocks = [], sectionProperties = fromList [], sectionParagraph = "  <2006-11-02 Thu 20:00-22:00>\n"}, subHeadings = []}]})

However, if I change the first item to scheduled:

Right (Document {documentText = "", documentHeadings = [Heading {level = Level 1, keyword = Nothing, priority = Nothing, title = "Meet Peter at the movies", stats = Nothing, tags = [], section = Section {sectionPlannings = Plns (fromList [(SCHEDULED,Timestamp {tsTime = DateTime {yearMonthDay = YMD' (YearMonthDay {ymdYear = 2006, ymdMonth = 11, ymdDay = 1}), dayName = Just "Wed", hourMinute = Just (19,15), repeater = Nothing, delay = Nothing}, tsActive = True, tsEndTime = Nothing})]), sectionClocks = [], sectionProperties = fromList [], sectionParagraph = ""}, subHeadings = []},Heading {level = Level 1, keyword = Nothing, priority = Nothing, title = "Discussion on climate change", stats = Nothing, tags = [], section = Section {sectionPlannings = Plns (fromList []), sectionClocks = [], sectionProperties = fromList [], sectionParagraph = "  <2006-11-02 Thu 20:00-22:00>\n"}, subHeadings = []}]})

Is it possible to get a tsTime structure without making the item SCHEDULED?

Yes it should be, I'll take a look this weekend.

Thanks a lot! FYI I am compiling with GHC 7.8.4.

Going through issues and house-keeping. This needs to be fixed and I'll do that soon I think. Real-life has been keeping me busy, my apologies for falling behind on this.

The org-mode documentation says this about timestamps:

A timestamp can appear anywhere in the headline or body of an Org tree entry.

Therefore orgmode-parse will not correctly handle timestamps that are inside of a headline or the body of a section.

@stephenjbarr I've merged a set of changes that address this shortcoming. Though it isn't perfect because right now it will only parse timestamps in the headline and timestamps that directly follow a headline in the headline's body. It will not pickup timestamps elsewhere in a headline's section body, it's late and that kind of grammar support will be more difficult I think, so this should fix your main pain point.

Sorry this came two years after you reported this 😞