blob: 4d389a939ee8a7f53e997baf2d2dc796f03863e6 [file] [log] [blame]
from sphinx.locale import _
from docutils import nodes
from docutils.parsers.rst import Directive, directives
class card(nodes.General, nodes.Element):
pass
class CardDirective(Directive):
# defines the parameter the directive expects
# directives.unchanged means you get the raw value from RST
required_arguments = 0
optional_arguments = 0
final_argument_whitespace = True
option_spec = {'title': directives.unchanged,
'link': directives.unchanged,
'is_head': directives.unchanged}
has_content = True
add_index = False
def run(self):
# gives you access to the options of the directive
options = self.options
cid = nodes.make_id("card-{}".format(options['title']))
classes = ['mx-card']
if options.get('is_head', 'False').lower() == 'true':
classes.append('head-card')
container = nodes.container(ids=[cid], classes=classes)
container += nodes.inline('', options['title'], classes=['mx-card-title'])
link = options.get('link')
if link:
container += nodes.inline('', link, classes=['mx-card-link'])
para = nodes.paragraph(classes=['mx-card-text'])
self.state.nested_parse(self.content, self.content_offset, para)
container += para
# we return the result
return [container]