from docutils import nodes
from docutils.parsers.rst import directives, Directive
FORM1 = (
u'
\r\n'
u'
\r\n'
u''
)
class Gmap(Directive):
""" Google map directive """
required_arguments = 1
optional_arguments = 0
final_argument_whitespace = False
option_spec = {
'height': directives.length_or_unitless,
'width': directives.length_or_percentage_or_unitless,
'zoom': directives.nonnegative_int,
'latlng' : directives.unchanged,
'title': directives.unchanged,
}
def run(self):
map_id = self.arguments[0].strip()
val = {
'height': '240px',
'width' : '320px',
'zoom' : '15',
'latlng' : '60.996572,24.462588',
'title' : 'here!',
}
for options in ['height', 'width', 'zoom', 'latlng', 'title']:
if options in self.options:
val[options] = self.options[options]
try:
latitude, longitude = [x.strip() for x in val['latlng'].split(',')]
except ValueError:
raise self.error('Invalid latitude and/or longitude value.')
try:
html = FORM1.format(map_id, val['width'], val['height'],
latitude, longitude, val['zoom'], val['title'])
except IOError:
raise self.error('Could not convert to html. please contact to author.')
return [nodes.raw('', html, format='html')]
directives.register_directive('gmap', Gmap)