Improved image handling now captures CAPTIONS with test

This commit is contained in:
Oly 2018-11-28 08:50:32 +00:00
parent 1e0377836d
commit 700d01923c
4 changed files with 28 additions and 8 deletions

View File

@ -5,7 +5,8 @@ TYPE_SINGLE = 0
TYPE_BLOCK = 1
TYPE_ATTRIBUTE = 2
TokenStruct = namedtuple(
"TokenStruct", ["start", "end", "type", "start_pos", "end_pos", "count", "key"]
"TokenStruct",
["start", "end", "type", "start_pos", "end_pos", "count", "key"],
)
TokenStruct.__new__.__defaults__ = ("", False, TYPE_SINGLE, 2, None, False, "")
@ -36,7 +37,7 @@ t_TABLE_END = r"^(?!\s*\|).*$"
t_RESULTS_START = r"^\#\+RESULTS:"
t_CAPTIONS = r"^\#\+CAPTION:"
t_NAME = r"^\#\+NAME:"
#t_IMG = r"^\[\[(\w|\.|-|_|/)+\]\]$"
# t_IMG = r"^\[\[(\w|\.|-|_|/)+\]\]$"
t_IMG = r"^\[\["
t_IMG_END = r"\]\]"
t_RESULTS_END = r"^\:..*"
@ -56,8 +57,10 @@ TOKENS = {
tokens.EXAMPLE: TokenStruct(
start=t_EXAMPLE_BEGIN, end=t_EXAMPLE_END, type=TYPE_BLOCK, end_pos=-1
),
tokens.IMAGE: TokenStruct(start=t_IMG,end_pos=-2),
tokens.CAPTION: TokenStruct(start=t_CAPTIONS, type=TYPE_ATTRIBUTE, key="CAPTION"),
tokens.IMAGE: TokenStruct(start=t_IMG, end_pos=-2),
tokens.CAPTION: TokenStruct(
start=t_CAPTIONS, type=TYPE_ATTRIBUTE, key="CAPTION"
),
tokens.SOURCE: TokenStruct(start=t_SRC_BEGIN, end=t_SRC_END),
tokens.TABLE: TokenStruct(
start=t_TABLE_START, end=t_TABLE_END, start_pos=0

View File

@ -79,6 +79,9 @@ class Document:
yield item
continue
if item.token != tokens.LIST:
continue
if isinstance(item.value, list):
for token in item.value:
if token.token == tokens.IMAGE:
@ -106,13 +109,13 @@ def parsebody(text, rx):
match = re.search(rx, text)
if match:
return False, None
return rx, text + "\n"
def parseline(text, stream):
attrs = None
for key, token in TOKENS.items():
print(token)
match = re.search(token.start, text)
if not match:
continue

View File

@ -1 +1 @@
__version__=0.70
__version__=0.80

View File

@ -63,21 +63,35 @@ def test_image_with_caption():
"""#+CAPTION: Test Image
[[../../test.jpg]]"""
)
expected = [Token(tokens.IMAGE, ["../../test.jpg", ""])]
expected = [
Token(
tokens.IMAGE,
["../../test.jpg", ""],
attrs={"CAPTION": " Test Image"},
)
]
result = parse(text).doc
assert len(result) == 1
assert result[0].token == expected[0].token
assert result[0].value == expected[0].value
assert result[0].attrs == expected[0].attrs
text = StringIO(
"""#+CAPTION: Test Image
[[../../test.jpg][test]]"""
)
expected = [Token(tokens.IMAGE, ["../../test.jpg", "test"])]
expected = [
Token(
tokens.IMAGE,
["../../test.jpg", "test"],
attrs={"CAPTION": " Test Image"},
)
]
result = parse(text).doc
assert len(result) == 1
assert result[0].token == expected[0].token
assert result[0].value == expected[0].value
assert result[0].attrs == expected[0].attrs
def test_multiple_images():