-
Notifications
You must be signed in to change notification settings - Fork 0
/
myrules.py
51 lines (42 loc) · 1.59 KB
/
myrules.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Andrea Diamantini
# my own resT directives
from docutils import nodes
from docutils.parsers.rst import directives
CODE = """\
<iframe width="%(width)s"
height="%(height)s"
src="https://www.youtube.com/embed/%(yid)s"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
style="padding:10px 0px">
</iframe>
"""
def youtube(name, args, options, content, lineno,
contentOffset, blockText, state, stateMachine):
if len(content) == 0:
return
string_vars = {
'yid': content[0],
'width': 600,
'height': 485
}
extra_args = content[1:] # Because content[0] is ID
extra_args = [ea.strip().split("=") for ea in extra_args] # key=value
extra_args = [ea for ea in extra_args if len(ea) == 2] # drop bad lines
extra_args = dict(extra_args)
if 'width' in extra_args:
string_vars['width'] = extra_args.pop('width')
if 'height' in extra_args:
string_vars['height'] = extra_args.pop('height')
return [nodes.raw('', CODE % (string_vars), format='html')]
# Take a look here...
youtube.content = True
directives.register_directive('youtube', youtube)
# --------------------------------------------------------------------------------------------------------------
# to draw a stupid horizontal line
def line(name, args, options, content, lineno,
contentOffset, blockText, state, stateMachine):
return [nodes.raw('', "<hr>", format='html')]
line.content = False
directives.register_directive('line', line)