Improved image handling now captures CAPTIONS with test
This commit is contained in:
parent
1e0377836d
commit
700d01923c
|
@ -5,7 +5,8 @@ TYPE_SINGLE = 0
|
||||||
TYPE_BLOCK = 1
|
TYPE_BLOCK = 1
|
||||||
TYPE_ATTRIBUTE = 2
|
TYPE_ATTRIBUTE = 2
|
||||||
TokenStruct = namedtuple(
|
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, "")
|
TokenStruct.__new__.__defaults__ = ("", False, TYPE_SINGLE, 2, None, False, "")
|
||||||
|
|
||||||
|
@ -57,7 +58,9 @@ TOKENS = {
|
||||||
start=t_EXAMPLE_BEGIN, end=t_EXAMPLE_END, type=TYPE_BLOCK, end_pos=-1
|
start=t_EXAMPLE_BEGIN, end=t_EXAMPLE_END, type=TYPE_BLOCK, end_pos=-1
|
||||||
),
|
),
|
||||||
tokens.IMAGE: TokenStruct(start=t_IMG, end_pos=-2),
|
tokens.IMAGE: TokenStruct(start=t_IMG, end_pos=-2),
|
||||||
tokens.CAPTION: TokenStruct(start=t_CAPTIONS, type=TYPE_ATTRIBUTE, key="CAPTION"),
|
tokens.CAPTION: TokenStruct(
|
||||||
|
start=t_CAPTIONS, type=TYPE_ATTRIBUTE, key="CAPTION"
|
||||||
|
),
|
||||||
tokens.SOURCE: TokenStruct(start=t_SRC_BEGIN, end=t_SRC_END),
|
tokens.SOURCE: TokenStruct(start=t_SRC_BEGIN, end=t_SRC_END),
|
||||||
tokens.TABLE: TokenStruct(
|
tokens.TABLE: TokenStruct(
|
||||||
start=t_TABLE_START, end=t_TABLE_END, start_pos=0
|
start=t_TABLE_START, end=t_TABLE_END, start_pos=0
|
||||||
|
|
|
@ -79,6 +79,9 @@ class Document:
|
||||||
yield item
|
yield item
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if item.token != tokens.LIST:
|
||||||
|
continue
|
||||||
|
|
||||||
if isinstance(item.value, list):
|
if isinstance(item.value, list):
|
||||||
for token in item.value:
|
for token in item.value:
|
||||||
if token.token == tokens.IMAGE:
|
if token.token == tokens.IMAGE:
|
||||||
|
@ -106,13 +109,13 @@ def parsebody(text, rx):
|
||||||
match = re.search(rx, text)
|
match = re.search(rx, text)
|
||||||
if match:
|
if match:
|
||||||
return False, None
|
return False, None
|
||||||
|
|
||||||
return rx, text + "\n"
|
return rx, text + "\n"
|
||||||
|
|
||||||
|
|
||||||
def parseline(text, stream):
|
def parseline(text, stream):
|
||||||
attrs = None
|
attrs = None
|
||||||
for key, token in TOKENS.items():
|
for key, token in TOKENS.items():
|
||||||
|
print(token)
|
||||||
match = re.search(token.start, text)
|
match = re.search(token.start, text)
|
||||||
if not match:
|
if not match:
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
__version__=0.70
|
__version__=0.80
|
||||||
|
|
|
@ -63,21 +63,35 @@ def test_image_with_caption():
|
||||||
"""#+CAPTION: Test Image
|
"""#+CAPTION: Test Image
|
||||||
[[../../test.jpg]]"""
|
[[../../test.jpg]]"""
|
||||||
)
|
)
|
||||||
expected = [Token(tokens.IMAGE, ["../../test.jpg", ""])]
|
expected = [
|
||||||
|
Token(
|
||||||
|
tokens.IMAGE,
|
||||||
|
["../../test.jpg", ""],
|
||||||
|
attrs={"CAPTION": " Test Image"},
|
||||||
|
)
|
||||||
|
]
|
||||||
result = parse(text).doc
|
result = parse(text).doc
|
||||||
assert len(result) == 1
|
assert len(result) == 1
|
||||||
assert result[0].token == expected[0].token
|
assert result[0].token == expected[0].token
|
||||||
assert result[0].value == expected[0].value
|
assert result[0].value == expected[0].value
|
||||||
|
assert result[0].attrs == expected[0].attrs
|
||||||
|
|
||||||
text = StringIO(
|
text = StringIO(
|
||||||
"""#+CAPTION: Test Image
|
"""#+CAPTION: Test Image
|
||||||
[[../../test.jpg][test]]"""
|
[[../../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
|
result = parse(text).doc
|
||||||
assert len(result) == 1
|
assert len(result) == 1
|
||||||
assert result[0].token == expected[0].token
|
assert result[0].token == expected[0].token
|
||||||
assert result[0].value == expected[0].value
|
assert result[0].value == expected[0].value
|
||||||
|
assert result[0].attrs == expected[0].attrs
|
||||||
|
|
||||||
|
|
||||||
def test_multiple_images():
|
def test_multiple_images():
|
||||||
|
|
Loading…
Reference in New Issue