|
|
|
@ -11,19 +11,37 @@ import sphinx.directives
|
|
|
|
|
|
|
|
|
|
import dfhack.util
|
|
|
|
|
|
|
|
|
|
class DFHackToolDirective(sphinx.directives.ObjectDescription):
|
|
|
|
|
class DFHackToolDirectiveBase(sphinx.directives.ObjectDescription):
|
|
|
|
|
has_content = False
|
|
|
|
|
required_arguments = 0
|
|
|
|
|
option_spec = {
|
|
|
|
|
'tags': dfhack.util.directive_arg_str_list,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
|
def get_name_or_docname(self):
|
|
|
|
|
if self.arguments:
|
|
|
|
|
tool_name = self.arguments[0]
|
|
|
|
|
return self.arguments[0]
|
|
|
|
|
else:
|
|
|
|
|
tool_name = self.env.docname.split('/')[-1]
|
|
|
|
|
return self.env.docname.split('/')[-1]
|
|
|
|
|
|
|
|
|
|
def make_labeled_paragraph(self, label, content):
|
|
|
|
|
return nodes.paragraph('', '', *[
|
|
|
|
|
nodes.strong('', '{}: '.format(label)),
|
|
|
|
|
nodes.inline('', content),
|
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
def make_nodes(self):
|
|
|
|
|
raise NotImplementedError
|
|
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
|
return [
|
|
|
|
|
nodes.admonition('', *self.make_nodes(), classes=['dfhack-tool-summary']),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DFHackToolDirective(DFHackToolDirectiveBase):
|
|
|
|
|
option_spec = {
|
|
|
|
|
'tags': dfhack.util.directive_arg_str_list,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def make_nodes(self):
|
|
|
|
|
tag_nodes = [nodes.strong(text='Tags: ')]
|
|
|
|
|
for tag in self.options.get('tags', []):
|
|
|
|
|
tag_nodes += [
|
|
|
|
@ -39,18 +57,21 @@ class DFHackToolDirective(sphinx.directives.ObjectDescription):
|
|
|
|
|
tag_nodes.pop()
|
|
|
|
|
|
|
|
|
|
return [
|
|
|
|
|
nodes.admonition('', *[
|
|
|
|
|
nodes.paragraph('', '', *[
|
|
|
|
|
nodes.strong('', 'Tool: '),
|
|
|
|
|
nodes.inline('', tool_name),
|
|
|
|
|
]),
|
|
|
|
|
nodes.paragraph('', '', *tag_nodes),
|
|
|
|
|
], classes=['dfhack-tool-summary']),
|
|
|
|
|
self.make_labeled_paragraph('Tool', self.get_name_or_docname()),
|
|
|
|
|
nodes.paragraph('', '', *tag_nodes),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DFHackCommandDirective(DFHackToolDirectiveBase):
|
|
|
|
|
def make_nodes(self):
|
|
|
|
|
return [
|
|
|
|
|
self.make_labeled_paragraph('Command', self.get_name_or_docname()),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def register(app):
|
|
|
|
|
app.add_directive('dfhack-tool', DFHackToolDirective)
|
|
|
|
|
app.add_directive('dfhack-command', DFHackCommandDirective)
|
|
|
|
|
|
|
|
|
|
def setup(app):
|
|
|
|
|
app.connect('builder-inited', register)
|
|
|
|
|