diff options
| author | 2021-02-03 19:17:50 -0500 | |
|---|---|---|
| committer | 2021-02-03 19:17:50 -0500 | |
| commit | 475d074fd74425efbe783fad08f97f2df0c4909f (patch) | |
| tree | 2acdae53999b3c74b716efa4edb5b40311fa356a /nikola/plugins/shortcode/thumbnail.py | |
| parent | cd502d52787f666fff3254d7d7e7578930c813c2 (diff) | |
| parent | 3a0d66f07b112b6d2bdc2b57bbf717a89a351ce6 (diff) | |
Update upstream source from tag 'upstream/8.1.2'
Update to upstream version '8.1.2'
with Debian dir e5e966a9e6010ef70618dc9a61558fa4db35aceb
Diffstat (limited to 'nikola/plugins/shortcode/thumbnail.py')
| -rw-r--r-- | nikola/plugins/shortcode/thumbnail.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/nikola/plugins/shortcode/thumbnail.py b/nikola/plugins/shortcode/thumbnail.py new file mode 100644 index 0000000..feb731b --- /dev/null +++ b/nikola/plugins/shortcode/thumbnail.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- + +# Copyright © 2017-2020 Roberto Alsina, Chris Warrick and others. + +# Permission is hereby granted, free of charge, to any +# person obtaining a copy of this software and associated +# documentation files (the "Software"), to deal in the +# Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the +# Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice +# shall be included in all copies or substantial portions of +# the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +# OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +"""Thumbnail shortcode (equivalent to reST’s thumbnail directive).""" + +import os.path + +from nikola.plugin_categories import ShortcodePlugin + + +class ThumbnailShortcode(ShortcodePlugin): + """Plugin for thumbnail directive.""" + + name = "thumbnail" + + def handler(self, uri, alt=None, align=None, linktitle=None, title=None, imgclass=None, figclass=None, site=None, data=None, lang=None, post=None): + """Create HTML for thumbnail.""" + if uri.endswith('.svg'): + # the ? at the end makes docutil output an <img> instead of an object for the svg, which lightboxes may require + src = '.thumbnail'.join(os.path.splitext(uri)) + '?' + else: + src = '.thumbnail'.join(os.path.splitext(uri)) + + if imgclass is None: + imgclass = '' + if figclass is None: + figclass = '' + + if align and data: + figclass += ' align-{0}'.format(align) + elif align: + imgclass += ' align-{0}'.format(align) + + output = '<a href="{0}" class="image-reference"'.format(uri) + if linktitle: + output += ' title="{0}"'.format(linktitle) + output += '><img src="{0}"'.format(src) + for item, name in ((alt, 'alt'), (title, 'title'), (imgclass, 'class')): + if item: + output += ' {0}="{1}"'.format(name, item) + output += '></a>' + + if data: + output = '<div class="figure {0}">{1}{2}</div>'.format(figclass, output, data) + + return output, [] |
