Created
April 4, 2017 16:07
-
-
Save hishnash/acc0a73850f922547fb9ec02c4c8c12b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class TabSection(Directive): | |
has_content = True # this directive can have children | |
required_arguments = 1 # has 1 arg | |
optional_arguments = 0 | |
# add a kwarg `keyworks` these are used for search | |
option_spec = {'keywords': directives.unchanged} | |
# we need a new line after the args before the child content | |
final_argument_whitespace = True | |
def run(self): | |
""" | |
This function is called when sphinx builds an AST out of the source files. | |
Should return a list of nodes for the AST that will be appended in this location. | |
""" | |
keywords = self.options.get('keywords', None) | |
if keywords is not None and len(keywords) > 0: | |
keywords = keywords.split(' ') | |
else: | |
keywords = [] | |
# we need to create some things inside this AST | |
node = Element() | |
node.document = self.state.document | |
# build the AST for the child content | |
nested_parse_with_titles(self.state, self.content, node) | |
# get the tab's title | |
title = self.arguments[0] | |
# use the node we set up | |
# (this is another class not shown here that subclasses Frame) | |
frame = TabFrameNode( | |
title=title, | |
ids=[title.replace(' ', '_')], | |
names=[title], | |
index_keywords=keywords | |
) | |
frame += nodes.title(text=title) | |
for child in node: | |
if isinstance(child, TabNode): | |
frame.append(child) | |
return [frame] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment