fix : replace correctly every links of article instead of just the first
This commit is contained in:
parent
ac3d51ea36
commit
6e6d3f53ca
@ -37,9 +37,7 @@ from spip2md.regexmaps import (
|
|||||||
DOCUMENT_LINK,
|
DOCUMENT_LINK,
|
||||||
HTMLTAGS,
|
HTMLTAGS,
|
||||||
IMAGE_LINK,
|
IMAGE_LINK,
|
||||||
IMAGE_REPL,
|
|
||||||
ISO_UTF,
|
ISO_UTF,
|
||||||
LINK_REPL,
|
|
||||||
MULTILANG_BLOCK,
|
MULTILANG_BLOCK,
|
||||||
SECTION_LINK,
|
SECTION_LINK,
|
||||||
SPECIAL_OUTPUT,
|
SPECIAL_OUTPUT,
|
||||||
@ -406,35 +404,32 @@ class SpipRedactional(SpipWritable):
|
|||||||
return (
|
return (
|
||||||
self._link_types[self._type_cursor][self._link_cursor],
|
self._link_types[self._type_cursor][self._link_cursor],
|
||||||
self._obj_getters[self._type_cursor],
|
self._obj_getters[self._type_cursor],
|
||||||
IMAGE_REPL if self._type_cursor == 0 else LINK_REPL,
|
"!" if self._type_cursor == 0 else "",
|
||||||
)
|
)
|
||||||
|
|
||||||
for link, getobj, repl in LinkMappings():
|
for link, getobj, prepend in LinkMappings():
|
||||||
# LOG.debug(f"Looking for {link} in {text}")
|
# LOG.debug(f"Looking for {link} in {text}")
|
||||||
for m in link.finditer(text):
|
for m in link.finditer(text):
|
||||||
LOG.debug(f"Found internal link {m.group()} in {self._url_title}")
|
LOG.debug(f"Found internal link {m.group()} in {self._url_title}")
|
||||||
try:
|
try:
|
||||||
LOG.debug(f"Searching for object of id {m.group(2)} with {getobj}")
|
LOG.debug(
|
||||||
|
f"Searching for object of id {m.group(2)} with "
|
||||||
|
+ getobj.__name__
|
||||||
|
)
|
||||||
o: "Document | Article | Section" = getobj(int(m.group(2)))
|
o: "Document | Article | Section" = getobj(int(m.group(2)))
|
||||||
# TODO get full relative path for sections and articles
|
# TODO get full relative path for sections and articles
|
||||||
# TODO rewrite links markup (bold/italic) after stripping
|
# TODO rewrite links markup (bold/italic) after stripping
|
||||||
if len(m.group(1)) > 0:
|
if len(m.group(1)) > 0:
|
||||||
try:
|
repl = f"{prepend}[{m.group(1)}]({o.dest_filename()})"
|
||||||
repl = repl.format(
|
|
||||||
m.group(1).strip("{}"), o.dest_filename()
|
|
||||||
)
|
|
||||||
except KeyError as err:
|
|
||||||
print(repl, m.group(1), o.dest_filename())
|
|
||||||
raise err
|
|
||||||
else:
|
else:
|
||||||
repl = repl.format(o._storage_title, o.dest_filename())
|
repl = f"{prepend}[{o._storage_title}]({o.dest_filename()})"
|
||||||
LOG.debug(
|
LOG.debug(
|
||||||
f"Translate link {m.group()} to {repl} in {self._url_title}"
|
f"Translate link {m.group()} to {repl} in {self._url_title}"
|
||||||
)
|
)
|
||||||
text = text.replace(m.group(), repl)
|
text = text.replace(m.group(), repl)
|
||||||
except DoesNotExist:
|
except DoesNotExist:
|
||||||
LOG.warn(f"No object for link {m.group()} in {self._url_title}")
|
LOG.warn(f"No object for link {m.group()} in {self._url_title}")
|
||||||
text = text.replace(m.group(), repl.format("", "NOT FOUND"), 1)
|
text = text.replace(m.group(), prepend + "[](NOT FOUND)", 1)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
# Get this object url, or none if it’s the same as directory
|
# Get this object url, or none if it’s the same as directory
|
||||||
|
@ -159,8 +159,8 @@ SECTION_LINK = (
|
|||||||
compile(r"\[(.*?)\]\((?:rub|rubrique)([0-9]+)(?:\|(.*?))?\)", S | I),
|
compile(r"\[(.*?)\]\((?:rub|rubrique)([0-9]+)(?:\|(.*?))?\)", S | I),
|
||||||
)
|
)
|
||||||
|
|
||||||
LINK_REPL = r"[{}]({})" # Name and path can be further replaced with .format()
|
# LINK_REPL = r"[{}]({})" # Name and path can be further replaced with .format()
|
||||||
IMAGE_REPL = r"![{}]({})" # Name and path can be further replaced with .format()
|
# IMAGE_REPL = r"![{}]({})" # Name and path can be further replaced with .format()
|
||||||
|
|
||||||
|
|
||||||
# Multi language block, to be further processed per lang
|
# Multi language block, to be further processed per lang
|
||||||
|
Loading…
Reference in New Issue
Block a user