Fix: variable in doc generator (#14180)

### What problem does this PR solve?

Fix: variable in doc generator

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
Magicbook1108
2026-04-20 14:19:42 +08:00
committed by GitHub
parent 19eedeec61
commit d053317c4d
2 changed files with 132 additions and 117 deletions

View File

@@ -146,35 +146,32 @@ class DocGenerator(Message, ABC):
os.remove(file_path)
def _resolve_content(self, kwargs: dict) -> str:
content = self._param.content or ""
content = self._param.content or kwargs.get("content", "") or ""
logging.info("Starting document generation, content length: %s chars", len(content))
if content and self._canvas.is_reff(content.strip()):
matches = re.findall(self.variable_ref_patt, content, flags=re.DOTALL)
for match in matches:
if content:
def _replace_variable(match_obj: re.Match[str]) -> str:
match = match_obj.group(1)
try:
var_value = self._canvas.get_variable_value(match)
if var_value is None:
continue
return ""
if isinstance(var_value, partial):
resolved_content = ""
for chunk in var_value():
resolved_content += chunk
content = content.replace("{" + match + "}", resolved_content)
else:
content = content.replace("{" + match + "}", str(var_value))
return resolved_content
return self._stringify_message_value(var_value, fallback_to_str=True)
except Exception as e:
logging.warning("Error resolving variable %s: %s", match, str(e))
content = content.replace("{" + match + "}", f"[ERROR: {str(e)}]")
return f"[ERROR: {str(e)}]"
if content:
try:
content, _ = self.get_kwargs(content, kwargs)
except Exception as e:
logging.warning("Error processing content with get_kwargs: %s", str(e))
if not content:
content = kwargs.get("content", "")
content = re.sub(
self.variable_ref_patt,
_replace_variable,
content,
flags=re.DOTALL,
)
return content