diff options
Diffstat (limited to 'src/pkgcore/ebuild/eclass.py')
-rw-r--r-- | src/pkgcore/ebuild/eclass.py | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/src/pkgcore/ebuild/eclass.py b/src/pkgcore/ebuild/eclass.py index f5ae214f7..23e970f75 100644 --- a/src/pkgcore/ebuild/eclass.py +++ b/src/pkgcore/ebuild/eclass.py @@ -118,17 +118,23 @@ class ParseEclassDoc: return None # use literal blocks for all multiline text - data = ["::", "\n\n"] + data = ["\n\n"] + inside_code = False for i, line in enumerate(lines, 1): if self._code_tag.match(line): - continue + if not inside_code: + data.append("::") + data.append("\n\n") + inside_code = not inside_code elif mo := self._subsection_tag.match(line): header = _rst_header("~", mo.group("title")) data.extend(f"{x}\n" for x in header) - data.extend(["::", "\n\n"]) + data.extend(["\n\n"]) elif line: - data.append(f" {line}\n") + indent = " " if inside_code else "" + formatted_line = line + data.append(f"{indent}{formatted_line}\n") else: data.append("\n") @@ -572,7 +578,9 @@ class EclassDoc(AttrDict): rst = _header_only("=", self.name, leading=True) if self.blurb: - rst.extend(_header_only("-", self.blurb, leading=True)) + rst.extend(_rst_header("-", "Name")) + rst.append(f"``{self.name}`` -- {self.blurb}") + rst.append("") if self.description: rst.extend(_rst_header("-", "Description")) @@ -592,7 +600,7 @@ class EclassDoc(AttrDict): rst.append("") if self.raw_provides: rst.extend(_rst_header("-", "Transitively Provided Eclasses")) - rst.append(" ".join(self.raw_provides)) + rst.extend(f"- ``{provide}``" for provide in self.raw_provides) rst.append("") if self.example: rst.extend(_rst_header("-", "Example")) @@ -616,22 +624,25 @@ class EclassDoc(AttrDict): header = [func.name] if func.usage: header.append(func.usage) - rst.extend(_rst_header("~", " ".join(header))) + rst.append(f'**{" ".join(header)}**') if func.description: - rst.append(func.description) + rst.append( + " " + func.description.lstrip("\n").replace("\n", "\n ") + ) if func.returns: if func.description: - rst.append("") - rst.append(f"Return value: {func.returns}") + rst.append(" ") + rst.append(f" **Return value**: {func.returns}") rst.append("") if external_vars := [x for x in self.variables if not x.internal]: rst.extend(_header_only("-", "Variables")) for var in external_vars: vartype = "" + var_value = "" if default_value := getattr(var, "default_value", None): - vartype += f" ?= *{default_value}*" + var_value = f" ?= *{default_value}*" elif initial_value := getattr(var, "initial_value", None): - vartype += f" = *{initial_value}*" + var_value = f" = *{initial_value}*" if var.required: vartype += " (REQUIRED)" if var.pre_inherit: @@ -639,11 +650,12 @@ class EclassDoc(AttrDict): if var.user_variable: vartype += " (USER VARIABLE)" if var.output_variable: - vartype += " (OUTPUT VARIABLE)" - - rst.extend(_rst_header("~", var.name + vartype)) + vartype += " (GENERATED BY ECLASS)" + rst.append(f"**{var.name}**{var_value}{vartype}") if var.description: - rst.append(var.description) + rst.append( + " " + var.description.lstrip("\n").replace("\n", "\n ") + ) rst.append("") if external_func_vars := [x for x in self.function_variables if not x.internal]: rst.extend(_header_only("-", "Function Variables")) @@ -652,9 +664,11 @@ class EclassDoc(AttrDict): if var.required: vartype += " (REQUIRED)" - rst.extend(_rst_header("~", var.name + vartype)) + rst.append(f"**{var.name}**{vartype}") if var.description: - rst.append(var.description) + rst.append( + " " + var.description.lstrip("\n").replace("\n", "\n ") + ) rst.append("") if self.authors: @@ -711,6 +725,7 @@ class EclassDoc(AttrDict): super().__init__(*args, **kwargs) self._docinfo.update(man_data) + self.blurb = None # skip addition of blurb as man page header already holds it writer = manpage.Writer() writer.translator_class = Translator return self._to_docutils(writer) |