# coding: utf8 from docutils import nodes from docutils.parsers.rst import Directive, directives CODE = ("""""") class SoundCloud(Directive): """ Restructured text extension for inserting SoundCloud embedded music Usage: .. soundcloud:: :height: 400 :width: 600 """ has_content = True required_arguments = 1 option_spec = { 'width': directives.positive_int, 'height': directives.positive_int, } def run(self): """ Required by the Directive interface. Create docutils nodes """ self.check_content() options = { 'sid': self.arguments[0], 'width': 600, 'height': 160, } options.update(self.options) return [nodes.raw('', CODE.format(**options), format='html')] def check_content(self): """ Emit a deprecation warning if there is content """ if self.content: raise self.warning("This directive does not accept content. The " "'key=value' format for options is deprecated, " "use ':key: value' instead") directives.register_directive('soundcloud', SoundCloud)