makerst: Escape default values using reST markup

Otherwise the docs would complain about values like "godot_"
which reST tries to interpret as an identifier.
This commit is contained in:
Rémi Verschelde 2019-11-29 14:21:16 +01:00
parent fa0e682027
commit 55676b16da
2 changed files with 37 additions and 33 deletions

View file

@ -148,6 +148,8 @@ class State:
setter = property.get("setter") or None # Use or None so '' gets turned into None. setter = property.get("setter") or None # Use or None so '' gets turned into None.
getter = property.get("getter") or None getter = property.get("getter") or None
default_value = property.get("default") or None default_value = property.get("default") or None
if default_value is not None:
default_value = escape_rst(default_value)
overridden = property.get("override") or False overridden = property.get("override") or False
property_def = PropertyDef(property_name, type_name, setter, getter, property.text, default_value, overridden) property_def = PropertyDef(property_name, type_name, setter, getter, property.text, default_value, overridden)
@ -622,6 +624,40 @@ def make_class_list(class_list, columns): # type: (List[str], int) -> None
f.close() f.close()
def escape_rst(text, until_pos=-1): # type: (str) -> str
# Escape \ character, otherwise it ends up as an escape character in rst
pos = 0
while True:
pos = text.find('\\', pos, until_pos)
if pos == -1:
break
text = text[:pos] + "\\\\" + text[pos + 1:]
pos += 2
# Escape * character to avoid interpreting it as emphasis
pos = 0
while True:
pos = text.find('*', pos, until_pos)
if pos == -1:
break
text = text[:pos] + "\*" + text[pos + 1:]
pos += 2
# Escape _ character at the end of a word to avoid interpreting it as an inline hyperlink
pos = 0
while True:
pos = text.find('_', pos, until_pos)
if pos == -1:
break
if not text[pos + 1].isalnum(): # don't escape within a snake_case word
text = text[:pos] + "\_" + text[pos + 1:]
pos += 2
else:
pos += 1
return text
def rstize_text(text, state): # type: (str, State) -> str def rstize_text(text, state): # type: (str, State) -> str
# Linebreak + tabs in the XML should become two line breaks unless in a "codeblock" # Linebreak + tabs in the XML should become two line breaks unless in a "codeblock"
pos = 0 pos = 0
@ -677,36 +713,7 @@ def rstize_text(text, state): # type: (str, State) -> str
pos += 2 pos += 2
next_brac_pos = text.find('[') next_brac_pos = text.find('[')
text = escape_rst(text, next_brac_pos)
# Escape \ character, otherwise it ends up as an escape character in rst
pos = 0
while True:
pos = text.find('\\', pos, next_brac_pos)
if pos == -1:
break
text = text[:pos] + "\\\\" + text[pos + 1:]
pos += 2
# Escape * character to avoid interpreting it as emphasis
pos = 0
while True:
pos = text.find('*', pos, next_brac_pos)
if pos == -1:
break
text = text[:pos] + "\*" + text[pos + 1:]
pos += 2
# Escape _ character at the end of a word to avoid interpreting it as an inline hyperlink
pos = 0
while True:
pos = text.find('_', pos, next_brac_pos)
if pos == -1:
break
if not text[pos + 1].isalnum(): # don't escape within a snake_case word
text = text[:pos] + "\_" + text[pos + 1:]
pos += 2
else:
pos += 1
# Handle [tags] # Handle [tags]
inside_code = False inside_code = False

View file

@ -213,9 +213,6 @@
<member name="mesh_library" type="MeshLibrary" setter="set_mesh_library" getter="get_mesh_library"> <member name="mesh_library" type="MeshLibrary" setter="set_mesh_library" getter="get_mesh_library">
The assigned [MeshLibrary]. The assigned [MeshLibrary].
</member> </member>
<member name="theme" type="MeshLibrary" setter="set_theme" getter="get_theme">
Deprecated, use [member mesh_library] instead.
</member>
</members> </members>
<signals> <signals>
<signal name="cell_size_changed"> <signal name="cell_size_changed">