From 9a14f4e1864f49a2b8780e403f966fe7e7e05f1f Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Tue, 19 May 2015 14:53:18 -0400 Subject: Initial commit --- plugins/__init__.py | 1 + plugins/asciidoc/README.md | 6 +++ plugins/asciidoc/asciidoc.plugin | 9 ++++ plugins/asciidoc/asciidoc.py | 76 +++++++++++++++++++++++++++++++++ plugins/asciidoc/conf.py.sample | 11 +++++ plugins/asciidoc/requirements-nonpy.txt | 1 + 6 files changed, 104 insertions(+) create mode 100644 plugins/__init__.py create mode 100644 plugins/asciidoc/README.md create mode 100644 plugins/asciidoc/asciidoc.plugin create mode 100644 plugins/asciidoc/asciidoc.py create mode 100644 plugins/asciidoc/conf.py.sample create mode 100644 plugins/asciidoc/requirements-nonpy.txt (limited to 'plugins') diff --git a/plugins/__init__.py b/plugins/__init__.py new file mode 100644 index 0000000..fd7e25d --- /dev/null +++ b/plugins/__init__.py @@ -0,0 +1 @@ +# Plugin modules go here. \ No newline at end of file diff --git a/plugins/asciidoc/README.md b/plugins/asciidoc/README.md new file mode 100644 index 0000000..44c1cb2 --- /dev/null +++ b/plugins/asciidoc/README.md @@ -0,0 +1,6 @@ +Compiler plugin to support the AsciiDoc markup. + +[More information about AsciiDoc](http://www.methods.co.nz/asciidoc/) + + + diff --git a/plugins/asciidoc/asciidoc.plugin b/plugins/asciidoc/asciidoc.plugin new file mode 100644 index 0000000..dfc4c9f --- /dev/null +++ b/plugins/asciidoc/asciidoc.plugin @@ -0,0 +1,9 @@ +[Core] +Name = asciidoc +Module = asciidoc + +[Documentation] +Author = Roberto Alsina +Version = 0.3 +Website = http://plugins.getnikola.com/#asciidoc +Description = Compile ASCIIDoc into HTML diff --git a/plugins/asciidoc/asciidoc.py b/plugins/asciidoc/asciidoc.py new file mode 100644 index 0000000..1a35c00 --- /dev/null +++ b/plugins/asciidoc/asciidoc.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- + +# Copyright © 2012-2014 Roberto Alsina 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. + +"""Implementation of compile_html based on asciidoc. + +You will need, of course, to install asciidoc + +""" + +import codecs +import os +import subprocess + +from nikola.plugin_categories import PageCompiler +from nikola.utils import makedirs, req_missing, write_metadata + +try: + from collections import OrderedDict +except ImportError: + OrderedDict = dict # NOQA + + +class CompileAsciiDoc(PageCompiler): + """Compile asciidoc into HTML.""" + + name = "asciidoc" + demote_headers = True + + def compile_html(self, source, dest, is_two_file=True): + makedirs(os.path.dirname(dest)) + binary = self.site.config.get('ASCIIDOC_BINARY', 'asciidoc') + try: + subprocess.check_call((binary, '-b', 'html5', '-s', '-o', dest, source)) + except OSError as e: + if e.strreror == 'No such file or directory': + req_missing(['asciidoc'], 'build this site (compile with asciidoc)', python=False) + + def create_post(self, path, **kw): + content = kw.pop('content', 'Write your post here.') + one_file = kw.pop('onefile', False) # NOQA + is_page = kw.pop('is_page', False) # NOQA + metadata = OrderedDict() + metadata.update(self.default_metadata) + metadata.update(kw) + makedirs(os.path.dirname(path)) + if not content.endswith('\n'): + content += '\n' + with codecs.open(path, "wb+", "utf8") as fd: + if one_file: + fd.write("////\n") + fd.write(write_metadata(metadata)) + fd.write("////\n") + fd.write(content) diff --git a/plugins/asciidoc/conf.py.sample b/plugins/asciidoc/conf.py.sample new file mode 100644 index 0000000..1dd5d3a --- /dev/null +++ b/plugins/asciidoc/conf.py.sample @@ -0,0 +1,11 @@ +# Add the asciidoc compiler to your COMPILERS dict. +COMPILERS["asciidoc"] = ('.asc',) + +# Add asciidoc files to your POSTS, PAGES +POSTS = POSTS + (("posts/*.asc", "posts", "post.tmpl"),) +PAGES = PAGES + (("stories/*.asc", "posts", "post.tmpl"),) + +# You can choose what command to use for processing. +# For example, you can replace asciidoc with asciidoctor +# Or use the full path to the program. +# ASCIIDOC_BINARY = "asciidoc" diff --git a/plugins/asciidoc/requirements-nonpy.txt b/plugins/asciidoc/requirements-nonpy.txt new file mode 100644 index 0000000..288ae9d --- /dev/null +++ b/plugins/asciidoc/requirements-nonpy.txt @@ -0,0 +1 @@ +AsciiDoc::http://www.methods.co.nz/asciidoc/ -- cgit v1.2.3