From c8aa85189a8736bb9723770b9409e6f9c00fc249 Mon Sep 17 00:00:00 2001 From: Ignacio Etcheverry Date: Wed, 27 Mar 2019 20:01:16 +0100 Subject: EditorHelp, makerst: Improve enum ref resolving and constant ref support Enum reference resolving will now search in the @GlobalScope if no class is specified and the enum cannot be resolved in the current class. Added support for constant references in EditorHelp, e.g.: [constant KEY_ENTER] or [constant Control.FOCUS_CLICK]. It supports enum constants (the enum name must not be included). --- doc/tools/makerst.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'doc/tools') diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py index 40dde48432..6d9cd7140a 100755 --- a/doc/tools/makerst.py +++ b/doc/tools/makerst.py @@ -757,14 +757,25 @@ def rstize_text(text, state): # type: (str, State) -> str elif cmd.startswith("constant"): found = False - if method_param in class_def.constants: - found = True - else: - for enum in class_def.enums.values(): - if method_param in enum.values: - found = True - break + # Search in the current class + search_class_defs = [class_def] + + if param.find('.') == -1: + # Also search in @GlobalScope as a last resort if no class was specified + search_class_defs.append(state.classes["@GlobalScope"]) + + for search_class_def in search_class_defs: + if method_param in search_class_def.constants: + class_param = search_class_def.name + found = True + + else: + for enum in search_class_def.enums.values(): + if method_param in enum.values: + class_param = search_class_def.name + found = True + break if not found: print_error("Unresolved constant '{}', file: {}".format(param, state.current_class), state) @@ -917,6 +928,9 @@ def make_enum(t, state): # type: (str, State) -> str if c in state.classes and e not in state.classes[c].enums: c = "@GlobalScope" + if not c in state.classes and c.startswith("_"): + c = c[1:] # Remove the underscore prefix + if c in state.classes and e in state.classes[c].enums: return ":ref:`{0}`".format(e, c) print_error("Unresolved enum '{}', file: {}".format(t, state.current_class), state) -- cgit v1.2.3 From d80bc5cbbab71fb9b8f25ec56a0baa5b4cee68a9 Mon Sep 17 00:00:00 2001 From: Ignacio Etcheverry Date: Fri, 29 Mar 2019 23:37:35 +0100 Subject: ClassRef: Replace [code]CurrentClass[/code] with [CurrentClass] Modified makerst to generate code tags for these to avoid hyperlinks to the same class. --- doc/tools/makerst.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'doc/tools') diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py index 6d9cd7140a..dc6d270c08 100755 --- a/doc/tools/makerst.py +++ b/doc/tools/makerst.py @@ -702,7 +702,11 @@ def rstize_text(text, state): # type: (str, State) -> str escape_post = False if tag_text in state.classes: - tag_text = make_type(tag_text, state) + if tag_text == state.current_class: + # We don't want references to the same class + tag_text = '``{}``'.format(tag_text) + else: + tag_text = make_type(tag_text, state) escape_post = True else: # command cmd = tag_text -- cgit v1.2.3