blob: 1d6171ab482e402415dbaee839fc3762bf67e692 [file] [edit]
from docutils.parsers.rst import directives
from docutils import nodes
from sphinx import addnodes
from sphinx.application import Sphinx
from sphinx.directives import ObjectDescription
from sphinx.util.docfields import Field, GroupedField
import llvm_slug
# Example:
# ```{lldbsetting} dwim-print-verbosity
# :type: "enum"
#
# The verbosity level used by dwim-print.
#
# :enum none: Use no verbosity when running dwim-print.
# :enum expression: Use partial verbosity when running dwim-print - display a message when `expression` evaluation is used.
# :enum full: Use full verbosity when running dwim-print.
# :default: none
# ```
class LLDBSetting(ObjectDescription):
option_spec = {
"type": directives.unchanged,
}
doc_field_types = [
Field("default", label="Default", has_arg=False, names=("default",)),
GroupedField("enum", label="Enumerations", names=("enum",)),
]
def handle_signature(self, sig: str, signode: addnodes.desc_signature):
typ = self.options.get("type", None)
desc = addnodes.desc_name(text=sig)
desc += nodes.inline(
"",
typ,
classes=[
"lldb-setting-type",
f"lldb-setting-type-{llvm_slug.make_slug(typ)}",
],
)
signode["ids"].append(sig)
signode += desc
def setup(app: Sphinx):
app.add_directive("lldbsetting", LLDBSetting)
return {
"version": "0.1",
"parallel_read_safe": True,
"parallel_write_safe": True,
}