Support for plain text nodes

This commit is contained in:
Oliver Marks 2018-10-16 22:03:31 +01:00
parent 61715c2b28
commit 9a628fd957
3 changed files with 20 additions and 3 deletions

View File

@ -1,4 +1,6 @@
t_META = r"^[#]\+(TITLE|AUTHOR|EMAIL|DESCRIPTION|KEYWORDS)\:"
METADATA = ['TITLE', 'AUTHOR', 'EMAIL', 'DESCRIPTION', 'KEYWORDS']
t_META = r"^[#]\+(" + '|'.join(METADATA) +")\:"
t_COMMENT_BEGIN = r"^\#\+BEGIN_COMMENT" t_COMMENT_BEGIN = r"^\#\+BEGIN_COMMENT"
t_COMMENT_END = r"^\#\+END_COMMENT" t_COMMENT_END = r"^\#\+END_COMMENT"

View File

@ -1,5 +1,5 @@
import re import re
from eorg.const import TOKENS from eorg.const import TOKENS, METADATA
class Token: class Token:
@ -38,6 +38,12 @@ class Document:
for item in self.doc: for item in self.doc:
yield item yield item
def body(self):
for item in self.doc:
if item.token in METADATA:
continue
yield item
def __len__(self): def __len__(self):
return len(self.doc) return len(self.doc)
@ -69,7 +75,7 @@ def parseline(text):
Token(token=match.group(0)[s:e], value=text[match.end() :]), Token(token=match.group(0)[s:e], value=text[match.end() :]),
) )
return block, Token(token=key, value=text[match.end() :]) return block, Token(token=key, value=text[match.end() :])
return None return False, Token(token='TEXT', value=text)
def parse(stream): def parse(stream):

9
examples/raw/output.py Normal file
View File

@ -0,0 +1,9 @@
import os
import pytest
from eorg.parser import parse
with open(os.path.abspath("../../tests/fixtures/test.org"), "r") as fp:
doc = parse(fp)
for item in doc.body():
print(item)