Add support for [url=] tag to makerst.py

Fixes #28904
This commit is contained in:
Stanislav 2019-05-16 16:11:58 +03:00
parent 4a25065089
commit 102f73b88a

View file

@ -683,10 +683,16 @@ def rstize_text(text, state): # type: (str, State) -> str
# Handle [tags] # Handle [tags]
inside_code = False inside_code = False
inside_url = False
url_has_name = False
url_link = ""
pos = 0 pos = 0
tag_depth = 0 tag_depth = 0
previous_pos = 0
while True: while True:
pos = text.find('[', pos) pos = text.find('[', pos)
if inside_url and (pos > previous_pos):
url_has_name = True
if pos == -1: if pos == -1:
break break
@ -795,12 +801,16 @@ def rstize_text(text, state): # type: (str, State) -> str
elif cmd.find('image=') == 0: elif cmd.find('image=') == 0:
tag_text = "" # '![](' + cmd[6:] + ')' tag_text = "" # '![](' + cmd[6:] + ')'
elif cmd.find('url=') == 0: elif cmd.find('url=') == 0:
tag_text = ':ref:`' + cmd[4:] + '<' + cmd[4:] + ">`" url_link = cmd[4:]
tag_text = ':ref:`'
tag_depth += 1 tag_depth += 1
url_has_name = False
inside_url = True
elif cmd == '/url': elif cmd == '/url':
tag_text = '' tag_text = ('' if url_has_name else url_link) + '<' + url_link + ">`"
tag_depth -= 1 tag_depth -= 1
escape_post = True escape_post = True
inside_url = False
elif cmd == 'center': elif cmd == 'center':
tag_depth += 1 tag_depth += 1
tag_text = '' tag_text = ''
@ -871,6 +881,7 @@ def rstize_text(text, state): # type: (str, State) -> str
text = pre_text + tag_text + post_text text = pre_text + tag_text + post_text
pos = len(pre_text) + len(tag_text) pos = len(pre_text) + len(tag_text)
previous_pos = pos
if tag_depth > 0: if tag_depth > 0:
print_error("Tag depth mismatch: too many/little open/close tags, file: {}".format(state.current_class), state) print_error("Tag depth mismatch: too many/little open/close tags, file: {}".format(state.current_class), state)